public ActionResult Index(CheckoutPage currentPage, int?isGuest) { if (CartIsNullOrEmpty()) { return(View("EmptyCart", new CheckoutMethodViewModel(currentPage))); } if (!Request.IsAuthenticated && (!isGuest.HasValue || isGuest.Value != 1)) { return(RedirectToAction("CheckoutMethod", new { node = currentPage.ContentLink })); } if (CartWithValidationIssues.Cart.GetFirstShipment().ShippingMethodId == Guid.Empty) { _checkoutService.UpdateShippingMethods(CartWithValidationIssues.Cart, _shipmentViewModelFactory.CreateShipmentsViewModel(CartWithValidationIssues.Cart).ToList()); _orderRepository.Save(CartWithValidationIssues.Cart); } var viewModel = CreateCheckoutViewModel(currentPage); viewModel.OrderSummary = _orderSummaryViewModelFactory.CreateOrderSummaryViewModel(CartWithValidationIssues.Cart); viewModel.BillingAddress = _addressBookService.ConvertToModel(CartWithValidationIssues.Cart.GetFirstForm()?.Payments.FirstOrDefault()?.BillingAddress); _addressBookService.LoadAddress(viewModel.BillingAddress); if (viewModel.Shipments.Count == 1) { viewModel.BillingAddressType = 2; } else if (Request.IsAuthenticated) { viewModel.BillingAddressType = 1; } else { viewModel.BillingAddressType = 0; } var shippingAddressType = Request.IsAuthenticated ? 1 : 0; for (var i = 0; i < viewModel.Shipments.Count; i++) { if (string.IsNullOrEmpty(viewModel.Shipments[i].Address.AddressId)) { viewModel.Shipments[i].ShippingAddressType = shippingAddressType; } else { viewModel.Shipments[i].ShippingAddressType = 1; } } if (TempData[Constant.ErrorMessages] != null) { ViewBag.ErrorMessages = (string)TempData[Constant.ErrorMessages]; } return(View("Checkout", viewModel)); }
public IActionResult Index(SubscriptionDetailPage currentPage, int paymentPlanId = 0) { var paymentDetail = OrderContext.Current.Get <PaymentPlan>(paymentPlanId); var viewModel = new SubscriptionDetailViewModel(currentPage) { CurrentContent = currentPage, PaymentPlan = paymentDetail }; //Get order that created by var purchaseOrders = OrderContext.Current.LoadByCustomerId <PurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId()) .OrderByDescending(x => x.Created) .Where(x => x.ParentOrderGroupId.Equals(paymentPlanId)) .ToList(); var orders = new OrderHistoryViewModel { Orders = new List <OrderViewModel>() }; foreach (var purchaseOrder in purchaseOrders) { // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = new AddressModel(); var payment = form.Payments.FirstOrDefault(); if (payment != null) { billingAddress = _addressBookService.ConvertToModel(payment.BillingAddress); } var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = billingAddress, ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in purchaseOrder.OrderForms.Cast <IOrderForm>().SelectMany(x => x.Shipments).Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); } orders.Orders.Add(orderViewModel); } orders.OrderDetailsPageUrl = UrlResolver.Current.GetUrl(_settingsService.GetSiteSettings <ReferencePageSettings>()?.OrderDetailsPage ?? ContentReference.StartPage); viewModel.Orders = orders; return(View(viewModel)); }
public ActionResult Index(OrderHistoryPage currentPage, int?page, int?size) { var pageNum = page ?? 1; var pageSize = size ?? 10; var orders = _orderRepository.Load <IPurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId(), _cartService.DefaultCartName); var purchaseOrders = orders .OrderByDescending(x => x.Created) .Skip((pageNum - 1) * pageSize) .Take(pageSize) .ToList(); var viewModel = new OrderHistoryViewModel(currentPage) { CurrentContent = currentPage, Orders = new List <OrderViewModel>() }; foreach (var purchaseOrder in purchaseOrders) { // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = new AddressModel(); var payment = form.Payments.FirstOrDefault(); if (payment != null) { billingAddress = _addressBookService.ConvertToModel(payment.BillingAddress); } var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = billingAddress, ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in purchaseOrder.Forms.SelectMany(x => x.Shipments).Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); } viewModel.Orders.Add(orderViewModel); } viewModel.OrderDetailsPageUrl = UrlResolver.Current.GetUrl(_contentLoader.Get <CommerceHomePage>(ContentReference.StartPage).OrderDetailsPage); viewModel.PagingInfo.PageNumber = pageNum; viewModel.PagingInfo.TotalRecord = orders.Count(); viewModel.PagingInfo.PageSize = pageSize; viewModel.OrderHistoryUrl = currentPage.StaticLinkURL; return(View(viewModel)); }
public ActionResult Index(OrderHistoryPage currentPage) { var storeAppPurchaseOrders = _orderRepository.Load <IPurchaseOrder>(_customerContext.CurrentContactId, "StoreApp") .OrderByDescending(x => x.Created) .ToList(); var purchaseOrders = _orderRepository.Load <IPurchaseOrder>(_customerContext.CurrentContactId) .OrderByDescending(x => x.Created) .ToList(); var viewModel = new OrderHistoryViewModel { CurrentPage = currentPage, Orders = new List <OrderViewModel>() }; foreach (var purchaseOrder in purchaseOrders.Union(storeAppPurchaseOrders).OrderByDescending(x => x.Created)) { // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = new AddressModel(); var payment = form.Payments.FirstOrDefault(); if (payment != null) { billingAddress = _addressBookService.ConvertToModel(payment.BillingAddress); } var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = billingAddress, ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in purchaseOrder.Forms.SelectMany(x => x.Shipments).Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); } viewModel.Orders.Add(orderViewModel); } return(View(viewModel)); }
public virtual IEnumerable <ShipmentViewModel> CreateShipmentsViewModel(ICart cart) { foreach (var shipment in cart.GetFirstForm().Shipments) { var shipmentModel = new ShipmentViewModel { ShipmentId = shipment.ShipmentId, CartItems = new List <CartItemViewModel>(), Address = _addressBookService.ConvertToModel(shipment.ShippingAddress), ShippingMethods = CreateShippingMethodViewModels(cart.Market, cart.Currency, shipment) }; shipmentModel.ShippingMethodId = shipment.ShippingMethodId == Guid.Empty ? shipmentModel.ShippingMethods.First().Id : shipment.ShippingMethodId; var variants = _contentLoader.GetItems(shipment.LineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), _preferredCulture).OfType <VariationContent>(); foreach (var lineItem in shipment.LineItems) { var variant = variants.Single(x => x.Code == lineItem.Code); var productLink = variant.GetParentProducts(_relationRepository).FirstOrDefault(); if (ContentReference.IsNullOrEmpty(productLink)) { continue; } shipmentModel.CartItems.Add(_cartItemViewModelFactory.CreateCartItemViewModel(cart, lineItem, variant)); } yield return(shipmentModel); } }
public virtual IEnumerable <ShipmentViewModel> CreateShipmentsViewModel(ICart cart) { foreach (var shipment in cart.GetFirstForm().Shipments) { var shipmentModel = new ShipmentViewModel { ShipmentId = shipment.ShipmentId, CartItems = new List <CartItemViewModel>(), Address = _addressBookService.ConvertToModel(shipment.ShippingAddress), ShippingMethods = CreateShippingMethodViewModels(cart.MarketId, cart.Currency, shipment) }; shipmentModel.ShippingMethodId = shipment.ShippingMethodId == Guid.Empty && shipmentModel.ShippingMethods.Any() ? shipmentModel.ShippingMethods.First().Id : shipment.ShippingMethodId; var entries = _catalogContentService.GetItems <EntryContentBase>(shipment.LineItems.Select(x => x.Code)); foreach (var lineItem in shipment.LineItems) { var entry = entries.FirstOrDefault(x => x.Code == lineItem.Code); if (entry == null) { //Entry was deleted, skip processing. continue; } shipmentModel.CartItems.Add(_cartItemViewModelFactory.CreateCartItemViewModel(cart, lineItem, entry)); } yield return(shipmentModel); } }
private IList <AddressModel> GetAvailableShippingAddresses(ICart cart) { var addresses = _addressBookService.List(); foreach (var address in addresses.Where(x => string.IsNullOrEmpty(x.Name))) { address.Name = _localizationService.GetString("/Shared/Address/DefaultAddressName"); } if (cart != null) { foreach (var shipment in cart.GetFirstForm().Shipments) { if (shipment.ShippingAddress == null) { continue; } var shipmentAddress = _addressBookService.ConvertToModel(shipment.ShippingAddress); var savedAddress = addresses.FirstOrDefault(x => x.IsEqual(shipmentAddress)); if (savedAddress != null) { continue; } if (addresses.Any(x => x.AddressId.Equals(shipmentAddress.AddressId))) { shipmentAddress.AddressId = shipmentAddress.Name = Guid.NewGuid().ToString(); } addresses.Add(shipmentAddress); } } return(addresses); }
private OrderSearchBlockViewModel CreateViewModel(OrderSearchBlock currentBlock, OrderFilter filter) { var purchaseOrders = OrderContext.Current.LoadByCustomerId <PurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId()) .OrderByDescending(x => x.Created) .ToList(); var viewModel = new OrderSearchBlockViewModel(currentBlock) { CurrentCustomer = _customerService.GetCurrentContact(), Filter = filter }; foreach (var purchaseOrder in purchaseOrders) { //Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = form.Payments.FirstOrDefault() != null?form.Payments.First().BillingAddress : new OrderAddress(); var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = _addressBookService.ConvertToModel(billingAddress), ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in form.Shipments.Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); orderViewModel.OrderGroupId = purchaseOrder.OrderGroupId; } orderViewModel.OrderTotal = _orderGroupCalculator.GetTotal(purchaseOrder); orderViewModel.OrderPayments = form.Payments.ToList(); if (FilterOrder(filter, orderViewModel)) { viewModel.Orders.Add(orderViewModel); } } return(viewModel); }
private List <OrderViewModel> GetOrderHistoryViewModels() { var purchaseOrders = _orderRepository.Load <IPurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId(), _cartService.DefaultCartName) .OrderByDescending(x => x.Created).ToList(); if (purchaseOrders.Count > 3) { purchaseOrders = purchaseOrders.Take(3).ToList(); } var viewModel = new List <OrderViewModel>(); foreach (var purchaseOrder in purchaseOrders) { // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = new AddressModel(); var payment = form.Payments.FirstOrDefault(); if (payment != null) { billingAddress = _addressBookService.ConvertToModel(payment.BillingAddress); } var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = billingAddress, ShippingAddresses = new List <AddressModel>(), OrderGroupId = purchaseOrder.OrderLink.OrderGroupId }; foreach (var orderAddress in purchaseOrder.Forms.SelectMany(x => x.Shipments).Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); } viewModel.Add(orderViewModel); } return(viewModel); }
public ActionResult BillingInformation(CheckoutPage currentPage, int?addressType) { var viewModel = CreateCheckoutViewModel(currentPage); viewModel.OrderSummary = _orderSummaryViewModelFactory.CreateOrderSummaryViewModel(CartWithValidationIssues.Cart); viewModel.BillingAddress = _addressBookService.ConvertToModel(CartWithValidationIssues.Cart.GetFirstForm()?.Payments.FirstOrDefault()?.BillingAddress); _addressBookService.LoadAddress(viewModel.BillingAddress); if (addressType == null && Request.IsAuthenticated) { viewModel.AddressType = 1; } else if (addressType == null) { viewModel.AddressType = 0; } else { viewModel.AddressType = addressType.Value; } return(View("BillingInformation", viewModel)); }
public virtual IEnumerable <ShipmentViewModel> CreateShipmentsViewModel(ICart cart) { var preferredCulture = _languageResolver.GetPreferredCulture(); foreach (var shipment in cart.GetFirstForm().Shipments) { var shipmentModel = new ShipmentViewModel { ShipmentId = shipment.ShipmentId, CartItems = new List <CartItemViewModel>(), Address = _addressBookService.ConvertToModel(shipment.ShippingAddress), ShippingMethods = CreateShippingMethodViewModels(cart.MarketId, cart.Currency, shipment) }; var currentShippingMethod = shipmentModel.ShippingMethods.FirstOrDefault(); if (shipment.ShippingMethodId != Guid.Empty) { currentShippingMethod = shipmentModel.ShippingMethods.FirstOrDefault(x => x.Id == shipment.ShippingMethodId); } else { currentShippingMethod = shipmentModel.ShippingMethods.FirstOrDefault(); } shipmentModel.ShippingMethodId = currentShippingMethod?.Id ?? shipment.ShippingMethodId; shipmentModel.CurrentShippingMethodName = currentShippingMethod?.DisplayName ?? "In store pickup"; shipmentModel.CurrentShippingMethodPrice = currentShippingMethod?.Price ?? new Money(0, cart.Currency); shipmentModel.WarehouseCode = shipment.WarehouseCode; var entries = _contentLoader.GetItems(shipment.LineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), preferredCulture).OfType <EntryContentBase>(); foreach (var lineItem in shipment.LineItems) { var entry = entries.FirstOrDefault(x => x.Code == lineItem.Code); if (entry == null) { //Entry was deleted, skip processing. continue; } shipmentModel.CartItems.Add(_cartItemViewModelFactory.CreateCartItemViewModel(cart, lineItem, entry)); } yield return(shipmentModel); } }
public override IViewComponentResult Invoke(OrderHistoryBlock currentBlock) { var purchaseOrders = OrderContext.Current.LoadByCustomerId <PurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId()) .OrderByDescending(x => x.Created) .ToList(); var viewModel = new OrderHistoryViewModel { CurrentBlock = currentBlock, Orders = new List <OrderViewModel>(), CurrentCustomer = _customerService.GetCurrentContact() }; foreach (var purchaseOrder in purchaseOrders) { //Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = form.Payments.FirstOrDefault() != null?form.Payments.First().BillingAddress : new OrderAddress(); var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = _addressBookService.ConvertToModel(billingAddress), ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in form.Shipments.Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); orderViewModel.OrderGroupId = purchaseOrder.OrderGroupId; } if (!string.IsNullOrEmpty(purchaseOrder[Constant.Quote.QuoteStatus]?.ToString()) && (purchaseOrder.Status == OrderStatus.InProgress.ToString() || purchaseOrder.Status == OrderStatus.OnHold.ToString())) { orderViewModel.QuoteStatus = purchaseOrder[Constant.Quote.QuoteStatus].ToString(); DateTime.TryParse(purchaseOrder[Constant.Quote.QuoteExpireDate].ToString(), out var quoteExpireDate); if (DateTime.Compare(DateTime.Now, quoteExpireDate) > 0) { orderViewModel.QuoteStatus = Constant.Quote.QuoteExpired; try { // Update order quote status to expired purchaseOrder[Constant.Quote.QuoteStatus] = Constant.Quote.QuoteExpired; _orderRepository.Save(purchaseOrder); } catch (Exception ex) { LogManager.GetLogger(GetType()).Error("Failed to update order status to Quote Expired.", ex.StackTrace); } } } viewModel.Orders.Add(orderViewModel); } viewModel.OrderDetailsPageUrl = UrlResolver.Current.GetUrl(_settingsService.GetSiteSettings <ReferencePageSettings>()?.OrderDetailsPage ?? ContentReference.StartPage); return(View(viewModel)); }
public ActionResult Index(OrderHistoryPage currentPage, OrderFilter filter, int?page, int?size, int?isPaging) { if (isPaging.HasValue) { filter = GetFilter(); } else { SetCookieFilter(filter); } var pageNum = page ?? 1; var pageSize = size ?? 10; var orders = _orderRepository.Load <IPurchaseOrder>(PrincipalInfo.CurrentPrincipal.GetContactId(), _cartService.DefaultCartName); var purchaseOrders = FilterOrders(orders, filter) .OrderByDescending(x => x.Created) .Skip((pageNum - 1) * pageSize) .Take(pageSize) .ToList(); var viewModel = new OrderHistoryViewModel(currentPage) { CurrentContent = currentPage, Orders = new List <OrderViewModel>(), }; OrderFilter.LoadDefault(filter, _paymentMethodViewModelFactory); LoadAvailableAddresses(filter); foreach (var purchaseOrder in purchaseOrders) { // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = new AddressModel(); var payment = form.Payments.FirstOrDefault(); if (payment != null) { billingAddress = _addressBookService.ConvertToModel(payment.BillingAddress); } var orderViewModel = new OrderViewModel { PurchaseOrder = purchaseOrder, Items = form.GetAllLineItems().Select(lineItem => new OrderHistoryItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => group.First()), BillingAddress = billingAddress, ShippingAddresses = new List <AddressModel>() }; foreach (var orderAddress in purchaseOrder.Forms.SelectMany(x => x.Shipments).Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); } viewModel.Orders.Add(orderViewModel); } viewModel.OrderDetailsPageUrl = UrlResolver.Current.GetUrl(_settingsService.GetSiteSettings <ReferencePageSettings>()?.OrderDetailsPage ?? ContentReference.StartPage); viewModel.PagingInfo.PageNumber = pageNum; viewModel.PagingInfo.TotalRecord = purchaseOrders.Count(); viewModel.PagingInfo.PageSize = pageSize; viewModel.OrderHistoryUrl = Request.Url.PathAndQuery; viewModel.Filter = filter; return(View(viewModel)); }
private OrderDetailsViewModel GetModel(int orderGroupId, OrderDetailsPage currentPage) { var orderViewModel = new OrderDetailsViewModel { CurrentContent = currentPage, CurrentCustomer = _customerService.GetCurrentContactViewModel() }; var purchaseOrder = OrderContext.Current.Get <PurchaseOrder>(orderGroupId); if (purchaseOrder == null) { return(orderViewModel); } var currentContact = _customerService.GetCurrentContact(); var currentOrganization = currentContact.FoundationOrganization; if (currentOrganization != null) { var usersOrganization = _customerService.GetContactsForOrganization(currentOrganization); if (!usersOrganization.Where(x => x.ContactId == purchaseOrder.CustomerId).Any()) { return(orderViewModel); } } else { if (currentContact.ContactId != purchaseOrder.CustomerId) { return(orderViewModel); } } // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = form.Payments.FirstOrDefault() != null ? form.Payments.First().BillingAddress : new OrderAddress(); orderViewModel.PurchaseOrder = purchaseOrder; orderViewModel.Items = form.Shipments.SelectMany(shipment => shipment.LineItems.Select(lineitem => new OrderDetailsItemViewModel { LineItem = lineitem, Shipment = shipment, PurchaseOrder = orderViewModel.PurchaseOrder as PurchaseOrder, } )); orderViewModel.BillingAddress = _addressBookService.ConvertToModel(billingAddress); orderViewModel.ShippingAddresses = new List <AddressModel>(); foreach (var orderAddress in form.Shipments.Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); orderViewModel.OrderGroupId = purchaseOrder.OrderGroupId; } if (purchaseOrder[Constant.Quote.QuoteExpireDate] != null && !string.IsNullOrEmpty(purchaseOrder[Constant.Quote.QuoteExpireDate].ToString())) { DateTime.TryParse(purchaseOrder[Constant.Quote.QuoteExpireDate].ToString(), out var quoteExpireDate); if (DateTime.Compare(DateTime.Now, quoteExpireDate) > 0) { orderViewModel.QuoteStatus = Constant.Quote.QuoteExpired; try { // Update order quote status to expired purchaseOrder[Constant.Quote.QuoteStatus] = Constant.Quote.QuoteExpired; _orderRepository.Save(purchaseOrder); } catch (Exception ex) { LogManager.GetLogger(GetType()).Error("Failed to update order status to Quote Expired.", ex.StackTrace); } } } if (!string.IsNullOrEmpty(purchaseOrder["QuoteStatus"]?.ToString()) && (purchaseOrder.Status == OrderStatus.InProgress.ToString() || purchaseOrder.Status == OrderStatus.OnHold.ToString())) { orderViewModel.QuoteStatus = purchaseOrder["QuoteStatus"].ToString(); } orderViewModel.BudgetPayment = _ordersService.GetOrderBudgetPayment(purchaseOrder); return(orderViewModel); }
//[OutputCache(Duration = 0, NoStore = true)] public IActionResult Index(CheckoutPage currentPage, int?isGuest) { if (CartIsNullOrEmpty()) { return(View("EmptyCart", new CheckoutMethodViewModel(currentPage))); } if (!HttpContext.User.Identity.IsAuthenticated && (!isGuest.HasValue || isGuest.Value != 1)) { return(RedirectToAction("CheckoutMethod", new { node = currentPage.ContentLink })); } if (CartWithValidationIssues.Cart.GetFirstShipment().ShippingMethodId == Guid.Empty) { _checkoutService.UpdateShippingMethods(CartWithValidationIssues.Cart, _shipmentViewModelFactory.CreateShipmentsViewModel(CartWithValidationIssues.Cart).ToList()); _orderRepository.Save(CartWithValidationIssues.Cart); } var viewModel = CreateCheckoutViewModel(currentPage); viewModel.OrderSummary = _orderSummaryViewModelFactory.CreateOrderSummaryViewModel(CartWithValidationIssues.Cart); viewModel.BillingAddress = _addressBookService.ConvertToModel(CartWithValidationIssues.Cart.GetFirstForm()?.Payments.FirstOrDefault()?.BillingAddress); _addressBookService.LoadAddress(viewModel.BillingAddress); var shipmentBillingTypes = TempData["ShipmentBillingTypes"] as List <KeyValuePair <string, int> >; if (shipmentBillingTypes != null && shipmentBillingTypes.Any(x => x.Key == "Billing")) { viewModel.BillingAddressType = 0; } else { if (viewModel.Shipments.Count == 1) { viewModel.BillingAddressType = 2; } else if (HttpContext.User.Identity.IsAuthenticated) { viewModel.BillingAddressType = 1; } else { viewModel.BillingAddressType = 0; } } var shippingAddressType = HttpContext.User.Identity.IsAuthenticated ? 1 : 0; for (var i = 0; i < viewModel.Shipments.Count; i++) { if (shipmentBillingTypes != null && shipmentBillingTypes.Where(x => x.Key == "Shipment").Any(x => x.Value == i)) { viewModel.Shipments[i].ShippingAddressType = 0; } else { if (string.IsNullOrEmpty(viewModel.Shipments[i].Address.AddressId)) { viewModel.Shipments[i].ShippingAddressType = shippingAddressType; } else { viewModel.Shipments[i].ShippingAddressType = 1; } } } if (TempData[Constant.ErrorMessages] != null) { ViewBag.ErrorMessages = (string)TempData[Constant.ErrorMessages]; } var tempDataState = TempData["ModelState"] as List <KeyValuePair <string, string> >; if (tempDataState != null) { foreach (var e in tempDataState) { ViewData.ModelState.AddModelError(e.Key, e.Value); } } return(View("Checkout", viewModel)); }
public ActionResult Index(OrderDetailsPage currentPage, int orderGroupId = 0) { var orderViewModel = new OrderDetailsViewModel { CurrentPage = currentPage, CurrentCustomer = _customerService.GetCurrentContact() }; var purchaseOrder = OrderContext.Current.GetPurchaseOrderById(orderGroupId); if (purchaseOrder == null) { return(View(orderViewModel)); } // Assume there is only one form per purchase. var form = purchaseOrder.GetFirstForm(); var billingAddress = form.Payments.FirstOrDefault() != null ? form.Payments.First().BillingAddress : new OrderAddress(); orderViewModel.PurchaseOrder = purchaseOrder; orderViewModel.Items = form.GetAllLineItems().Select(lineItem => new OrderDetailsItemViewModel { LineItem = lineItem, }).GroupBy(x => x.LineItem.Code).Select(group => @group.First()); orderViewModel.BillingAddress = _addressBookService.ConvertToModel(billingAddress); orderViewModel.ShippingAddresses = new List <AddressModel>(); foreach (var orderAddress in form.Shipments.Select(s => s.ShippingAddress)) { var shippingAddress = _addressBookService.ConvertToModel(orderAddress); orderViewModel.ShippingAddresses.Add(shippingAddress); orderViewModel.OrderGroupId = purchaseOrder.OrderGroupId; } if (purchaseOrder[Constants.Quote.QuoteExpireDate] != null && !string.IsNullOrEmpty(purchaseOrder[Constants.Quote.QuoteExpireDate].ToString())) { DateTime quoteExpireDate; DateTime.TryParse(purchaseOrder[Constants.Quote.QuoteExpireDate].ToString(), out quoteExpireDate); if (DateTime.Compare(DateTime.Now, quoteExpireDate) > 0) { orderViewModel.QuoteStatus = Constants.Quote.QuoteExpired; try { // Update order quote status to expired purchaseOrder[Constants.Quote.QuoteStatus] = Constants.Quote.QuoteExpired; _orderRepository.Save(purchaseOrder); } catch (Exception ex) { LogManager.GetLogger(GetType()).Error("Failed to update order status to Quote Expired.", ex.StackTrace); } } } if (!string.IsNullOrEmpty(purchaseOrder["QuoteStatus"]?.ToString()) && (purchaseOrder.Status == OrderStatus.InProgress.ToString() || purchaseOrder.Status == OrderStatus.OnHold.ToString())) { orderViewModel.QuoteStatus = purchaseOrder["QuoteStatus"].ToString(); } orderViewModel.BudgetPayment = _ordersService.GetOrderBudgetPayment(purchaseOrder); return(View(orderViewModel)); }