Example #1
0
        public ActionResult Index(CalculateDeliveryFeePage currentPage)
        {
            var supplier = UserManager.GetActiveCustomer(HttpContext);

            ViewData["supplier"] = supplier != null ? supplier.CustomerNo : string.Empty;
            if (string.IsNullOrWhiteSpace(supplier?.CustomerNo))
            {
                return(View("Index", new CalculateDeliveryFeePageViewModel(currentPage, new Item[0], new DeliveryAddress[0],
                                                                           new Item[0])));
            }

            var listLorryTypes        = _deliveryAssuranceRepository.GetLorryTypes();
            var listDeliveryAddresses = _deliveryAssuranceRepository.GetDeliveryAdresses(supplier.CustomerNo);

            // at the migration phase, skip all business for the internal user
            // TODO: Implement business for the internl users later.
            var listMergedItems = _deliveryAssuranceRepository.GetMergedItems(supplier.CustomerNo,
                                                                              DateTime.Now.Date, true);

            var model = new CalculateDeliveryFeePageViewModel(currentPage, listLorryTypes, listDeliveryAddresses,
                                                              listMergedItems)
            {
                SupplierId = supplier.CustomerNo
            };

            return(View("Index", model));
        }
        private async Task <DeliveryAssuranceOverviewViewModel> PopulateOverviewModel(
            DeliveryAssuranceListPage currentPage,
            Core.DataModels.DeliveryAssuranceDtos.DeliveryAssurance deliveryAssurance, bool isGeneratePdf = false)
        {
            var urlHelper            = ServiceLocator.Current.GetInstance <UrlHelper>();
            var deliveryAssuranceUrl = urlHelper.ContentUrl(currentPage.ContentLink);

            var lorryType =
                _deliveryNoteRepository.GetLorryTypes()
                .FirstOrDefault(x => x.Keyvalue.Equals(deliveryAssurance.Levsatt));

            var deliveryAddress =
                _deliveryNoteRepository.GetDeliveryAdresses(deliveryAssurance.SupplierNumber)
                .FirstOrDefault(x => x.AddressNumber.Equals(deliveryAssurance.DeliveryAddress));

            var mergedItem =
                _deliveryNoteRepository.GetMergedItems(deliveryAssurance.SupplierNumber, isGeneratePdf ? DateTime.Now : deliveryAssurance.Leveransdatum, !SettingPage.IsInternal)?
                .FirstOrDefault(i => DeliveryAssuranceHelper.GetItemSort(deliveryAssurance.Item, deliveryAssurance.Sort) == i.Keyvalue);

            var warehouse =
                (await _deliveryNoteRepository.GetWarehouseListAsync(deliveryAssurance.Item, deliveryAssurance.Sort, deliveryAssurance.Leveransdatum))?
                .FirstOrDefault(w => w.Keyvalue == deliveryAssurance.Warehouse);

            var depaAvtals = await _deliveryNoteRepository.GetDepaAvtalAsync(deliveryAssurance.SupplierNumber, deliveryAssurance.Item, deliveryAssurance.Sort);

            var depaAvtal = depaAvtals.FirstOrDefault(d => d.Keyvalue == deliveryAssurance.Depaavtal);

            var model = new DeliveryAssuranceOverviewViewModel(currentPage)
            {
                DeliveryAssurance = new DeliveryAssuranceOverview()
                {
                    CustomerName   = GetCustomerName(deliveryAssurance.SupplierNumber),
                    CustomerNumber = deliveryAssurance.SupplierNumber,
                    IONumber       = deliveryAssurance.IONumber,

                    KundorderNr  = deliveryAssurance.KundorderNr,
                    GHGvarde     = deliveryAssurance.GHGvarde,
                    KundsOrderNr = deliveryAssurance.KundsOrderNr,

                    TermAndCondition = deliveryAssurance.Leveransvillkor,
                    Gardshamtning    = deliveryAssurance.Gardshamtning,
                    TransportType    = GetTransportType(deliveryAssurance.Gardshamtning, deliveryAssurance.Leveransvillkor),

                    LorryTypeDesc   = lorryType?.Description,
                    Address         = deliveryAddress ?? new DeliveryAddress(),
                    DeliveryAddress = deliveryAddress != null ? $"{deliveryAddress.Street}, {deliveryAddress.City}" : string.Empty,

                    ItemName = mergedItem?.Description ?? deliveryAssurance.ItemName,
                    Quantity = deliveryAssurance.Quantity.ConvertToTon(),

                    SlamDesc          = await _deliveryNoteRepository.GetM3DescriptionAsync(DeliveryAssuranceRadioButtons.Slam, deliveryAssurance.SLAM),
                    StraforkortatDesc = await _deliveryNoteRepository.GetM3DescriptionAsync(DeliveryAssuranceRadioButtons.Straforkortat, deliveryAssurance.Straforkortat),
                    TorkatDesc        = await _deliveryNoteRepository.GetM3DescriptionAsync(DeliveryAssuranceRadioButtons.Torkat, deliveryAssurance.Torkat),
                    RedDesc           = await _deliveryNoteRepository.GetM3DescriptionAsync(DeliveryAssuranceRadioButtons.Red, deliveryAssurance.RED),

                    OtherInfo     = deliveryAssurance.Ovrigt,
                    HarvestYear   = deliveryAssurance.Skordear,
                    WarehouseDesc = warehouse?.Description,
                    DepaAvtal     = !string.IsNullOrWhiteSpace(depaAvtal?.Keyvalue) ? depaAvtal.Description : string.Empty,

                    DeliveryDate     = DeliveryAssuranceHelper.GetValidDate(deliveryAssurance.Leveransdatum),
                    DeliveryTypeDesc = depaAvtals.Length > 1 ? DeliveryTypes.Depa : DeliveryTypes.Spon,
                    Status           = deliveryAssurance.Status
                },
                ChangeUrl = DeliveryAssuranceHelper.BuildQueryUrl($"{deliveryAssuranceUrl}Change", new Dictionary <string, string>()
                {
                    { "a", deliveryAssurance.IONumber },
                    { "l", deliveryAssurance.LineNumber.ToString() }
                })
            };

            return(model);
        }