public async Task <BasketViewModel> GetBasketViewModel() { int basketId = await GetOrCreateBasketIdAsync(); var specBasket = new BasketWithItemsSpecification(basketId); var basket = await _basketRepository.FirstOrDefaultAsync(specBasket); var productIds = basket.Items.Select(x => x.ProductId).ToArray(); var specProducts = new ProductsSpecification(productIds); var products = await _productRepository.ListAsync(specProducts); var basketItems = new List <BasketItemViewModel>(); foreach (var item in basket.Items.OrderBy(x => x.Id)) { var product = products.First(x => x.Id == item.ProductId); basketItems.Add(new BasketItemViewModel() { Id = item.Id, ProductId = item.ProductId, Quantity = item.Quantity, ProductName = product.Name, Price = product.Price, PictureUri = product.PictureUri }); } return(new BasketViewModel() { Id = basketId, BuyerId = basket.BuyerId, Items = basketItems, }); }
public async Task <int> CreateOrderAsync(int basketId, string firstName, string lastName, Address address) { // get the basket with items var specBasket = new BasketWithItemsSpecification(basketId); var basket = await _basketRepository.FirstOrDefaultAsync(specBasket); // get the list of products in basket var specProducts = new ProductsSpecification(basket.Items.Select(x => x.ProductId).ToArray()); var products = await _productRepository.ListAsync(specProducts); // create order var order = new Order() { BuyerId = basket.BuyerId, FirstName = firstName, LastName = lastName, ShipToAddress = address, OrderItems = basket.Items.Select(x => { var product = products.First(p => p.Id == x.ProductId); return(new OrderItem() { ProductId = x.ProductId, ProductName = product.Name, PictureUri = product.PictureUri, UnitPrice = x.UnitPrice, Units = x.Quantity }); }).ToList() }; // save order order = await _orderRepository.AddAsync(order); return(order.Id); }
public async Task CreateOrderAsync(int basketId, Address shippingAddress) { var spec = new BasketWithItemsSpecification(basketId); var basket = await _basketRepository.FirstOrDefaultAsync(spec); var specProducts = new ProductsSpecification(basket.BasketItems.Select(x => x.ProductId).ToArray()); var products = await _productRepository.ListAsync(specProducts); Order order = new Order() { OrderDate = DateTimeOffset.Now, ShiptoAddress = shippingAddress, BuyerId = basket.BuyerId, OrderItems = basket.BasketItems.Select(x => { var product = products.First(p => p.Id == x.ProductId); return(new OrderItem() { ProductId = x.ProductId, Quantity = x.Quantity, PictureUri = product.PictureUri, Price = product.Price, ProductName = product.Name }); }).ToList() }; await _orderRepository.AddAsync(order); }
public async Task <BasketViewModel> GetBasketViewModel() { int basketId = await GetOrCreateBasketIdAsync(); var specBasket = new BasketWithItemsSpecification(basketId);//sepeti öğeleriyle getirdik var basket = await _basketRepository.FirstOrDefaultAsync(specBasket); var productsIds = basket.Items.Select(x => x.ProductId).ToArray();//sepetteki öğelerin ilişkili olduğu urunleri getirdik var specProducts = new ProductsSpecification(productsIds); var products = await _productRepository.ListAsync(specProducts); var basketItems = new List <BasketItemViewModel>();//sepet ögelerini ürünbilgileriyle birlikte BasketItemViewModel nesnelerini oluşturduk ve listeye ekledik foreach (var item in basket.Items.OrderBy(x => x.Id)) { var product = products.First(x => x.Id == item.ProductId); basketItems.Add(new BasketItemViewModel() { Id = item.Id, ProductId = item.ProductId, Quantity = item.Quantity, ProductName = product.Name, Price = product.Price, PictureUri = product.PictureUri }); } return(new BasketViewModel()//sepet ögelerii ile basketViewModeli oluşturduk. Sepet sayfasında göstereceğimiz şeyleri. { Id = basketId, BuyerId = basket.BuyerId, Items = basketItems }); }