private MailNotification ProsesMailNotificationBody(MASTER_DATA_APPROVAL data) { var bodyMail = new StringBuilder(); var rc = new MailNotification(); var userCreatorInfo = _poaBll.GetUserById(data.CREATED_BY); var webRootUrl = ConfigurationManager.AppSettings["WebRootUrl"]; var page = _pageBLL.GetPageByID(data.PAGE_ID); rc.Subject = "Master Data " + page.MENU_NAME + " Approval Status is " + EnumHelper.GetDescription(data.STATUS_ID); bodyMail.Append("Dear Team,<br />"); bodyMail.Append("Kindly be informed, " + rc.Subject + ". <br />"); bodyMail.Append(BuildBodyMail(data, webRootUrl)); var controllerList = _poaBll.GetMasterApprovers(); rc.Body = bodyMail.ToString(); if (data.STATUS_ID == Enums.DocumentStatus.WaitingForMasterApprover) { foreach (var user in controllerList) { rc.To.Add(user.EMAIL); } rc.IsCCExist = true; rc.CC.Add(userCreatorInfo.EMAIL); } else { foreach (var user in controllerList) { rc.IsCCExist = true; rc.CC.Add(user.EMAIL); } rc.To.Add(userCreatorInfo.EMAIL); } return(rc); }
private void UpdateChangesHistory(MASTER_DATA_APPROVAL data) { var formId = data.FORM_ID.Split('-'); foreach (var detail in data.MASTER_DATA_APPROVAL_DETAIL) { var changesFormId = ""; switch (data.PAGE_ID) { case (int)Enums.MenuList.BrandRegistration: var werks = formId[0]; var facode = formId[1]; var stickerCode = formId[2]; changesFormId = werks + facode + stickerCode; break; case (int)Enums.MenuList.POA: changesFormId = data.FORM_ID; break; case (int)Enums.MenuList.POAMap: changesFormId = data.FORM_ID; break; case (int)Enums.MenuList.MaterialMaster: var werksM = formId[0]; var stickerCodeM = formId[1]; changesFormId = stickerCodeM + werksM; break; } CHANGES_HISTORY changes = new CHANGES_HISTORY(); changes.FIELD_NAME = detail.COLUMN_DESCRIPTION.ToUpper(); changes.FORM_ID = changesFormId; changes.FORM_TYPE_ID = (Enums.MenuList)data.PAGE_ID; changes.MODIFIED_BY = data.APPROVED_BY; changes.MODIFIED_DATE = data.APPROVED_DATE; changes.NEW_VALUE = detail.NEW_VALUE; changes.OLD_VALUE = detail.OLD_VALUE; _changesHistoryBLL.AddHistory(changes); } }
public bool SendEmailWorkflowByParam(MASTER_DATA_APPROVAL data) { var mailNotif = ProsesMailNotificationBody(data); var success = false; if (mailNotif != null) { if (mailNotif.IsCCExist) { success = _messageService.SendEmailToListWithCC(mailNotif.To, mailNotif.CC, mailNotif.Subject, mailNotif.Body, false); } else { success = _messageService.SendEmailToList(mailNotif.To, mailNotif.Subject, mailNotif.Body, false); } } return(success); }
private string BuildBodyMail(MASTER_DATA_APPROVAL data, string webRootUrl) { var bodyMail = new StringBuilder(); var page = _pageBLL.GetPageByID(data.PAGE_ID); bodyMail.Append("<table><tr><td>Master Data </td><td>: " + page.MENU_NAME + "</td></tr>"); bodyMail.Append("<tr><td>Form Id </td><td>: " + data.FORM_ID + "</td></tr>"); //bodyMail.Append("<tr><td>Total Qty Approved </td><td>: " + // ConvertHelper.ConvertDecimalToStringMoneyFormat(pbck1Data.QtyApproved) + " " + pbck1Data.RequestQtyUomName + "</td></tr>"); //bodyMail.Append("<tr><td>Total Quota Qty Used </td><td>: " + // ConvertHelper.ConvertDecimalToStringMoneyFormat(quotaDetail.QtyCk5) + " " + pbck1Data.RequestQtyUomName + "</td></tr>"); //bodyMail.Append("<tr><td>Total Quota Qty Remain </td><td>: " + // ConvertHelper.ConvertDecimalToStringMoneyFormat(quotaDetail.RemainQuota) + " " + pbck1Data.RequestQtyUomName + "</td></tr>"); string userName = ""; var creator = _poaBll.GetUserById(data.CREATED_BY); if (creator != null) { userName = creator.LAST_NAME + ", " + creator.FIRST_NAME; } bodyMail.Append("<tr><td>Creator</td><td> : " + userName + "</td></tr>"); bodyMail.Append("<tr colspan='2'><td><i>To VIEW, Please click this <a href='" + webRootUrl + "/MasterApproval/Detail/" + data.APPROVAL_ID + "'><u>link</u></a> to view detailed information</i></td></tr>"); bodyMail.Append("</table>"); bodyMail.AppendLine(); bodyMail.Append("<br />Regards,<br />"); return(bodyMail.ToString()); }
public T MasterDataApprovalValidation <T>(int pageId, string userId, T oldObject, T newObject, out bool isExist, out MASTER_DATA_APPROVAL newApproval, bool isCommit = false) { var approvalSettings = _approvalSettingBLL.GetAllEditableColumn(pageId); //var fieldNames = typeof(T).GetFields() // .Select(field => field.Name) // .ToList(); isExist = false; var needApprovalFields = approvalSettings.Details.Where(x => x.IS_APPROVAL.HasValue && x.IS_APPROVAL.Value); if (isCommit) { needApprovalFields = approvalSettings.Details; } var needApprovalList = new List <MASTER_DATA_APPROVAL_DETAIL>(); foreach (var isneedApprove in needApprovalFields) { //var isneedApprove = fieldName; var masterDataApprovalDetail = new MASTER_DATA_APPROVAL_DETAIL(); if (newObject == null) // delete data from database logic (not flagging) { var oldValue = oldObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).GetValue(oldObject, null); masterDataApprovalDetail.OLD_VALUE = oldValue.ToString(); masterDataApprovalDetail.NEW_VALUE = null; masterDataApprovalDetail.COLUMN_DESCRIPTION = isneedApprove.ColumnDescription; masterDataApprovalDetail.COLUMN_NAME = isneedApprove.COLUMN_NAME; needApprovalList.Add(masterDataApprovalDetail); //newObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).SetValue(newObject, oldValue); continue; } if (isneedApprove != null) { var oldValue = oldObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).GetValue(oldObject, null); var newValue = newObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).GetValue(newObject, null); if (oldValue == null) { masterDataApprovalDetail.OLD_VALUE = string.Empty; masterDataApprovalDetail.NEW_VALUE = string.Empty; if (newValue != null) { masterDataApprovalDetail.NEW_VALUE = newValue.ToString(); } masterDataApprovalDetail.COLUMN_DESCRIPTION = isneedApprove.ColumnDescription; masterDataApprovalDetail.COLUMN_NAME = isneedApprove.COLUMN_NAME; if (masterDataApprovalDetail.OLD_VALUE != masterDataApprovalDetail.NEW_VALUE) { needApprovalList.Add(masterDataApprovalDetail); var checkOldObject = GenerateFormId(pageId, oldObject) != null; if (checkOldObject) { newObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).SetValue(newObject, oldValue); } } } else { if (!oldValue.Equals(newValue)) { masterDataApprovalDetail.OLD_VALUE = oldValue.ToString(); masterDataApprovalDetail.NEW_VALUE = newValue.ToString(); masterDataApprovalDetail.COLUMN_DESCRIPTION = isneedApprove.ColumnDescription; masterDataApprovalDetail.COLUMN_NAME = isneedApprove.COLUMN_NAME; needApprovalList.Add(masterDataApprovalDetail); newObject.GetType().GetProperty(isneedApprove.COLUMN_NAME).SetValue(newObject, oldValue); } } } } newApproval = new MASTER_DATA_APPROVAL(); if (needApprovalList.Count > 0) { newApproval.CREATED_BY = userId; newApproval.CREATED_DATE = DateTime.Now; newApproval.PAGE_ID = approvalSettings.PageId; newApproval.STATUS_ID = Enums.DocumentStatus.WaitingForMasterApprover; newApproval.FORM_ID = GenerateFormId(approvalSettings.PageId, newObject); if (newObject == null) // delete data without flagging { newApproval.FORM_ID = GenerateFormId(approvalSettings.PageId, oldObject); } if (approvalSettings.PageId == (int)Enums.MenuList.MaterialMaster) { if (needApprovalList.Where(x => x.COLUMN_NAME == "CONVERTION").Any()) { if (newObject != null) { newObject.GetType().GetProperty("MATERIAL_UOM").SetValue(newObject, new List <MATERIAL_UOM>()); } } } newApproval.MASTER_DATA_APPROVAL_DETAIL = needApprovalList; isExist = CheckExitingOngoingApproval(newApproval.FORM_ID); if (!isExist) { _repository.Insert(newApproval); //SendEmailWorkflowByParam(newApproval); } else { throw new BLLException(ExceptionCodes.BLLExceptions.ApprovalMasterExist); } } if (isCommit) { if (!isExist) { _uow.SaveChanges(); //SendEmailWorkflow(newApproval.APPROVAL_ID); } } return(newObject); }
private object UpdateObjectByFormId(MASTER_DATA_APPROVAL approvalData, out bool isDelete) { PropertyInfo propInfo; isDelete = false; if (approvalData.PAGE_ID == (int)Enums.MenuList.BrandRegistration) { var tempId = approvalData.FORM_ID.Split('-'); var werks = tempId[0]; var facode = tempId[1]; var stickerCode = tempId[2]; var dataBrand = _brandRegistrationBLL.GetByPlantIdAndFaCodeStickerCode(werks, facode, stickerCode); if (dataBrand != null) { foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(ZAIDM_EX_BRAND).GetProperty(detail.COLUMN_NAME); dataBrand.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(dataBrand, CastPropertyValue(propInfo, detail.NEW_VALUE)); } return(null); } else { ZAIDM_EX_BRAND data = new ZAIDM_EX_BRAND(); foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(ZAIDM_EX_BRAND).GetProperty(detail.COLUMN_NAME); data.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(data, CastPropertyValue(propInfo, detail.NEW_VALUE)); } return(data); } } else if (approvalData.PAGE_ID == (int)Enums.MenuList.POA) { var dataPoa = _poaBll.GetById(approvalData.FORM_ID); if (dataPoa != null) { foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(POA).GetProperty(detail.COLUMN_NAME); dataPoa.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(dataPoa, CastPropertyValue(propInfo, detail.NEW_VALUE)); } return(null); } else { POA data = new POA(); foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(POA).GetProperty(detail.COLUMN_NAME); data.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(data, CastPropertyValue(propInfo, detail.NEW_VALUE)); } return(data); } } else if (approvalData.PAGE_ID == (int)Enums.MenuList.POAMap) { var tempId = approvalData.FORM_ID.Split('-'); var poaId = tempId[0]; var nppbkc = tempId[1]; var plantid = tempId[2]; var dataPoaMap = _poaMapBLL.GetByNppbckId(nppbkc, plantid, poaId); if (dataPoaMap != null) { isDelete = approvalData.MASTER_DATA_APPROVAL_DETAIL.Where(x => x.NEW_VALUE == null).Any(); if (!isDelete) { foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(POA_MAP).GetProperty(detail.COLUMN_NAME); dataPoaMap.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(dataPoaMap, CastPropertyValue(propInfo, detail.NEW_VALUE)); } } return(null); } else { POA_MAP data = new POA_MAP(); foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { propInfo = typeof(POA_MAP).GetProperty(detail.COLUMN_NAME); data.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(data, CastPropertyValue(propInfo, detail.NEW_VALUE)); } return(data); } } else if (approvalData.PAGE_ID == (int)Enums.MenuList.MaterialMaster) { var tempId = approvalData.FORM_ID.Split('-'); var werks = tempId[0]; var materialnumber = tempId[1]; var dataMaterial = _materialBLL.GetByMaterialAndPlantId(materialnumber, werks); if (dataMaterial != null) { foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { if (detail.COLUMN_NAME == "CONVERTION") { var materialUoms = detail.NEW_VALUE.Split(','); var uomList = new List <MATERIAL_UOM>(); foreach (var detailConvertion in materialUoms) { if (string.IsNullOrEmpty(detailConvertion)) { continue; } var convertionVal = decimal.Parse(detailConvertion.Trim().Split(' ')[0]); var convertionUom = detailConvertion.Trim().Split(' ')[1]; //if (dataMaterial.MATERIAL_UOM.Any(x => x.MEINH == convertionUom)) //{ // uomList.FirstOrDefault(x => x.MEINH == convertionUom).UMREN = convertionVal; //} //else //{ uomList.Add(new MATERIAL_UOM() { STICKER_CODE = dataMaterial.STICKER_CODE, WERKS = dataMaterial.WERKS, UMREN = convertionVal, MEINH = convertionUom }); //} } dataMaterial.MATERIAL_UOM = uomList; continue; } propInfo = typeof(ZAIDM_EX_MATERIAL).GetProperty(detail.COLUMN_NAME); dataMaterial.GetType().GetProperty(detail.COLUMN_NAME).SetValue(dataMaterial, CastPropertyValue(propInfo, detail.NEW_VALUE)); if (detail.COLUMN_NAME == "CLIENT_DELETION") { var materialClientDto = Mapper.Map <MaterialDto>(dataMaterial); _materialBLL.ClientDeletion(materialClientDto, approvalData.APPROVED_BY); } else if (detail.COLUMN_NAME == "PLANT_DELETION") { var materialPlantDto = Mapper.Map <MaterialDto>(dataMaterial); _materialBLL.ClientDeletion(materialPlantDto, approvalData.APPROVED_BY); } } return(null); } else { ZAIDM_EX_MATERIAL data = new ZAIDM_EX_MATERIAL(); foreach (var detail in approvalData.MASTER_DATA_APPROVAL_DETAIL) { if (detail.COLUMN_NAME == "CONVERTION") { continue; } propInfo = typeof(ZAIDM_EX_MATERIAL).GetProperty(detail.COLUMN_NAME); data.GetType() .GetProperty(detail.COLUMN_NAME) .SetValue(data, CastPropertyValue(propInfo, detail.NEW_VALUE)); } //convertion add var firstOrDefault = approvalData.MASTER_DATA_APPROVAL_DETAIL.Where(x => x.COLUMN_NAME == "CONVERTION").Select(x => x.NEW_VALUE).FirstOrDefault(); if (firstOrDefault != null) { var detailConvertions = firstOrDefault.Split(','); data.MATERIAL_UOM = new Collection <MATERIAL_UOM>(); foreach (var detailConvertion in detailConvertions) { data.MATERIAL_UOM.Add(new MATERIAL_UOM() { STICKER_CODE = data.STICKER_CODE, WERKS = data.WERKS, UMREN = decimal.Parse(detailConvertion.Trim().Split(' ')[0]), MEINH = detailConvertion.Trim().Split(' ')[1] }); } } return(data); } } return(null); }
public MaterialOutput Save(MaterialDto data, string userId) { bool isNew = false; var origin = _repository.Get(x => x.STICKER_CODE == data.STICKER_CODE && x.WERKS == data.WERKS, null, includeTables).SingleOrDefault(); var originDto = AutoMapper.Mapper.Map <MaterialDto>(origin); bool isApprovalExist; //var edited = AutoMapper.Mapper.Map<ZAIDM_EX_MATERIAL>(model); //AutoMapper.Mapper.Map(model, data); MASTER_DATA_APPROVAL approvalData = new MASTER_DATA_APPROVAL(); if (originDto != null) { data.MODIFIED_BY = userId; data.MODIFIED_DATE = DateTime.Now; data.CREATED_DATE = origin.CREATED_DATE; data.CREATED_BY = origin.CREATED_BY; //data.MATERIAL_UOM = origin.MATERIAL_UOM; data = _masterDataAprovalBLL.MasterDataApprovalValidation((int)Enums.MenuList.MaterialMaster, userId, originDto, data, out isApprovalExist, out approvalData); var tempNewData = AutoMapper.Mapper.Map <ZAIDM_EX_MATERIAL>(data); data = AutoMapper.Mapper.Map <MaterialDto>(tempNewData); if (data.CLIENT_DELETION != (originDto.CLIENT_DELETION.HasValue ? originDto.CLIENT_DELETION : false)) { _zaidmExMaterialService.ClientDeletion(data, userId); } if (data.PLANT_DELETION != (originDto.PLANT_DELETION.HasValue ? originDto.PLANT_DELETION.Value : false)) { _zaidmExMaterialService.PlantDeletion(data, userId); } SetChanges(originDto, data, userId); } else { data.CREATED_BY = userId; data.CREATED_DATE = DateTime.Now; data.CLIENT_DELETION = false; data.PLANT_DELETION = false; isNew = true; } var dataToSave = AutoMapper.Mapper.Map <ZAIDM_EX_MATERIAL>(data); var output = new MaterialOutput(); try { if (!isNew) { //foreach (var matUom1 in dataToSave.MATERIAL_UOM) //{ // var materialUom = _repositoryUoM.Get(x => x.STICKER_CODE == matUom1.STICKER_CODE // && x.WERKS == matUom1.WERKS // && x.MEINH == matUom1.MEINH).FirstOrDefault(); // _repositoryUoM.Detach(materialUom); // //if (materialUom != null && materialUom) // //{ // // matUom1.MATERIAL_UOM_ID = materialUom.MATERIAL_UOM_ID; // //} //} dataToSave.MATERIAL_UOM = null; _repository.InsertOrUpdate(dataToSave); _uow.SaveChanges(); } else { _masterDataAprovalBLL.MasterDataApprovalValidation((int)Enums.MenuList.MaterialMaster, userId, new MaterialDto(), data, out isApprovalExist, out approvalData, true); } _masterDataAprovalBLL.SendEmailWorkflow(approvalData.APPROVAL_ID); output.Success = true; output.materialId = data.STICKER_CODE; } catch (BLLException ex) { _logger.Error(ex); output.Success = false; output.ErrorCode = ex.Code; output.ErrorMessage = ex.Message; } catch (Exception exception) { _logger.Error(exception); output.Success = false; output.ErrorCode = ExceptionCodes.BaseExceptions.unhandled_exception.ToString(); output.ErrorMessage = EnumHelper.GetDescription(ExceptionCodes.BaseExceptions.unhandled_exception); } return(output); }