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); }
public List <MASTER_DATA_APPROVAL_DETAIL> GetObjectDetails(string formId, int pageId) { PropertyInfo propInfo; var page = _pageBLL.GetPageByID(pageId); var tableDetails = _repository.GetTableDetail(page.MAIN_TABLE); var returnDetails = new List <MASTER_DATA_APPROVAL_DETAIL>(); object data = null; if (pageId == (int)Enums.MenuList.BrandRegistration) { var tempId = formId.Split('-'); var werks = tempId[0]; var facode = tempId[1]; var stickerCode = tempId[2]; data = _brandRegistrationBLL.GetByPlantIdAndFaCodeStickerCode(werks, facode, stickerCode); } else if (pageId == (int)Enums.MenuList.POA) { data = _poaBll.GetById(formId); } else if (pageId == (int)Enums.MenuList.POAMap) { var tempId = formId.Split('-'); var poaId = tempId[0]; var nppbkc = tempId[1]; var plantid = tempId[2]; data = _poaMapBLL.GetByNppbckId(nppbkc, plantid, poaId); } else if (pageId == (int)Enums.MenuList.MaterialMaster) { var tempId = formId.Split('-'); var werks = tempId[0]; var materialnumber = tempId[1]; var tempdata = _materialBLL.GetByMaterialAndPlantId(materialnumber, werks); data = Mapper.Map <MaterialDto>(tempdata); } if (data != null) { foreach (var detail in tableDetails) { if (detail.Documentation == null) { continue; } var detailTable = new MASTER_DATA_APPROVAL_DETAIL(); //propInfo = typeof(ZAIDM_EX_BRAND).GetProperty(detail.PropertyName); detailTable.COLUMN_NAME = detail.PropertyName; detailTable.COLUMN_DESCRIPTION = detail.Documentation.LongDescription; var propValue = data.GetType().GetProperty(detail.PropertyName).GetValue(data); if (propValue != null) { detailTable.OLD_VALUE = propValue.ToString(); } else { detailTable.OLD_VALUE = string.Empty; } returnDetails.Add(detailTable); } if (pageId == (int)Enums.MenuList.MaterialMaster) { returnDetails.Add(new MASTER_DATA_APPROVAL_DETAIL() { COLUMN_NAME = "CONVERTION", COLUMN_DESCRIPTION = "Convertion", OLD_VALUE = ((MaterialDto)data).CONVERTION }); } if (pageId == (int)Core.Enums.MenuList.BrandRegistration) { var dataBrand = (ZAIDM_EX_BRAND)data; var dataMaterial = _materialBLL.GetByMaterialAndPlantId(dataBrand.FA_CODE, dataBrand.WERKS); returnDetails.Add(new MASTER_DATA_APPROVAL_DETAIL() { COLUMN_NAME = "BRAND_CE", COLUMN_DESCRIPTION = "Brand Description (SAP)", OLD_VALUE = dataMaterial.MATERIAL_DESC }); } } return(returnDetails); }