private string GetWarehouseFromDeliveryInformation(DeliveryAssuranceDetail assurance)
        {
            if (assurance.Gardshamtning == "1" && SettingPage.IsInternal && string.IsNullOrWhiteSpace(assurance.Warehouse))
            {
                // 2015-08-17 Olle Welwert: Ej hämta mottagningsplatser om ordertyp <> 204.
                if (assurance.OrderType == "204" || !assurance.Action.Equals(DeliveryAssuranceAction.Approve))
                {
                    var iSlam = 2;

                    switch (assurance.Slam)
                    {
                    case "JA-S1":
                        iSlam = 1;
                        break;

                    case "NEJ":
                        iSlam = 0;
                        break;
                    }

                    assurance.Warehouse = _deliveryNoteRepository.GetWarehouse(
                        assurance.CustomerNumber,
                        assurance.DeliveryAddress,
                        assurance.Item,
                        assurance.Sort,
                        assurance.Torkat != "NEJ",
                        iSlam,
                        assurance.Straforkortat != "NEJ");
                }
            }
            return(assurance.Warehouse);
        }
        private async Task <DeliveryAssuranceOverviewViewModel> PopulateOverviewModelFromDeliveryDetail(DeliveryAssuranceListPage currentPage,
                                                                                                        DeliveryAssuranceDetail deliveryAssurance)
        {
            var lorryType = GetLorryTypes()?.FirstOrDefault(x => x.Key.Equals(deliveryAssurance.LorryType));

            var deliveryAddress = GetDeliveryAddresses(deliveryAssurance.CustomerNumber)?.FirstOrDefault(x => x.Key.Equals(deliveryAssurance.DeliveryAddress));

            if (deliveryAssurance.Action.Equals(DeliveryAssuranceAction.Create))
            {
                deliveryAssurance.Item = DeliveryAssuranceHelper.ParseItemValue(deliveryAssurance.Article);
                deliveryAssurance.Sort = DeliveryAssuranceHelper.ParseSortValue(deliveryAssurance.Article);
                var article = GetMergedItems(deliveryAssurance.CustomerNumber, DateTime.Now)?.FirstOrDefault(d => d.Key == deliveryAssurance.Article);
                deliveryAssurance.ItemName = article?.Value;
            }

            var warehouse =
                (await GetWarehouseList(new Core.DataModels.DeliveryAssuranceDtos.DeliveryAssurance
            {
                Item = deliveryAssurance.Item,
                Sort = deliveryAssurance.Sort,
                Leveransdatum = Convert.ToDateTime(deliveryAssurance.DeliveryDate)
            }))?.FirstOrDefault(w => w.Key == GetWarehouseFromDeliveryInformation(deliveryAssurance));

            //var depaAvtals =
            //    (await GetDepaAvtalDelAssAsync(new Core.DataModels.DeliveryAssuranceDtos.DeliveryAssurance
            //    {
            //        Item = deliveryAssurance.Item,
            //        Sort = deliveryAssurance.Sort,
            //        Leveransdatum = Convert.ToDateTime(deliveryAssurance.DeliveryDate),
            //        SupplierNumber = deliveryAssurance.CustomerNumber
            //    }));

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

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

            var deliveryAssuranceLists = Session[nameof(MultiApprove)] as List <DeliveryAssuranceList>;
            var overviewModel          = new DeliveryAssuranceOverviewViewModel(currentPage)
            {
                DeliveryAssurance = new DeliveryAssuranceOverview()
                {
                    CustomerName   = deliveryAssurance.CustomerName,
                    CustomerNumber = deliveryAssurance.CustomerNumber,
                    IONumber       = deliveryAssurance.IONumber,

                    TermAndCondition = deliveryAssurance.TermAndCondition,
                    Gardshamtning    = deliveryAssurance.Gardshamtning == "1",
                    TransportType    = GetTransportType(deliveryAssurance.Gardshamtning == "1", deliveryAssurance.TermAndCondition),

                    LorryTypeDesc   = lorryType?.Value,
                    DeliveryAddress = deliveryAddress?.Value,

                    ItemName = deliveryAssurance.ItemName,
                    Quantity = deliveryAssurance.Quantity,

                    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.OtherInfo.ReplaceReturnToBr(),
                    HarvestYear   = deliveryAssurance.HarvestYear,
                    WarehouseDesc = warehouse?.Value,
                    DepaAvtal     = depaAvtal?.Description,

                    DeliveryDate     = deliveryAssurance.DeliveryDate,
                    DeliveryTypeDesc = depaAvtals?.Length > 1 ? DeliveryTypes.Depa : DeliveryTypes.Spon,

                    Action = deliveryAssurance.Action
                },
                ChangeUrl      = deliveryAssurance.CurrentUrl,
                IsMultiApprove = deliveryAssurance.Action.Equals(DeliveryAssuranceAction.Approve) && deliveryAssuranceLists != null && deliveryAssuranceLists.Count > 1
            };

            var sessionKey = $"{nameof(DeliveryAssuranceDetail)}-{deliveryAssurance.Action}-{deliveryAssurance.IONumber}";

            Session[sessionKey] = deliveryAssurance;

            return(overviewModel);
        }
        public async Task <ActionResult> Submit(DeliveryAssuranceListPage currentPage, DeliveryAssuranceDetail deliveryAssurance)
        {
            if (SiteUser == null)
            {
                return(HttpNotFound());
            }

            var overviewModel = await PopulateOverviewModelFromDeliveryDetail(currentPage, deliveryAssurance);

            return(View("~/Views/AppPages/DeliveryAssurancePage/DeliveryAssuranceOverview.cshtml", overviewModel));
        }