public ActionResult Edit(string plant, string facode, string stickercode)
        {
            if (CurrentUser.UserRole == Enums.UserRole.Viewer || CurrentUser.UserRole == Enums.UserRole.Controller)
            {
                return(RedirectToAction("Details", new { plant, facode, stickercode }));
            }

            var model = new BrandRegistrationEditViewModel();


            var dbBrand = _brandRegistrationBll.GetById(plant, facode, stickercode);

            if (dbBrand.IS_DELETED.HasValue && dbBrand.IS_DELETED.Value)
            {
                return(RedirectToAction("Details", "BrandRegistration", new { plant = dbBrand.WERKS, facode = dbBrand.FA_CODE, stickercode = dbBrand.STICKER_CODE }));
            }

            model                                = Mapper.Map <BrandRegistrationEditViewModel>(dbBrand);
            model.HjeValueStr                    = model.HjeValue == null ? string.Empty : model.HjeValue.ToString();
            model.TariffValueStr                 = model.Tariff == null ? string.Empty : model.Tariff.ToString();
            model.ConversionValueStr             = model.Conversion == null ? string.Empty : model.Conversion.ToString();
            model.PrintingPriceValueStr          = model.PrintingPrice == null ? string.Empty : model.PrintingPrice.ToString();
            model.PersonalizationCodeDescription = _masterBll.GetPersonalizationDescById(model.PersonalizationCode);
            var materialData = _materialBll.GetByPlantIdAndStickerCode(model.PlantId, model.FaCode);

            model.SAPBrandDescription = materialData != null ? materialData.MATERIAL_DESC : string.Empty;
            model = InitEdit(model);

            model.IsAllowDelete = !model.IsFromSAP;

            return(View(model));
        }
        private BrandRegistrationEditViewModel InitEdit(BrandRegistrationEditViewModel model)
        {
            model.MainMenu    = _mainMenu;
            model.CurrentMenu = PageInfo;

            model.StickerCodeList         = GlobalFunctions.GetStickerCodeList();
            model.PlantList               = GlobalFunctions.GetVirtualPlantList();
            model.PersonalizationCodeList = GlobalFunctions.GetPersonalizationCodeList();
            model.CutFillerCodeList       = GlobalFunctions.GetCutFillerCodeList(model.PlantId);
            model.ProductCodeList         = GlobalFunctions.GetProductCodeList(_productBll);
            model.SeriesList              = GlobalFunctions.GetSeriesCodeList(_masterBll);
            model.MarketCodeList          = GlobalFunctions.GetMarketCodeList(_masterBll);
            model.CountryCodeList         = GlobalFunctions.GetCountryList();
            model.HjeCurrencyList         = GlobalFunctions.GetCurrencyList();
            model.TariffCurrencyList      = GlobalFunctions.GetCurrencyList();
            model.GoodTypeList            = GlobalFunctions.GetGoodTypeList(_goodTypeBll);
            model.BahanKemasanList        = GlobalFunctions.GetBahanKemasanList(_brandRegistrationBll);
            return(model);
        }
        private void SetChangesLog(ZAIDM_EX_BRAND origin, BrandRegistrationEditViewModel updatedModel)
        {
            var changesData = new Dictionary <string, bool>();

            updatedModel.HjeValue      = updatedModel.HjeValueStr == null ? 0: Convert.ToDecimal(updatedModel.HjeValueStr);
            updatedModel.Tariff        = updatedModel.TariffValueStr == null ? 0 : Convert.ToDecimal(updatedModel.TariffValueStr);
            updatedModel.Conversion    = updatedModel.ConversionValueStr == null ? 0 : Convert.ToDecimal(updatedModel.ConversionValueStr);
            updatedModel.PrintingPrice = updatedModel.PrintingPriceValueStr == null ? 0 : Convert.ToDecimal(updatedModel.PrintingPriceValueStr);


            if (origin.IS_FROM_SAP.HasValue == false || origin.IS_FROM_SAP.Value == false)
            {
                changesData.Add("FACode", origin.FA_CODE == updatedModel.FaCode);
                changesData.Add("PersonalizationCode", origin.PER_CODE == updatedModel.PersonalizationCode);
                changesData.Add("BrandName", origin.BRAND_CE == updatedModel.BrandName);
                changesData.Add("SkepNo", origin.SKEP_NO == updatedModel.SkepNo);
                changesData.Add("SkepDate", origin.SKEP_DATE == updatedModel.SkepDate);
                changesData.Add("ProductCode", origin.PROD_CODE == updatedModel.ProductCode);
                changesData.Add("SeriesId", origin.SERIES_CODE == updatedModel.SeriesId);
                changesData.Add("Content", origin.BRAND_CONTENT == updatedModel.Content);
                changesData.Add("MarketId", origin.MARKET_ID == updatedModel.MarketId);
                changesData.Add("CountryId", origin.COUNTRY == updatedModel.CountryId);
                changesData.Add("HjeValue", origin.HJE_IDR == updatedModel.HjeValue);
                changesData.Add("HjeCurrency", origin.HJE_CURR == updatedModel.HjeCurrency);
                changesData.Add("Tariff", origin.TARIFF == updatedModel.Tariff);
                changesData.Add("TariffCurrency", origin.TARIF_CURR == updatedModel.TariffCurrency);
                changesData.Add("ColourName", origin.COLOUR == updatedModel.ColourName);
                changesData.Add("GoodType", origin.EXC_GOOD_TYP == updatedModel.GoodType);
                changesData.Add("StartDate", origin.START_DATE == updatedModel.StartDate);
                changesData.Add("EndDate", origin.END_DATE == updatedModel.EndDate);
                changesData.Add("Status", origin.STATUS == updatedModel.IsActive);
            }

            changesData.Add("Conversion", origin.CONVERSION == updatedModel.Conversion);
            changesData.Add("CutFilterCode", origin.CUT_FILLER_CODE == updatedModel.CutFillerCode);
            changesData.Add("PRINTING_PRICE", origin.PRINTING_PRICE == updatedModel.PrintingPrice);
            changesData.Add("BahanKemasan", origin.BAHAN_KEMASAN == updatedModel.BahanKemasan);

            foreach (var listChange in changesData)
            {
                if (listChange.Value)
                {
                    continue;
                }
                var changes = new CHANGES_HISTORY();
                changes.FORM_TYPE_ID  = Enums.MenuList.BrandRegistration;
                changes.FORM_ID       = origin.WERKS + origin.FA_CODE + origin.STICKER_CODE;
                changes.FIELD_NAME    = listChange.Key;
                changes.MODIFIED_BY   = CurrentUser.USER_ID;
                changes.MODIFIED_DATE = DateTime.Now;
                switch (listChange.Key)
                {
                case "STICKER_CODE":
                    changes.OLD_VALUE = origin.STICKER_CODE ?? null;
                    changes.NEW_VALUE = updatedModel.StickerCode ?? null;
                    break;

                case "PlantId":
                    changes.OLD_VALUE = _plantBll.GetPlantWerksById(origin.WERKS);
                    changes.NEW_VALUE = _plantBll.GetPlantWerksById(updatedModel.PlantId);
                    break;

                case "FACode":
                    changes.OLD_VALUE = origin.FA_CODE;
                    changes.NEW_VALUE = updatedModel.FaCode;
                    break;

                case "PersonalizationCode":
                    changes.OLD_VALUE = _masterBll.GetPersonalizationDescById(origin.PER_CODE);
                    changes.NEW_VALUE = _masterBll.GetPersonalizationDescById(updatedModel.PersonalizationCode);
                    break;

                case "BrandName":
                    changes.OLD_VALUE = origin.BRAND_CE;
                    changes.NEW_VALUE = updatedModel.BrandName;
                    break;

                case "SkepNo":
                    changes.OLD_VALUE = origin.SKEP_NO;
                    changes.NEW_VALUE = updatedModel.SkepNo;
                    break;

                case "SkepDate":
                    changes.OLD_VALUE = origin.SKEP_DATE == null ? string.Empty : Convert.ToDateTime(origin.SKEP_DATE).ToString("dd MMM yyyy");
                    changes.NEW_VALUE = updatedModel.SkepDate.ToString("dd MMM yyyy");
                    break;

                case "ProductCode":
                    changes.OLD_VALUE = _masterBll.GetProductCodeTypeDescById(origin.PROD_CODE);
                    changes.NEW_VALUE = _masterBll.GetProductCodeTypeDescById(updatedModel.ProductCode);
                    break;

                case "SeriesId":
                    changes.OLD_VALUE = _masterBll.GetDataSeriesDescById(origin.SERIES_CODE).ToString();
                    changes.NEW_VALUE = _masterBll.GetDataSeriesDescById(updatedModel.SeriesId).ToString();
                    break;

                case "Content":
                    changes.OLD_VALUE = origin.BRAND_CONTENT == null ? string.Empty : origin.BRAND_CONTENT.ToString();
                    changes.NEW_VALUE = updatedModel.Content == null? string.Empty : updatedModel.Content.ToString();
                    break;

                case "MarketId":
                    changes.OLD_VALUE = _masterBll.GetMarketDescById(origin.MARKET_ID);
                    changes.NEW_VALUE = _masterBll.GetMarketDescById(updatedModel.MarketId);
                    break;

                case "CountryId":
                    changes.OLD_VALUE = origin.COUNTRY;
                    changes.NEW_VALUE = updatedModel.CountryId;
                    break;

                case "HjeValue":
                    changes.OLD_VALUE = origin.HJE_IDR.ToString();
                    changes.NEW_VALUE = updatedModel.HjeValue.ToString();
                    break;

                case "HjeCurrency":
                    changes.OLD_VALUE = origin.HJE_CURR;
                    changes.NEW_VALUE = updatedModel.HjeCurrency;
                    break;

                case "Tariff":
                    changes.OLD_VALUE = origin.TARIFF.ToString();
                    changes.NEW_VALUE = updatedModel.Tariff.ToString();
                    break;

                case "TariffCurrency":
                    changes.OLD_VALUE = origin.TARIF_CURR;
                    changes.NEW_VALUE = updatedModel.TariffCurrency;
                    break;

                case "ColourName":
                    changes.OLD_VALUE = origin.COLOUR;
                    changes.NEW_VALUE = updatedModel.ColourName;
                    break;

                case "GoodType":
                    changes.OLD_VALUE = _goodTypeBll.GetGoodTypeDescById(origin.EXC_GOOD_TYP);
                    changes.NEW_VALUE = _goodTypeBll.GetGoodTypeDescById(updatedModel.GoodType);
                    break;

                case "StartDate":
                    changes.OLD_VALUE = origin.START_DATE.HasValue ? origin.START_DATE.Value.ToString("dd MMM yyyy") : string.Empty;
                    changes.NEW_VALUE = updatedModel.StartDate.HasValue? updatedModel.StartDate.Value.ToString("dd MMM yyyy") : string.Empty;
                    break;

                case "EndDate":
                    changes.OLD_VALUE = origin.END_DATE.HasValue ? origin.END_DATE.Value.ToString("dd MMM yyyy"): string.Empty;
                    changes.NEW_VALUE = updatedModel.EndDate.HasValue ? updatedModel.EndDate.Value.ToString("dd MMM yyyy"): string.Empty;
                    break;

                case "Conversion":
                    changes.OLD_VALUE = origin.CONVERSION.ToString();
                    changes.NEW_VALUE = updatedModel.Conversion.ToString();
                    break;

                case "CutFilterCode":
                    changes.OLD_VALUE = origin.CUT_FILLER_CODE;
                    changes.NEW_VALUE = updatedModel.CutFillerCode;
                    break;

                case "Status":
                    changes.OLD_VALUE = origin.STATUS.ToString();
                    changes.NEW_VALUE = updatedModel.IsActive.ToString();
                    break;

                case "PRINTING_PRICE":
                    changes.OLD_VALUE = origin.PRINTING_PRICE.ToString();
                    changes.NEW_VALUE = updatedModel.PrintingPrice.ToString();
                    break;

                case "BahanKemasan":
                    changes.OLD_VALUE = origin.BAHAN_KEMASAN;
                    changes.NEW_VALUE = updatedModel.BahanKemasan;
                    break;
                }
                _changesHistoryBll.AddHistory(changes);
            }
        }
        public ActionResult Edit(BrandRegistrationEditViewModel model)
        {
            ZAIDM_EX_BRAND dbBrand = null;
            bool           isApprovalExist;

            try
            {
                dbBrand = _brandRegistrationBll.GetById(model.PlantId, model.FaCode, model.StickerCode);
            }
            catch (Exception ex)
            {
                dbBrand = null;
            }

            var oldDbBrand = Mapper.Map <BrandRegistrationEditViewModel>(dbBrand);
            var oldObject  = Mapper.Map <ZAIDM_EX_BRAND>(oldDbBrand);

            if (dbBrand == null)
            {
                ModelState.AddModelError("BrandName", "Data Not Found redirected to create form");
                var modelCreate = Mapper.Map <BrandRegistrationCreateViewModel>(model);
                modelCreate = InitCreate(modelCreate);

                return(View("Create", modelCreate));
            }

            SetChangesLog(dbBrand, model);

            //if (dbBrand.IS_FROM_SAP.HasValue && dbBrand.IS_FROM_SAP.Value)
            //{
            //    dbBrand.PRINTING_PRICE = model.PrintingPrice;
            //    dbBrand.CONVERSION = model.Conversion;
            //    dbBrand.CUT_FILLER_CODE = model.CutFillerCode;
            //    dbBrand.STATUS = model.IsActive;
            //}
            //else
            Mapper.Map(model, dbBrand);
            dbBrand.HJE_IDR        = model.HjeValueStr == null ? (decimal?)null : Convert.ToDecimal(model.HjeValueStr);
            dbBrand.TARIFF         = model.TariffValueStr == null ? (decimal?)null : Convert.ToDecimal(model.TariffValueStr);
            dbBrand.CONVERSION     = model.ConversionValueStr == null ? (decimal?)null : Convert.ToDecimal(model.ConversionValueStr);
            dbBrand.PRINTING_PRICE = model.PrintingPriceValueStr == null ? (decimal?)null : Convert.ToDecimal(model.PrintingPriceValueStr);
            dbBrand.FA_CODE        = model.FaCode.Trim();
            dbBrand.STICKER_CODE   = model.StickerCode.Trim();
            dbBrand.BAHAN_KEMASAN  = string.IsNullOrEmpty(model.BahanKemasan) ? null : model.BahanKemasan.Trim();
            //dbBrand.PACKED_ADJUSTED = model.IsPackedAdjusted;
            //dbBrand.BRAND_CE = model.BrandName;
            //dbBrand.IS_FROM_SAP = model.IsFromSAP;
            //dbBrand.CREATED_BY = CurrentUser.USER_ID;
            if (!string.IsNullOrEmpty(model.PersonalizationCodeDescription))
            {
                dbBrand.PER_CODE_DESC = model.PersonalizationCodeDescription;
            }

            var materialData = _materialBll.GetByPlantIdAndStickerCode(model.PlantId, model.FaCode);

            if (materialData == null)
            {
                AddMessageInfo("Fa code and plant not registered on Material Master.", Enums.MessageInfoType.Error);
                model = InitEdit(model);

                return(View("Edit", model));
            }

            try
            {
                MASTER_DATA_APPROVAL approvalData;
                dbBrand = _masterDataAprovalBLL.MasterDataApprovalValidation((int)Enums.MenuList.BrandRegistration,
                                                                             CurrentUser.USER_ID, oldObject, dbBrand, out isApprovalExist, out approvalData);
                _brandRegistrationBll.Save(dbBrand);

                _masterDataAprovalBLL.SendEmailWorkflow(approvalData.APPROVAL_ID);
                AddMessageInfo(Constans.SubmitMessage.Updated, Enums.MessageInfoType.Success);
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                AddMessageInfo(ex.Message, Enums.MessageInfoType.Error);
            }

            model = InitEdit(model);

            return(View("Edit", model));
        }