示例#1
0
        private async Task SaveAsync()
        {
            if (ShippingAddressViewModel.ValidateForm())
            {
                string errorMessage = string.Empty;

                try
                {
                    await ShippingAddressViewModel.ProcessFormAsync();

                    _navigationService.GoBack();
                }
                catch (ModelValidationException mvex)
                {
                    DisplayValidationErrors(mvex.ValidationResult);
                }
                catch (Exception ex)
                {
                    errorMessage = string.Format(CultureInfo.CurrentCulture, _resourceLoader.GetString("GeneralServiceErrorMessage"), Environment.NewLine, ex.Message);
                }

                if (!string.IsNullOrWhiteSpace(errorMessage))
                {
                    await _alertMessageService.ShowAsync(errorMessage, _resourceLoader.GetString("ErrorServiceUnreachable"));
                }
            }
        }
示例#2
0
        private async void GoNext()
        {
            IsShippingAddressInvalid = ShippingAddressViewModel.ValidateForm() == false;
            IsBillingAddressInvalid  = !UseSameAddressAsShipping && BillingAddressViewModel.ValidateForm() == false;
            IsPaymentMethodInvalid   = PaymentMethodViewModel.ValidateForm() == false;

            if (IsShippingAddressInvalid || IsBillingAddressInvalid || IsPaymentMethodInvalid)
            {
                return;
            }

            string errorMessage = string.Empty;

            try
            {
                await _accountService.VerifyUserAuthenticationAsync();
                await ProcessFormAsync();
            }
            catch (Exception ex)
            {
                errorMessage = string.Format(CultureInfo.CurrentCulture, _resourceLoader.GetString("GeneralServiceErrorMessage"), Environment.NewLine, ex.Message);
            }

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                await _alertMessageService.ShowAsync(errorMessage, _resourceLoader.GetString("ErrorServiceUnreachable"));
            }
        }
示例#3
0
        public override void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewModelState)
        {
            if (viewModelState == null)
            {
                return;
            }

            // Try to populate address and payment method controls with default data if available
            ShippingAddressViewModel.SetLoadDefault(true);
            BillingAddressViewModel.SetLoadDefault(true);
            PaymentMethodViewModel.SetLoadDefault(true);

            // This ViewModel is an example of composition. The CheckoutHubPageViewModel manages
            // three child view models (Shipping Address, Billing Address, and Payment Method).
            // Since the FrameNavigationService calls this OnNavigatedTo method, passing in
            // a viewModelState dictionary, it is the responsibility of the parent view model
            // to manage separate dictionaries for each of its children. If the parent view model
            // were to pass its viewModelState dictionary to each of its children, it would be very
            // easy for one child view model to write over a sibling view model's state.
            if (e.NavigationMode == NavigationMode.New)
            {
                viewModelState["ShippingViewModel"]      = new Dictionary <string, object>();
                viewModelState["BillingViewModel"]       = new Dictionary <string, object>();
                viewModelState["PaymentMethodViewModel"] = new Dictionary <string, object>();
            }

            ShippingAddressViewModel.OnNavigatedTo(e, viewModelState["ShippingViewModel"] as Dictionary <string, object>);
            BillingAddressViewModel.OnNavigatedTo(e, viewModelState["BillingViewModel"] as Dictionary <string, object>);
            PaymentMethodViewModel.OnNavigatedTo(e, viewModelState["PaymentMethodViewModel"] as Dictionary <string, object>);
            base.OnNavigatedTo(e, viewModelState);
        }
示例#4
0
        public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary <string, object> viewModelState, bool suspending)
        {
            if (viewModelState == null || viewModelState.Count == 0)
            {
                return;
            }

            ShippingAddressViewModel.OnNavigatingFrom(e, viewModelState["ShippingViewModel"] as Dictionary <string, object>, suspending);
            BillingAddressViewModel.OnNavigatingFrom(e, viewModelState["BillingViewModel"] as Dictionary <string, object>, suspending);
            PaymentMethodViewModel.OnNavigatingFrom(e, viewModelState["PaymentMethodViewModel"] as Dictionary <string, object>, suspending);
            base.OnNavigatingFrom(e, viewModelState, suspending);
        }
