public ActionResult Edit(int pageId)
        {
            var model = new MasterDataApprovalSettingEditViewModel();

            model.MainMenu    = _mainMenu;
            model.IsNotViewer = CurrentUser.UserRole != Enums.UserRole.Viewer && CurrentUser.UserRole != Enums.UserRole.Controller;
            model.CurrentMenu = PageInfo;

            var data = _masterDataApprovalSettingBLL.GetAllEditableColumn(pageId);

            model.Detail = Mapper.Map <MasterDataSetting>(data);


            return(View("Edit", model));
        }
예제 #2
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);
        }