public async Task <IActionResult> Index() { var userRepo = (Repository.IUser) this._services.GetService(typeof(Repository.IUser)); var orderRepo = (Repository.IOrder) this._services.GetService(typeof(Repository.IOrder)); var userId = Guid.Parse(HttpContext.User.FindFirst(claim => claim.Type == Auth.Claim.UserId).Value); var user = await userRepo.GetUserById(userId); var location = await userRepo.GetDefaultLocation(user); var currentOrder = await userRepo.GetOpenOrder(user, location); var orderLines = orderRepo.GetOrderLines(userId, currentOrder.OrderId); var model = new Model.View.Checkout(); foreach (var item in orderLines) { var checkoutItem = new Model.Input.CartItem(); checkoutItem.Id = item.Product.ProductId; checkoutItem.Name = item.Product.Name; checkoutItem.UnitPrice = item.Product.Price; checkoutItem.Quantity = item.Quantity; checkoutItem.ImageName = item.Product.ImageName; model.Items.Add(checkoutItem); } return(View("Checkout", model)); }
public async Task <IActionResult> Index() { var locationRepo = (Repository.ILocation) this._services.GetService(typeof(Repository.ILocation)); var userRepo = (Repository.IUser) this._services.GetService(typeof(Repository.IUser)); var orderRepo = (Repository.IOrder) this._services.GetService(typeof(Repository.IOrder)); var productRepo = (Repository.IProduct) this._services.GetService(typeof(Repository.IProduct)); var userId = Guid.Parse(HttpContext.User.FindFirst(claim => claim.Type == Auth.Claim.UserId).Value); var user = await userRepo.GetUserById(userId); var location = await userRepo.GetDefaultLocation(user); var currentOrder = await userRepo.GetOpenOrder(user, location); var orderLines = orderRepo.GetOrderLines(userId, currentOrder.OrderId); var model = new Model.Input.Cart(); var allStock = locationRepo.GetStock(currentOrder.OrderId); foreach (var item in orderLines) { var stock = allStock .Where(i => i.Item1 == item.Product.ProductId) .Select(s => s.Item2) .FirstOrDefault(); var cartItem = new Model.Input.CartItem(); cartItem.Id = item.Product.ProductId; cartItem.Name = item.Product.Name; cartItem.UnitPrice = item.Product.Price; cartItem.Quantity = item.Quantity; cartItem.ImageName = item.Product.ImageName; cartItem.Stock = stock; model.Items.Add(cartItem); } return(View("Cart", model)); }