示例#5
0
        public async Task <IActionResult> MyShippingAddress(ShippingAddressViewModel model)
        {
            var user = await _userManager.GetUserAsync(User);

            user.ShippingPropertyName = model.PropertyName;
            user.ShippingStreetAdress = model.StreetAdress;
            user.ShippingTownCity     = model.TownCity;
            user.ShippingZipPostcode  = model.Postcode;
            user.ShippingCountry      = model.Country;

            await _userManager.UpdateAsync(user);

            return(View(model));
        }
示例#6
0
        public override async void OnNavigatedTo(object navigationParameter, Windows.UI.Xaml.Navigation.NavigationMode navigationMode, Dictionary <string, object> viewModelState)
        {
            if (await _accountService.VerifyUserAuthenticationAsync() == null)
            {
                return;
            }

            var addressId = navigationParameter as string;

            HeaderLabel = string.IsNullOrWhiteSpace(addressId)
                              ? _resourceLoader.GetString("AddShippingAddressTitle")
                              : _resourceLoader.GetString("EditShippingAddressTitle");

            ShippingAddressViewModel.OnNavigatedTo(navigationParameter, navigationMode, viewModelState);
        }
示例#7
0
 public ActionResult AddAddreessForUser(ShippingAddressViewModel objShippingAddressViewModel)
 {
     try
     {
         objShippingAddressViewModel.retailer_mobile = LoggedInUser.MobileNumber;
         var addAddress = ObjIUserService.AddAddreessForUser(objShippingAddressViewModel);
         if (addAddress)
         {
             TempData["AddressSuccess"] = Resource.GrowOnline_Message_AddAddress;
             return(Json(addAddress, JsonRequestBehavior.AllowGet));
             //return Json("true", JsonRequestBehavior.AllowGet);
         }
         else
         {
             TempData["AddressSuccess"] = Resource.GrowOnline_Message_ErrorAddAddress;
             return(Json(addAddress, JsonRequestBehavior.AllowGet));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#8
0
        public bool AddAddreessForUser(ShippingAddressViewModel objShippingAddressViewModel)
        {
            Shop_Shipping_address objShop_Shipping_address = new Shop_Shipping_address();

            objShop_Shipping_address.reciver_name    = objShippingAddressViewModel.reciver_name;
            objShop_Shipping_address.retailer_mobile = objShippingAddressViewModel.retailer_mobile;
            objShop_Shipping_address.email_id        = objShippingAddressViewModel.email_id;
            objShop_Shipping_address.StreetLine1     = objShippingAddressViewModel.StreetLine1;
            objShop_Shipping_address.StreetLine2     = objShippingAddressViewModel.StreetLine2;
            objShop_Shipping_address.HouseNumber     = objShippingAddressViewModel.HouseNumber;
            objShop_Shipping_address.StateCode       = objShippingAddressViewModel.StateId;
            objShop_Shipping_address.DistrictCode    = objShippingAddressViewModel.DistrictId;
            objShop_Shipping_address.TalukaCode      = objShippingAddressViewModel.TalukaId;
            objShop_Shipping_address.VillageCode     = objShippingAddressViewModel.VillageId;
            objShop_Shipping_address.city            = objShippingAddressViewModel.city;
            objShop_Shipping_address.pincode         = objShippingAddressViewModel.pincode;
            objShop_Shipping_address.retailer_id     = "12345";
            objShop_Shipping_address.ship_mobile     = objShippingAddressViewModel.ship_mobile;
            objShop_Shipping_address.landline_number = objShippingAddressViewModel.landline_number;
            objShop_Shipping_address.tr_date         = DateTime.Now;
            var adddress = objIUser.AddAddreessForUser(objShop_Shipping_address);

            return(adddress);
        }
        private async Task <OrderViewModel> GetOrderViewModel(Guid orderId)
        {
            OrderViewModel vm = null;

            try
            {
                var order = await _context.Orders.SingleOrDefaultAsync(m => m.ID == orderId);

                var olines = await _context.OrderLines.Where(ol => ol.OrderID.Equals(order.ID)).ToListAsync();

                List <OrderLineViewModel> lineViewModels = new List <OrderLineViewModel>();
                foreach (var item in olines)
                {
                    Product product = null;

                    product = await _context.Products.SingleAsync(p => p.ProductID == item.ProductID);

                    var mainImage = await _context.ProductImages.SingleAsync(i => i.IsMainImage && i.ProductID.Equals(item.ProductID));

                    var unit = await _context.Units.SingleAsync(u => u.UnitID == item.UnitID);

                    OrderLineViewModel lineViewModel = new OrderLineViewModel {
                        ID             = item.OrderLineID,
                        Image          = mainImage.ImageUrl,
                        OrderPrice     = item.SellBasePrice,
                        OrderQuantity  = item.Quantity,
                        ProductName    = product.Name,
                        OrderUnit      = unit.Name,
                        OrderLineTotal =
                            item.Quantity * item.SellBasePrice,
                        Position      = item.Position,
                        ProductNumber = product.ProductNumber
                    };

                    lineViewModels.Add(lineViewModel);
                }


                var shippingPrice = await _context.ShippingPrices.SingleAsync(sp => sp.ID == order.ShippingPriceId);

                var shippingPeriod = await _context.ShpippingPeriods.SingleAsync(p => p.ShippingPeriodID == order.ShippingPeriodId);

                var paymend = await _context.Paymends.SingleAsync(p => p.ID == order.PaymentID);

                var customer = await _context.Customers.SingleAsync(c => c.CustomerID.Equals(order.CustomerID));

                var user = await _context.Users.SingleAsync(u => u.Id.Equals(customer.UserId));

                var shippingAddress = await _context.ShippingAddresses.FirstOrDefaultAsync(s => s.ID == order.ShippingAddressId);

                var invoiceaddress = await _context.ShippingAddresses.FirstOrDefaultAsync(c => c.CustomerID == order.CustomerID && c.IsInvoiceAddress);

                ShippingAddressViewModel shipToAddress = null;

                if (shippingAddress != null)
                {
                    shipToAddress = addressHelper.GetViewModel(shippingAddress);
                }

                ShippingAddressViewModel invoiceVm = null;

                if (invoiceaddress == null)
                {
                    invoiceVm = addressHelper.GetViewModel(customer);
                }
                else
                {
                    invoiceVm = addressHelper.GetViewModel(invoiceaddress);
                }

                vm = new OrderViewModel {
                    ID    = order.ID,
                    EMail = user.UserName,
                    ExceptLawConditions = order.ExceptLawConditions,
                    IsClosed            = order.IsClosed,
                    IsPayed             = order.IsPayed,
                    IsSend               = order.IsSend,
                    Number               = order.Number,
                    OrderDate            = order.OrderDate,
                    FreeText             = order.FreeText,
                    Payment              = paymend.Name,
                    Shippingdate         = order.Shippingdate,
                    ShippingPriceAtOrder = order.ShippingPrice,
                    ShippingPriceName    = shippingPrice.Name,
                    ShippToAddress       = shipToAddress,
                    InvoiceAddress       = invoiceVm,
                    ShippingPeriodString = shippingPeriod.Decription,
                    Total             = order.Total,
                    CustomerFirstName = customer.FirstName,
                    CutomerLastName   = customer.Name,
                    OderLines         = lineViewModels
                };
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Admin.OrdersController.GetViewModel -> error on sql transaction", null);
            }

            return(vm);
        }
示例#10
0
 public override void OnNavigatedFrom(Dictionary <string, object> viewModelState, bool suspending)
 {
     ShippingAddressViewModel.OnNavigatedFrom(viewModelState, suspending);
 }
 public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary <string, object> viewModelState, bool suspending)
 {
     ShippingAddressViewModel.OnNavigatingFrom(e, viewModelState, suspending);
 }
        private async Task <AdminCustomerViewModel> GetCustomerViewModel(Guid id)
        {
            AdminCustomerViewModel result = new AdminCustomerViewModel();

            var customer = await _context.Customers.SingleAsync(c => c.CustomerID == id);

            var user = await _context.Users.SingleAsync(u => u.Id == customer.UserId);

            var countries = await _context.Countries.ToListAsync();

            List <ShippingAddress> shipToAddresses = null;
            var openorders = await _context.Orders.Where(o => o.CustomerID == id && !o.IsClosed).ToListAsync();

            var closedorders = await _context.Orders.Where(o => o.CustomerID == id && o.IsClosed).ToListAsync();

            var vmOpenOrders   = new List <OrderViewModel>();
            var vmClosedOrders = new List <OrderViewModel>();

            foreach (var item in openorders)
            {
                var op = new OrderViewModel {
                    ID = item.ID, Number = item.Number, OrderDate = item.OrderDate
                };
                vmOpenOrders.Add(op);
            }
            foreach (var item in closedorders)
            {
                var cl = new OrderViewModel {
                    ID = item.ID, Number = item.Number, OrderDate = item.OrderDate
                };
                vmClosedOrders.Add(cl);
            }
            try
            {
                shipToAddresses = await _context.ShippingAddresses.Where(sh => sh.CustomerID == customer.CustomerID).ToListAsync();
            }
            catch (Exception e)
            {
                logger.LogError(e, "Fehler beim abrufen einer Lieferadresse.");
                shipToAddresses = null;
            }

            result.CustomerID        = customer.CustomerID;
            result.CustomerNo        = customer.CustomerNo;
            result.FirstName         = customer.FirstName;
            result.Name              = customer.Name;
            result.PostCode          = customer.PostCode;
            result.UserEmail         = user.Email;
            result.UserId            = user.Id;
            result.IsEmailConfirmed  = user.EmailConfirmed;
            result.City              = customer.City;
            result.AdditionalAddress = customer.AdditionalAddress;
            result.Address           = customer.Address;
            result.AllowedPayByBill  = customer.AllowedPayByBill;
            result.Addresses         = new List <ShippingAddressViewModel>();
            result.CountryId         = customer.CountryId;
            result.CountryName       = countries.Single(c => c.ID == customer.CountryId).Name;
            result.OpenOrders        = vmOpenOrders;
            result.ClosedOrders      = vmClosedOrders;

            if (shipToAddresses != null)
            {
                foreach (var item in shipToAddresses)
                {
                    var shipTo = new ShippingAddressViewModel
                    {
                        ID                = item.ID,
                        Address           = item.Address,
                        AdditionalAddress = item.AdditionalAddress,
                        City              = item.City,
                        CountryID         = item.CountryID,
                        CountryName       = countries.Single(c => c.ID == item.CountryID).Name,
                        CustomerID        = item.CustomerID,
                        FirstName         = item.FirstName,
                        IsMainAddress     = item.IsMainAddress,
                        LastName          = item.LastName,
                        PostCode          = item.PostCode,
                        IsInvoiceAddress  = item.IsInvoiceAddress
                    };
                    result.Addresses.Add(shipTo);
                }
            }


            return(result);
        }
示例#13
0
        private async Task ProcessFormAsync()
        {
            if (UseSameAddressAsShipping)
            {
                BillingAddressViewModel.Address = new Address
                {
                    Id              = Guid.NewGuid().ToString(),
                    AddressType     = AddressType.Billing,
                    FirstName       = ShippingAddressViewModel.Address.FirstName,
                    MiddleInitial   = ShippingAddressViewModel.Address.MiddleInitial,
                    LastName        = ShippingAddressViewModel.Address.LastName,
                    StreetAddress   = ShippingAddressViewModel.Address.StreetAddress,
                    OptionalAddress = ShippingAddressViewModel.Address.OptionalAddress,
                    City            = ShippingAddressViewModel.Address.City,
                    State           = ShippingAddressViewModel.Address.State,
                    ZipCode         = ShippingAddressViewModel.Address.ZipCode,
                    Phone           = ShippingAddressViewModel.Address.Phone
                };
            }

            try
            {
                await ShippingAddressViewModel.ProcessFormAsync();

                await BillingAddressViewModel.ProcessFormAsync();

                await PaymentMethodViewModel.ProcessFormAsync();
            }
            catch (ModelValidationException)
            {
                // Handle validation exceptions when the order is created.
            }

            var user         = _accountService.SignedInUser;
            var shoppingCart = await _shoppingCartRepository.GetShoppingCartAsync();

            try
            {
                // Create an order with the values entered in the form
                await _orderRepository.CreateBasicOrderAsync(user.UserName, shoppingCart, ShippingAddressViewModel.Address, BillingAddressViewModel.Address, PaymentMethodViewModel.PaymentMethod);

                _navigationService.Navigate("CheckoutSummary", null);
            }
            catch (ModelValidationException mvex)
            {
                DisplayOrderErrorMessages(mvex.ValidationResult);
                if (_shippingAddressViewModel.Address.Errors.Errors.Count > 0)
                {
                    IsShippingAddressInvalid = true;
                }

                if (_billingAddressViewModel.Address.Errors.Errors.Count > 0 && !UseSameAddressAsShipping)
                {
                    IsBillingAddressInvalid = true;
                }

                if (_paymentMethodViewModel.PaymentMethod.Errors.Errors.Count > 0)
                {
                    IsPaymentMethodInvalid = true;
                }
            }
        }
        // GET: Orders/Create
        public async Task <IActionResult> Create(Guid?id)
        {
            cartHelper.CheckAndRemove();

            OrderCreateViewModel   vm        = new OrderCreateViewModel();
            List <ShippingAddress> addresses = new List <ShippingAddress>();
            var identity    = User.Identity;
            var currentUser = _userManager.Users.Single(u => u.UserName == identity.Name);
            var userId      = currentUser.Id;

            var customer = await _context.Customers.Where(c => c.UserId == userId).SingleAsync();

            ShippingPrice shippingPriceDefault = null;
            decimal       shipDefaultPrice     = 0.0M;

            int countryDefault          = 1;   //Country 1 Deutschland
            int ShippingPeriodDefaultID = 1;

            if (customer.CustomerID != Guid.Empty)
            {
                var shipping = await _context.ShippingAddresses.SingleOrDefaultAsync(c => c.CustomerID == customer.CustomerID && c.IsMainAddress);

                if (shipping == null)
                {
                    return(RedirectToAction("CustomerIndex", "ShippingAddresses", new { id = customer.CustomerID }));
                }

                countryDefault = shipping.CountryID;
            }

            var countries = await _context.Countries.ToListAsync();

            var country = countries.Single(c => c.ID == countryDefault);

            ViewData["CustomerCountryCode"] = country.Code;

            if (id != null)
            {
                Guid cartId       = (Guid)id;
                var  shoppingCart = await _context.ShoppingCarts.SingleAsync(sc => sc.ID == id);

                decimal total = 0.0M;
                var     lines = _context.ShoppingCartLines.Where(l => l.ShoppingCartID.Equals(shoppingCart.ID));
                List <CartLineViewModel> vmcLines = new List <CartLineViewModel>();

                foreach (var item in lines)
                {
                    string path = string.Empty;
                    try
                    {
                        path = _context.ProductImages.Where(i => i.ProductID.Equals(item.ProductID) && i.IsMainImage).SingleOrDefault().ImageUrl;
                    }
                    catch (Exception)
                    {
                        path = "noImage.svg";
                    }
                    var product = _context.Products.Where(p => p.ProductID.Equals(item.ProductID)).SingleOrDefault();

                    if (ShippingPeriodDefaultID < product.ShippingPeriod)
                    {
                        ShippingPeriodDefaultID = product.ShippingPeriod;
                    }
                    var productShipPrice = await _context.ShippingPrices.SingleAsync(s => s.ShippingPriceTypeId == product.ShippingPriceType && s.CountryId == countryDefault);

                    if (shipDefaultPrice < productShipPrice.Price)
                    {
                        shipDefaultPrice     = productShipPrice.Price;
                        shippingPriceDefault = productShipPrice;
                    }

                    decimal baseprice = _context.Products.Where(p => p.ProductID.Equals(item.ProductID)).SingleOrDefault().Price;

                    decimal pPrice = 0.0M;
                    if (baseprice != 0.0M)
                    {
                        pPrice = baseprice * item.Quantity;
                    }

                    if (string.IsNullOrEmpty(path))
                    {
                        path = "noImage.svg";
                    }
                    var               unitHelper = new UnitHelper(_context, factory);
                    string            unit       = unitHelper.GetUnitName(product.BasesUnitID);
                    string            sekunit    = unitHelper.GetUnitName(product.SecondBaseUnit);
                    CartLineViewModel cvml       = new CartLineViewModel()
                    {
                        ID                      = item.ID,
                        CartID                  = item.ShoppingCartID,
                        ImgPath                 = path,
                        Position                = item.Position,
                        PosPrice                = Math.Round(pPrice, 2),
                        Quantity                = Math.Round(item.Quantity, 2),
                        ProductID               = item.ProductID,
                        Unit                    = unit,
                        ProductName             = product.Name,
                        ProductNo               = product.ProductNumber.ToString(),
                        MinimumPurchaseQuantity = Math.Round(product.MinimumPurchaseQuantity, 2),
                        AvailableQuantity       = Math.Round(product.AvailableQuantity, 2),
                        ShoppingCartID          = shoppingCart.ID,
                        SellBasePrice           = Math.Round(item.SellBasePrice, 2),
                        SellSekPrice            = Math.Round(product.SecondBasePrice, 2),
                        SekUnit                 = sekunit,
                        ShortDescription        = product.ShortDescription,
                        UnitID                  = product.BasesUnitID
                    };
                    vmcLines.Add(cvml);
                    total = total + pPrice;
                }

                CartViewModel cvm = new CartViewModel()
                {
                    ID      = shoppingCart.ID,
                    Number  = shoppingCart.Number,
                    OrderId = shoppingCart.OrderId,
                    Lines   = vmcLines,
                    Total   = total,
                };

                addresses = await _context.ShippingAddresses.Where(sh => sh.CustomerID == customer.CustomerID).ToListAsync();

                vm.ShippingAddresseVMs = new List <ShippingAddressViewModel>();
                int mainShipID = 0;
                foreach (var item in addresses)
                {
                    var shipVm = new ShippingAddressViewModel
                    {
                        ID                = item.ID,
                        FirstName         = item.FirstName,
                        LastName          = item.LastName,
                        Address           = item.Address,
                        AdditionalAddress = item.AdditionalAddress,
                        PostCode          = item.PostCode,
                        City              = item.City,
                        CountryID         = item.CountryID,
                        CustomerID        = item.CustomerID,
                        IsMainAddress     = item.IsMainAddress,
                        CountryName       = countries.Single(c => c.ID == item.CountryID).Name
                    };
                    if (shipVm.IsMainAddress)
                    {
                        mainShipID = shipVm.ID;
                    }
                    vm.ShippingAddresseVMs.Add(shipVm);
                }

                string strOrderNo = await GetActualOrderNo();

                vm.Cart                    = cvm;
                vm.Order                   = new Order();
                vm.Order.Number            = strOrderNo;
                vm.Order.CartID            = cvm.ID;
                vm.Order.ShippingAddressId = mainShipID;
                vm.Order.OrderDate         = DateTime.Now;
            }

            var paymends = await _context.Paymends.ToListAsync();

            ShippingPeriod periodDefault = await _context.ShpippingPeriods.SingleAsync(s => s.ShippingPeriodID == ShippingPeriodDefaultID);

            vm.Cart.Total = vm.Cart.Total + shipDefaultPrice;

            vm.Cart.Total = Math.Round(vm.Cart.Total, 2);

            vm.PayPalTotal = Math.Round(vm.Cart.Total, 2).ToString(CultureInfo.CreateSpecificCulture("en-US"));

            shipDefaultPrice = Math.Round(shipDefaultPrice);

            vm.ShippingPrice = shippingPriceDefault;

            vm.ShippingPeriod = periodDefault;

            vm.CanBuyWithBill = customer.AllowedPayByBill;

            ViewData["Paymends"] = paymends;


            return(View(vm));
        }
        private async Task <WeHaveYourOrderViewModel> GetViewModel(Guid id)
        {
            var myorder = await _context.Orders.SingleAsync(o => o.ID == id);

            var paymend = await _context.Paymends.SingleAsync(p => p.ID == myorder.PaymentID);

            var shippingAddress = await _context.ShippingAddresses.SingleAsync(a => a.ID == myorder.ShippingAddressId);

            var invioceAddress = await _context.ShippingAddresses.FirstOrDefaultAsync(a => a.CustomerID == myorder.CustomerID && a.IsInvoiceAddress);

            var period = await _context.ShpippingPeriods.SingleAsync(p => p.ShippingPeriodID == myorder.ShippingPeriodId);

            var shipPrice = await _context.ShippingPrices.SingleAsync(p => p.ID == myorder.ShippingPriceId);

            var olines = await _context.OrderLines.Where(ol => ol.OrderID.Equals(myorder.ID)).ToListAsync();

            List <WeHaveYourOrderLineViewModel> lineViewModels = new List <WeHaveYourOrderLineViewModel>();

            foreach (var item in olines)
            {
                var prod = await _context.Products.SingleAsync(p => p.ProductID == item.ProductID);

                var img = await _context.ProductImages.SingleAsync(p => p.IsMainImage && p.ProductID == item.ProductID);

                var unit = await _context.Units.SingleAsync(u => u.UnitID == prod.BasesUnitID);

                var line = new WeHaveYourOrderLineViewModel
                {
                    ID            = item.OrderLineID,
                    ImagePath     = img.ImageUrl,
                    Position      = item.Position,
                    Price         = Math.Round((item.SellBasePrice * item.Quantity), 2),
                    ProductName   = prod.Name,
                    ProductNumber = prod.ProductNumber,
                    Quantity      = Math.Round(item.Quantity, 2),
                    ProductUnit   = unit.Name
                };

                lineViewModels.Add(line);
            }


            BankAcccount bank = null;

            var shipTo = addressHelper.GetViewModel(shippingAddress);

            ShippingAddressViewModel invoiceVm = null;

            if (invioceAddress == null)
            {
                var customer = await _context.Customers.SingleAsync(c => c.CustomerID == myorder.CustomerID);

                invoiceVm = addressHelper.GetViewModel(customer);
            }
            else
            {
                invoiceVm = addressHelper.GetViewModel(invioceAddress);
            }

            string thankyou = await GetThankyou(paymend);

            WeHaveYourOrderViewModel viewModel = new WeHaveYourOrderViewModel
            {
                OrderID              = myorder.ID,
                OrderDate            = myorder.OrderDate,
                OrderNo              = myorder.Number,
                OrderPaymend         = paymend.Name,
                OrderShippingAddress = shipTo,
                OrderInvoiceAddress  = invoiceVm,
                OrderShippingPeriod  = period.Decription,
                Bank          = bank,
                OrderTotal    = Math.Round(myorder.Total, 2),
                OrderThankYou = thankyou,
                ShipPrice     = Math.Round(myorder.ShippingPrice, 2),
                ShipPriceName = shipPrice.Name,
                OrderLines    = lineViewModels,
                FreeText      = myorder.FreeText
            };

            return(viewModel);
        }