Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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());
        }
Пример #5
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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }