private List <tbm_Employee> SaveEmployee(dsEmployeeBelonging employeeInfo, IEmployeeMasterHandler hand) { List <tbm_Employee> result = null; doTransactionLog.eTransactionType?TransactionType = null; MAS070_ScreenParameter MAS070Param = GetScreenObject <MAS070_ScreenParameter>(); PasswordHandler handler = new PasswordHandler(); using (TransactionScope scope = new TransactionScope()) { if (employeeInfo.employee.ModifyMode.Equals("ADD")) { employeeInfo.employee.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; employeeInfo.employee.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; employeeInfo.employee.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; employeeInfo.employee.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; employeeInfo.employee.Password = handler.GeneratePasswordHash(employeeInfo.employee.Password); List <tbm_Employee> insertList = new List <tbm_Employee>(); insertList.Add(employeeInfo.employee); string xml = CommonUtil.ConvertToXml_Store(insertList); result = hand.InsertEmployee(xml); TransactionType = doTransactionLog.eTransactionType.Insert; } else { if (employeeInfo.employee.ChangePasswordFlag) { employeeInfo.employee.Password = handler.GeneratePasswordHash(employeeInfo.employee.Password); employeeInfo.employee.PasswordLastUpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; employeeInfo.employee.PasswordWrongCount = 0; employeeInfo.employee.Status = null; } result = hand.UpdateEmployee(employeeInfo.employee); TransactionType = doTransactionLog.eTransactionType.Update; } if (result.Count == 0) { return(null); } else { doTransactionLog logData = new doTransactionLog() { TransactionType = TransactionType, TableName = TableName.C_TBL_NAME_EMPLOYEE, TableData = CommonUtil.ConvertToXml(result) }; ILogHandler loghand = ServiceContainer.GetService <ILogHandler>() as ILogHandler; loghand.WriteTransactionLog(logData); } List <tbm_Belonging> insertBelList = new List <tbm_Belonging>(); List <View_tbm_Belonging> checkUpdateBelList = new List <View_tbm_Belonging>(); List <View_tbm_Belonging> updateBelList = new List <View_tbm_Belonging>(); foreach (var item in employeeInfo.belongingList) { if (item.ModifyMode.Equals("NONE")) { continue; } if (item.ModifyMode.Equals("ADD")) { item.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; item.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; item.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; item.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; insertBelList.Add(item); } else if (item.ModifyMode.Equals("EDIT")) { if (MAS070Param.belongingList != null) { var updateDate = from g in MAS070Param.belongingList where g.BelongingID == item.BelongingID select g.UpdateDate; foreach (var date in updateDate) { item.UpdateDate = date; } } if (item.UpdateDate != null) { checkUpdateBelList.Add(item); updateBelList.Add(item); } else { item.CreateBy = CommonUtil.dsTransData.dtUserData.EmpNo; item.CreateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; item.UpdateBy = CommonUtil.dsTransData.dtUserData.EmpNo; item.UpdateDate = CommonUtil.dsTransData.dtOperationData.ProcessDateTime; insertBelList.Add(item); } } } if (employeeInfo.delBelList != null && employeeInfo.delBelList.Count != 0) { foreach (var item in employeeInfo.delBelList) { var updateDate = from g in MAS070Param.belongingList where g.BelongingID == item.BelongingID select g.UpdateDate; foreach (var date in updateDate) { item.UpdateDate = date; } } checkUpdateBelList.AddRange(employeeInfo.delBelList); } if (checkUpdateBelList.Count != 0) { hand.checkBelongingUpdateDate(checkUpdateBelList); } if (insertBelList.Count != 0) { string xml = CommonUtil.ConvertToXml_Store(insertBelList); List <tbm_Belonging> insertedList = hand.InsertBelonging(xml); if (insertedList.Count == 0) { return(null); } else { doTransactionLog logData = new doTransactionLog() { TransactionType = doTransactionLog.eTransactionType.Insert, TableName = TableName.C_TBL_NAME_BELONGING, TableData = CommonUtil.ConvertToXml(insertedList) }; ILogHandler loghand = ServiceContainer.GetService <ILogHandler>() as ILogHandler; loghand.WriteTransactionLog(logData); } } foreach (var item in updateBelList) { List <tbm_Belonging> updateList = new List <tbm_Belonging>(); updateList.Add(item); string xml = CommonUtil.ConvertToXml_Store(updateList); List <tbm_Belonging> updatedList = hand.UpdateBelonging(xml, item.BelongingID); if (updatedList.Count == 0) { return(null); } else { doTransactionLog logData = new doTransactionLog() { TransactionType = doTransactionLog.eTransactionType.Update, TableName = TableName.C_TBL_NAME_BELONGING, TableData = CommonUtil.ConvertToXml(updatedList) }; ILogHandler loghand = ServiceContainer.GetService <ILogHandler>() as ILogHandler; loghand.WriteTransactionLog(logData); } } if (employeeInfo.delBelList != null && employeeInfo.delBelList.Count != 0) { foreach (var item in employeeInfo.delBelList) { List <tbm_Belonging> deletedList = hand.DeleteBelonging(item.BelongingID); if (deletedList.Count == 0) { return(null); } else { doTransactionLog logData = new doTransactionLog() { TransactionType = doTransactionLog.eTransactionType.Delete, TableName = TableName.C_TBL_NAME_BELONGING, TableData = CommonUtil.ConvertToXml(deletedList) }; ILogHandler loghand = ServiceContainer.GetService <ILogHandler>() as ILogHandler; loghand.WriteTransactionLog(logData); } } } scope.Complete(); } return(result); }
/// <summary> /// Save employee.<br /> /// - Check system suspending.<br /> /// - Validate data.<br /> /// - Save employee data.<br /> /// - Save belonging data.<br /> /// </summary> /// <param name="employeeInfo"></param> /// <returns></returns> public ActionResult MAS070_SaveEmployee(dsEmployeeBelonging employeeInfo) { ObjectResultData res = new ObjectResultData(); List <tbm_Employee> resultList = null; try { res = checkSystemSuspending(); if (res.IsError) { return(Json(res)); } //12.1 Validate require field res.MessageType = MessageModel.MESSAGE_TYPE.WARNING; if (false == ModelState.IsValid) { ValidatorUtil.BuildErrorMessage(res, this); } bool foundPrimary = false; foreach (var item in employeeInfo.belongingList) { if (item.MainDepartmentFlag == true) { foundPrimary = true; } if (item.ModifyMode.Equals("NONE")) { continue; } } if (!foundPrimary) { res.AddErrorMessage(MessageUtil.MODULE_MASTER, MessageUtil.MessageList.MSG1042); } if (res.IsError) { return(Json(res)); } IEmployeeMasterHandler hand = ServiceContainer.GetService <IEmployeeMasterHandler>() as IEmployeeMasterHandler; List <dtEmployeeDetail> emp = hand.GetEmployeeDetail(employeeInfo.employee.EmpNo); // Akat K. : check exist employee number if (employeeInfo.employee.ModifyMode.Equals("ADD")) { if (emp != null && emp.Count != 0) { if (emp[0].DeleteFlag.Value) { MAS070_ScreenParameter MAS070Param = GetScreenObject <MAS070_ScreenParameter>(); MAS070Param.updateDate = emp[0].UpdateDate.Value; MAS070Param.isReactivate = true; MAS070Param.reactivateEmpNo = employeeInfo.employee.EmpNo; res.ResultData = "CONF"; return(Json(res)); } else { res.AddErrorMessage(MessageUtil.MODULE_MASTER, MessageUtil.MessageList.MSG1013); return(Json(res)); } } } else { if (emp != null && emp.Count != 0) { employeeInfo.employee.PasswordWrongCount = emp[0].PasswordWrongCount; employeeInfo.employee.PasswordLastUpdateDate = emp[0].PasswordLastUpdateDate; employeeInfo.employee.Status = emp[0].Status; } MAS070_ScreenParameter MAS070Param = GetScreenObject <MAS070_ScreenParameter>(); if (MAS070Param.isReactivate) { if (employeeInfo.employee.EmpNo.Equals(MAS070Param.reactivateEmpNo)) { hand.DeleteAllBelonging(MAS070Param.reactivateEmpNo); } MAS070Param.isReactivate = false; MAS070Param.reactivateEmpNo = null; } } if (employeeInfo.belongingList != null) { foreach (View_tbm_Belonging bl in employeeInfo.belongingList) { if (bl.StartDate < employeeInfo.employee.StartDate || bl.EndDate < employeeInfo.employee.StartDate) { res.AddErrorMessage(MessageUtil.MODULE_MASTER, MessageUtil.MessageList.MSG1050); return(Json(res)); } if (employeeInfo.employee.EndDate != null) { if (bl.StartDate > employeeInfo.employee.EndDate || bl.EndDate > employeeInfo.employee.EndDate) { res.AddErrorMessage(MessageUtil.MODULE_MASTER, MessageUtil.MessageList.MSG1051); return(Json(res)); } } } } resultList = this.SaveEmployee(employeeInfo, hand); if (resultList != null && resultList.Count != 0) { res.ResultData = "P"; } } catch (Exception ex) { res.ResultData = "NP"; res.AddErrorMessage(ex); } return(Json(res)); }