public ActionResult OrderHistoryDetails(DateTime?orderDate) //id - номер заказа { UserOrderDetailsViewModel orderDetails = new UserOrderDetailsViewModel(); List <UserOrderDetailsItem> orderDetailsItems = new List <UserOrderDetailsItem>(); using (var client = new OrderServiceClient()) // получаем данные заказа { //надо найти сам заказа var order = client.GetOrders().FirstOrDefault(o => o.OrderDate == orderDate); orderDetails.Id = order.Id; orderDetails.UserName = System.Web.HttpContext.Current.User.Identity.Name; orderDetails.OrderPrice = order.OrderPrice; orderDetails.Details = new Func <IEnumerable <UserOrderDetailsItem> >(() => { foreach (var orderItem in client.GetOrderDetails().Where(o => o.OrderId == order.Id)) { orderDetailsItems.Add(new UserOrderDetailsItem { Id = orderItem.Id, ProductName = orderItem.Product, Quantity = orderItem.Quantity, TotalPrice = orderItem.TotalPrice }); } return(orderDetailsItems.AsEnumerable()); })(); } return(View(orderDetails)); //UserOrderDetailsViewModel }
// /Orders/UserOrders/UserOrderDetails public UserOrderDetailsViewModel GetUserDetailsById(int id) { var order = this.ordersRepository.All().Where(x => x.Id == id).FirstOrDefault(); if (order is null) { throw new ArgumentException("Order not exists."); } var model = new UserOrderDetailsViewModel() { CreatedOn = order.CreatedOn.ToLocalTime().ToString("dd/MM/yyyy HH:mm"), OrderId = order.Id, TakeAway = order.TakeAway, CartItems = order.Bag.CartItems .Select(x => new ShopingItemsViewModel() { ProductId = x.ProductId, ProductName = x.Product.Name, ProductPrice = x.Size.Price, Quantity = x.Quantity, Description = x.Description, Size = new ProductSizeViewModel() { SizeName = this.sizeRepository .All() .Where(s => s.MenuProductId == x.ProductId) .Count() > 1 ? x.Size.SizeName : null, }, Extras = x.ExtraItems ?.Select(e => new ExtraCartItemModel() { Name = e.Extra.Name, Price = e.Extra.Price, Quantity = e.Quantity, }).ToList(), }).ToList(), Status = order.Status, PackagesPrice = order.Bag.CartItems.Sum(x => (decimal)Math.Ceiling((double)x.Size.MaxProductsInPackage / x.Quantity) * x.Size.Package.Price), }; model.TotalPrice = model.CartItems.Sum(x => x.ItemPrice) + model.PackagesPrice; if (order.DeliveryTaxId.HasValue) { var x = this.deliveryTaxRepository.All().Where(x => x.Id == order.DeliveryTaxId).FirstOrDefault().Price; model.TotalPrice += x; model.DeliveryFee = x; } if (model.Status != OrderStatus.Unprocessed) { model.TimeForDelivery = order.ProcessingTime.ToLocalTime().AddMinutes((double)order.MinutesForDelivery).ToString("dd/MM/yyyy HH:mm"); } return(model); }
public IActionResult UserOrderDetails(int Id) { UserOrderDetailsViewModel model = new UserOrderDetailsViewModel(); model.UserOrder = _userOrderRepository.GetOrder(Id); model.OrderedItems = _userOrderItemRepository.GettIemsOfOrderId(model.UserOrder.OrderId); return(View(model)); }
// GET: AccountOrders public async Task <IActionResult> Order(int id) { UserModel user = _userService.GetCurrentUser(HttpContext); OrderModel order = await _orderService.GetOrderById(id); if (order.User.ID != user.ID) { return(RedirectToAction("Orders")); } var products = await _productService.GetProductsByIdList(order.Cart.ItemList.Select(id => id.ProductId).ToList()); UserOrderDetailsViewModel userOrderDetailsViewModel = new UserOrderDetailsViewModel(); userOrderDetailsViewModel.order = order; userOrderDetailsViewModel.products = products; var contact = _contactService.Get(); ViewData["contact"] = contact; var categories = await _categoryService.GetAll(); ViewData["Categories"] = categories; return(View(userOrderDetailsViewModel)); }