コード例 #1
0
        /// <summary>
        /// Adds shopping cart into the database
        /// </summary>
        /// <param name="model">Model which is used to create Shopping Cart entity</param>
        /// <returns>Message model with error message in case of error or success message.</returns>
        public async Task <MessageViewModel> AddAsync(AddToCartViewModel model)
        {
            var messageViewModel = new MessageViewModel();
            var userCart         = await this.GetOrCreateUserCartAsync(model.UserId);

            var productToAdd = this.dbContext.Products.FirstOrDefault(p => p.Id == model.ProductId);

            if (productToAdd == null)
            {
                messageViewModel.SetError($"Продукт с ID {model.ProductId} не съществува.");
                return(messageViewModel);
            }

            if (userCart.ShoppingCartDetails.Any(scd => scd.ProductId == productToAdd.Id))
            {
                var productDetails = userCart.ShoppingCartDetails.FirstOrDefault(scd => scd.ProductId == productToAdd.Id);
                productDetails.Quantity++;

                if (productToAdd.AvailableQuantity < productDetails.Quantity)
                {
                    messageViewModel.SetError($"Недостатъчно количесто, в момента наличното е: {productToAdd.AvailableQuantity}.");
                    return(messageViewModel);
                }

                this.dbContext.ShoppingCartDetails.Update(productDetails);
                await this.dbContext.SaveChangesAsync();
            }
            else
            {
                if (productToAdd.AvailableQuantity < model.Quantity)
                {
                    messageViewModel.SetError($"Недостатъчно количесто, в момента наличното е: {productToAdd.AvailableQuantity}.");
                    return(messageViewModel);
                }

                ShoppingCartDetails shoppingCartDetails = new ShoppingCartDetails
                {
                    ProductId      = productToAdd.Id,
                    Quantity       = model.Quantity,
                    ShoppingCartId = userCart.Id
                };

                await this.dbContext.ShoppingCartDetails.AddAsync(shoppingCartDetails);

                await dbContext.SaveChangesAsync();
            }

            messageViewModel.SetSuccess("Продуктът успешно беше добавен към вашата количка.");
            return(messageViewModel);
        }
コード例 #2
0
        /// <summary>
        /// Updates the shopping cart from the given model
        /// </summary>
        /// <param name="shoppingCartViewModel">Model which is used to update the shopping cart</param>
        /// <returns>Message model with error message in case of error or success message.</returns>
        public async Task <MessageViewModel> UpdateAsync(ShoppingCartViewModel shoppingCartViewModel)
        {
            var messageViewModel = new MessageViewModel();

            foreach (var item in shoppingCartViewModel.ShoppingCartItems)
            {
                var shoppingCartItem = await this.dbContext.ShoppingCartDetails
                                       .Select(scd => new ShoppingCartDetails
                {
                    Id             = scd.Id,
                    Product        = scd.Product,
                    ProductId      = scd.ProductId,
                    Quantity       = scd.Quantity,
                    ShoppingCartId = scd.ShoppingCartId
                })
                                       .FirstOrDefaultAsync(scd => scd.Id == item.Id);

                if (shoppingCartItem == null)
                {
                    messageViewModel.SetError($"Предмет с ID {shoppingCartItem.Id} съществува.");
                    return(messageViewModel);
                }

                if (item.Quantity > shoppingCartItem.Product.AvailableQuantity)
                {
                    messageViewModel.SetError($"Недостатъчно количесто, в момента наличното е: {shoppingCartItem.Product.AvailableQuantity}.");
                    return(messageViewModel);
                }

                shoppingCartItem.Quantity = item.Quantity;
                this.dbContext.ShoppingCartDetails.Update(shoppingCartItem);
            }

            await this.dbContext.SaveChangesAsync();

            messageViewModel.SetSuccess("Количката беше обновена.");
            return(messageViewModel);
        }
コード例 #3
0
ファイル: CategoryService.cs プロジェクト: kolev9605/rentx
        /// <summary>
        /// Delete category from the database by Id
        /// </summary>
        /// <param name="categoryId">Category Id</param>
        /// <returns>Message model with error message in case of error or success message.</returns>
        public async Task <MessageViewModel> DeleteByIdAsync(int categoryId)
        {
            var message  = new MessageViewModel();
            var category = await this.GetCategoryById(categoryId);

            if (category.Products.Any())
            {
                message.SetError($"Категория с ID {categoryId} понеже е свързана с продукти.");
            }

            this.dbContext.Categories.Remove(category);
            var result = await this.dbContext.SaveChangesAsync();

            return(message);
        }
コード例 #4
0
ファイル: OrderService.cs プロジェクト: kolev9605/rentx
        /// <summary>
        /// Confirms order by marking it as Finished
        /// </summary>
        /// <param name="orderId">The Id of the order to confirm</param>
        /// <returns>Message model with error message in case of error or success message.</returns>
        public async Task <MessageViewModel> ConfirmOrderAsync(int orderId)
        {
            var model = new MessageViewModel();
            var order = await this.dbContext.Orders.FirstOrDefaultAsync(o => o.Id == orderId);

            if (order == null)
            {
                model.SetError("Такава поръчка не съществува.");
                return(model);
            }

            if (order.Finished)
            {
                model.SetError("Поръчката вече е завършена.");
                return(model);
            }

            order.Finished = true;
            this.dbContext.Update(order);
            await this.dbContext.SaveChangesAsync();

            model.SetSuccess("Поръчката беше завършена успешно.");
            return(model);
        }
コード例 #5
0
        /// <summary>
        /// Removes shopping cart details from the shopping cart
        /// </summary>
        /// <param name="shoppingCartDetailsId">The id of the shopping cart</param>
        /// <returns>Message model with error message in case of error or success message.</returns>
        public async Task <MessageViewModel> RemoveAsync(int shoppingCartDetailsId)
        {
            var messageViewModel = new MessageViewModel();

            var shoppingCartDetails = await this.dbContext.ShoppingCartDetails.FirstOrDefaultAsync(scd => scd.Id == shoppingCartDetailsId);

            if (shoppingCartDetails == null)
            {
                messageViewModel.SetError($"Количка с ID {shoppingCartDetailsId} не съществува.");
                return(messageViewModel);
            }

            this.dbContext.ShoppingCartDetails.Remove(shoppingCartDetails);
            await this.dbContext.SaveChangesAsync();

            messageViewModel.SetSuccess("Продуктът успешно е премахнат от количката.");
            return(messageViewModel);
        }