You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

426 lines
14 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Sql;
  6. using System.Data.SqlClient;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Forms;
  12. using ManagementSystem.Utility;
  13. namespace ManagementSystem
  14. {
  15. public partial class CleanHistory : Form
  16. {
  17. //程式內共用物件
  18. string strFrmStatus = ""; //表單狀態
  19. string strActiveUserID = ""; //取得登入作用的使用者帳號
  20. SqlConnection sqlConn = UtilityClass.GetConn(MainForm.strAccountingBookID);
  21. SqlCommand sqlCmd = new SqlCommand();
  22. string strPKey = ""; //程式內的Key值
  23. string strKey = ""; //程式內加密的Key值
  24. public CleanHistory()
  25. {
  26. InitializeComponent();
  27. }
  28. #region 自定義程式
  29. private string CheckForm() //確認畫面必填欄位
  30. {
  31. string strResult = "";
  32. if (!cbAskLeave.Checked && !cbAttendance.Checked && !cbDayWork.Checked && !cbMeeting.Checked)
  33. strResult = "至少要選取一項清除任務!";
  34. return strResult;
  35. }
  36. private void SetupStatus() //畫面載入設定
  37. {
  38. try
  39. {
  40. strActiveUserID = MainForm.strActiveUserID;
  41. strKey = MainForm.strKey;
  42. if (MainForm.strKey == "")
  43. {
  44. //設定Toolbar初始狀態
  45. tsbSave.Enabled = false;
  46. tsbDelete.Enabled = true;
  47. }
  48. //設定畫面初始狀態
  49. CleanForm();
  50. CleanToolbar();
  51. LockForm();
  52. }
  53. catch (Exception ex)
  54. {
  55. ErrorHandler.WriteErrorLog("HRDataCorrect.cs", ex);
  56. }
  57. }
  58. private void LockForm() //限制唯讀物件
  59. {
  60. }
  61. private void UnLockForm() //解除限制唯讀物件
  62. {
  63. }
  64. private void StatusChange(string strStatus) //變更主畫面狀態
  65. {
  66. switch (strStatus.ToUpper())
  67. {
  68. case "NONE":
  69. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "";
  70. strFrmStatus = "";
  71. CleanForm();
  72. CleanToolbar();
  73. break;
  74. case "SEARCH":
  75. tsbSearch.Visible = false;
  76. tsbEdit.Enabled = false;
  77. tsbDelete.Enabled = false;
  78. tsbOK.Visible = true;
  79. tsbCancel.Visible = true;
  80. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "搜尋";
  81. strFrmStatus = "SEARCH";
  82. break;
  83. case "ADD":
  84. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "新增";
  85. strFrmStatus = "ADD";
  86. break;
  87. case "MODIFY":
  88. tsbSearch.Enabled = false;
  89. tsbEdit.Visible = false;
  90. tsbSave.Visible = true;
  91. tsbDelete.Enabled = false;
  92. tsbCancel.Visible = true;
  93. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "修改";
  94. strFrmStatus = "MODIFY";
  95. break;
  96. case "DEL":
  97. tsbDelete.Visible = false;
  98. tsbSearch.Enabled = false;
  99. tsbEdit.Enabled = false;
  100. ((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "刪除";
  101. strFrmStatus = "DEL";
  102. break;
  103. }
  104. }
  105. private void CleanToolbar() //清除工具列
  106. {
  107. //設定Toolbar狀態
  108. tsbSearch.Enabled = false;
  109. tsbSearch.Visible = false;
  110. tsbEdit.Enabled = false;
  111. tsbEdit.Visible = false;
  112. tsbDelete.Enabled = true;
  113. tsbDelete.Visible = true;
  114. tsbSave.Visible = false;
  115. tsbOK.Visible = false;
  116. tsbCancel.Visible = false;
  117. }
  118. private void CleanForm() //清除畫面
  119. {
  120. dpCleanBefor.Value = DateTime.Now.AddYears(-5);
  121. cbAskLeave.Checked = false;
  122. cbAttendance.Checked = false;
  123. cbDayWork.Checked = false;
  124. cbMeeting.Checked = false;
  125. GetCurrentData();
  126. Application.DoEvents();
  127. }
  128. private void AddEven() //新增事件
  129. {
  130. try
  131. {
  132. //本功能無新增功能
  133. }
  134. catch (Exception ex)
  135. {
  136. throw ex;
  137. }
  138. }
  139. private void SaveEven() //儲存事件
  140. {
  141. try
  142. {
  143. }
  144. catch (Exception ex)
  145. {
  146. MessageBox.Show("儲存失敗","提示");
  147. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  148. }
  149. }
  150. private void DelEven() //刪除事件
  151. {
  152. //歷史工作彙報
  153. StringBuilder sbSQL = new StringBuilder();
  154. try
  155. {
  156. string strResult = CheckForm();
  157. if (strResult == "")
  158. {
  159. //歷史工作彙報
  160. if (cbDayWork.Checked)
  161. {
  162. sbSQL.AppendLine("Delete OTB_MNG_DayWork Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  163. }
  164. //歷史打卡資料
  165. if (cbAttendance.Checked)
  166. {
  167. sbSQL.AppendLine("Delete OTB_HR_CheckAttendance Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  168. }
  169. //歷史請假記錄
  170. if (cbAskLeave.Checked)
  171. {
  172. sbSQL.AppendLine("Delete OTB_HR_AskLeave Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  173. sbSQL.AppendLine("Delete OTB_HR_CheckAskLeave Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  174. }
  175. //歷史會議記錄
  176. if (cbMeeting.Checked)
  177. {
  178. sbSQL.AppendLine("Delete OTB_PRJ_MeetingRecord Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  179. sbSQL.AppendLine("Delete OTB_PRJ_MeetingRecordDetail Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  180. }
  181. //行事曆記錄
  182. if (cbCalendar.Checked)
  183. {
  184. sbSQL.AppendLine("Delete OTB_MNG_Calendar Where CreateDate < '" + dpCleanBefor.Text.ToString() + " 00:00:00';");
  185. }
  186. using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
  187. {
  188. sqlAdapter.UpdateCommand = new SqlCommand();
  189. sqlAdapter.UpdateCommand.Connection = sqlConn;
  190. sqlAdapter.UpdateCommand.CommandText = sbSQL.ToString();
  191. if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
  192. {
  193. sqlConn.Open();
  194. }
  195. sqlAdapter.UpdateCommand.ExecuteNonQuery();
  196. }
  197. }
  198. else
  199. {
  200. MessageBox.Show(strResult, "提醒");
  201. }
  202. //執行命令
  203. StatusChange("None");
  204. CleanForm();
  205. }
  206. catch (Exception ex)
  207. {
  208. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  209. }
  210. }
  211. private void GoEvent() //執行事件
  212. {
  213. try
  214. {
  215. StringBuilder strSQL = new StringBuilder("");
  216. switch (strFrmStatus.ToString())
  217. {
  218. case "SEARCH": //搜尋
  219. break;
  220. }
  221. StatusChange("None");
  222. LockForm();
  223. }
  224. catch (Exception ex)
  225. {
  226. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  227. }
  228. }
  229. private void GetCurrentData()
  230. {
  231. //取得各項資料筆數
  232. //歷史工作彙報
  233. lbDayWork.Text = "(" + UtilityClass.GetSQLCount("Select * From OTB_MNG_DayWork Where CreateDate < '" + dpCleanBefor.Text + " 00:00:00'") + ") 筆";
  234. //歷史打卡資料
  235. lbAttendance.Text = "(" + UtilityClass.GetSQLCount("Select * From OTB_HR_CheckAttendance Where CreateDate < '" + dpCleanBefor.Text + " 00:00:00'") + ") 筆";
  236. //歷史請假記錄
  237. lbAskLeave.Text = "(" + UtilityClass.GetSQLCount("Select * From OTB_HR_AskLeave Where CreateDate < '" + dpCleanBefor.Text + " 00:00:00'") + ") 筆";
  238. //歷史會議記錄
  239. lbMeeting.Text = "(" + UtilityClass.GetSQLCount("Select * From OTB_PRJ_MeetingRecord Where CreateDate < '" + dpCleanBefor.Text + " 00:00:00'") + ") 筆";
  240. //行事曆
  241. lbCalendar.Text = "(" + UtilityClass.GetSQLCount("Select * From OTB_MNG_Calendar Where CreateDate < '" + dpCleanBefor.Text + " 00:00:00'") + ") 筆";
  242. }
  243. #endregion
  244. #region 事件觸發及問題處理
  245. private void tsbAdd_Click(object sender, EventArgs e)
  246. {
  247. try
  248. {
  249. CleanToolbar();
  250. tsbSearch.Enabled = false;
  251. tsbEdit.Enabled = false;
  252. tsbSave.Visible = true;
  253. CleanForm();
  254. UnLockForm();
  255. StatusChange("ADD");
  256. }
  257. catch (Exception ex)
  258. {
  259. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  260. }
  261. }
  262. private void tsbEdit_Click(object sender, EventArgs e)
  263. {
  264. try
  265. {
  266. if (strPKey == "")
  267. {
  268. MessageBox.Show("請先選擇資料", "提示");
  269. return;
  270. }
  271. CleanToolbar();
  272. UnLockForm();
  273. StatusChange("Modify");
  274. }
  275. catch (Exception ex)
  276. {
  277. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  278. }
  279. }
  280. private void tsbSave_Click(object sender, EventArgs e)
  281. {
  282. try
  283. {
  284. string strMessage = CheckForm();
  285. if (strMessage == "")
  286. {
  287. this.SaveEven();
  288. //GetMemberData(strPKey);
  289. }
  290. else
  291. {
  292. MessageBox.Show(strMessage,"提示");
  293. }
  294. }
  295. catch (Exception ex)
  296. {
  297. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  298. }
  299. }
  300. private void tsbDelete_Click(object sender, EventArgs e)
  301. {
  302. try
  303. {
  304. if (MessageBox.Show("請問您確定要進行資料清除動作?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
  305. {
  306. this.DelEven();
  307. }
  308. }
  309. catch (Exception ex)
  310. {
  311. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  312. }
  313. }
  314. private void tsbSearch_Click(object sender, EventArgs e)
  315. {
  316. try
  317. {
  318. //設定Toolbar狀態
  319. CleanToolbar();
  320. //開放查詢條件
  321. UnLockForm();
  322. //設定畫面物件狀態
  323. CleanForm();
  324. StatusChange("Search");
  325. }
  326. catch (Exception ex)
  327. {
  328. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  329. }
  330. }
  331. private void tsbOK_Click(object sender, EventArgs e)
  332. {
  333. try
  334. {
  335. GoEvent();
  336. //還原Toolbar狀態
  337. tsbSearch.Enabled = true;
  338. tsbOK.Visible = false;
  339. //關閉查詢條件
  340. LockForm();
  341. StatusChange("Search");
  342. }
  343. catch (Exception ex)
  344. {
  345. ErrorHandler.WriteErrorLog("CleanHistory.cs", ex);
  346. }
  347. }
  348. private void tsbCancel_Click(object sender, EventArgs e)
  349. {
  350. CleanForm();
  351. CleanToolbar();
  352. LockForm();
  353. StatusChange("None");
  354. }
  355. private void CleanHistory_Load(object sender, EventArgs e)
  356. {
  357. CleanForm();
  358. GetCurrentData();
  359. SetupStatus(); //設定畫面狀態
  360. }
  361. private void tsbExit_Click(object sender, EventArgs e)
  362. {
  363. this.Close();
  364. }
  365. private void tsbClean_Click(object sender, EventArgs e)
  366. {
  367. CleanForm();
  368. }
  369. #endregion
  370. private void dpCleanBefor_ValueChanged(object sender, EventArgs e)
  371. {
  372. GetCurrentData();
  373. }
  374. }
  375. }