public ActionResult 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)); }
protected OrderConfirmationViewModel <T> CreateViewModel(T currentPage, IPurchaseOrder order) { if (order == null) { return(new OrderConfirmationViewModel <T> { CurrentPage = currentPage }); } var totals = _orderGroupTotalsCalculator.GetTotals(order); return(new OrderConfirmationViewModel <T> { Currency = order.Currency, CurrentPage = currentPage, HasOrder = true, OrderId = order.OrderNumber, Created = order.Created, BillingAddress = _addressBookService.ConvertToModel(order.GetFirstForm().Payments.First().BillingAddress), ContactId = CustomerContext.CurrentContactId, Payments = order.GetFirstForm().Payments.Where(c => c.TransactionType == TransactionType.Authorization.ToString() || c.TransactionType == TransactionType.Sale.ToString()), OrderGroupId = order.OrderLink.OrderGroupId, OrderLevelDiscountTotal = order.GetOrderDiscountTotal(order.Currency), ShippingSubTotal = order.GetShippingSubTotal(), ShippingDiscountTotal = order.GetShippingDiscountTotal(), ShippingTotal = totals.ShippingTotal, HandlingTotal = totals.HandlingTotal, TaxTotal = totals.TaxTotal, CartTotal = totals.Total, Shipments = order.Forms.SelectMany(x => x.Shipments).Select(x => new ShipmentConfirmationViewModel { Address = _addressBookService.ConvertToModel(x.ShippingAddress), LineItems = x.LineItems, ShipmentCost = x.GetShippingCost(order.Market, order.Currency), DiscountPrice = x.GetShipmentDiscountPrice(order.Currency), ShippingItemsTotal = x.GetShippingItemsTotal(order.Currency), ShippingMethodName = x.ShippingMethodName, }) }); }