Beispiel #1
0
        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,
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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
            });
        }