Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }