Example #1
0
        public async Task <EntityOperationResult <Basket> > CreateOrEditItemAsync(BasketEditDto basketEditDto)
        {
            using (var unitOfWork = _unitOfWorkFactory.MakeUnitOfWork())
            {
                var basket = unitOfWork.Basket.GetOpen(basketEditDto.UserId, basketEditDto.OrganizationId);
                if (basket == null)
                {
                    var createDto = new BasketCreateDto
                    {
                        UserId         = basketEditDto.UserId,
                        OrganizationId = basketEditDto.OrganizationId
                    };
                    foreach (var rec in basketEditDto.BasketInventoryDtos)
                    {
                        var basketInventory = new BasketInventoryCreateDto
                        {
                            DishId         = rec.DishId,
                            CountInventory = rec.CountInventory,
                            Price          = rec.Price
                        };
                        createDto.BasketInventoryDto.Add(basketInventory);
                    }

                    return(await CreateItemAsync(createDto));
                }
                else
                {
                    return(await EditItemAsync(basketEditDto));
                }
            }
        }
Example #2
0
        public IActionResult AddToBasket(string userId, int clothesId)
        {
            BasketEditDto _editModel = _servicesManager.Baskets.CreateBasketEditDto();

            _editModel.CurrentUser = userId;
            _editModel.ClothesId   = clothesId;
            _editModel.Count       = 1;
            _editModel.isProcessed = false;
            _servicesManager.Baskets.SaveBasketEditDtoToDb(_editModel);

            return(RedirectToAction("Index"));
        }
        public BasketDto SaveBasketEditDtoToDb(BasketEditDto basketEditDto)
        {
            Basket _basketDbModel;

            if (basketEditDto.Id != 0)
            {
                _basketDbModel = _dataManager.Baskets.GetBasketById(basketEditDto.Id);
            }
            else
            {
                _basketDbModel = new Basket();
            }
            _basketDbModel.CurrentUser    = basketEditDto.CurrentUser;
            _basketDbModel.Count          = basketEditDto.Count;
            _basketDbModel.isProcessed    = basketEditDto.isProcessed;
            _basketDbModel.BasketDishesId = basketEditDto.DishesId;

            _dataManager.Baskets.SaveBaskets(_basketDbModel);

            return(BasketDBToViewModelById(_basketDbModel.Id));
        }
 public BasketEditDto GetBasketEditDto(int basketId = 0)
 {
     if (basketId != 0)
     {
         var _basketDB      = _dataManager.Baskets.GetBasketById(basketId);
         var _basketEditDto = new BasketEditDto()
         {
             //Id = _basketDB.Id,
             CurrentUser = _basketDB.CurrentUser,
             DishesId    = _basketDB.BasketDishesId,
             Count       = _basketDB.Count,
             isProcessed = _basketDB.isProcessed
         };
         return(_basketEditDto);
     }
     else
     {
         return(new BasketEditDto()
         {
         });
     }
 }
Example #5
0
        public async Task <IActionResult> CreateOrEdit(BasketRatingAndComment request)
        {
            var basketEditDto = new BasketEditDto
            {
                Id             = request.Id,
                UserId         = request.UserId,
                OrganizationId = request.OrganizationId
            };

            foreach (var rec in request.BasketInventoryRatingAndComments)
            {
                var basketInventoryEditDto = new BasketInventoryEditDto
                {
                    Id             = rec.Id,
                    CountInventory = rec.CountInventory,
                    Price          = rec.Price,
                    DishId         = rec.DishId,
                    Sum            = rec.Sum
                };
                basketEditDto.BasketInventoryDtos.Add(basketInventoryEditDto);
            }

            var result = await _service.CreateOrEditItemAsync(basketEditDto);

            if (result.IsSuccess)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                foreach (var resultError in result.Errors)
                {
                    ModelState.AddModelError("Error", resultError);
                }

                return(View(request));
            }
        }
Example #6
0
        public async Task <EntityOperationResult <Basket> > EditItemAsync(BasketEditDto basketEditDto)
        {
            using (var unitOfWork = _unitOfWorkFactory.MakeUnitOfWork())
            {
                int countInverory = basketEditDto.BasketInventoryDtos.Sum(x => x.CountInventory);

                if (countInverory <= 0)
                {
                    return(EntityOperationResult <Basket>
                           .Failure()
                           .AddError("Вы не указали количество товара"));
                }
                if (basketEditDto.BasketInventoryDtos.Any(x => x.CountInventory < 0))
                {
                    return(EntityOperationResult <Basket>
                           .Failure()
                           .AddError("Вы указали отрицательное число товара"));
                }

                try
                {
                    var basket = unitOfWork.Basket.GetById(basketEditDto.Id);
                    basket.CountInventory = countInverory;
                    basket.Sum            = basketEditDto.BasketInventoryDtos.Sum(x => x.Price * x.CountInventory);
                    basket.DateAction     = DateTime.Now;

                    unitOfWork.Basket.Update(basket);
                    List <BasketInventory> basketInventories =
                        unitOfWork.BasketInventory.GetBasketInventories(basketEditDto.Id).ToList();
                    bool flagAdd = false;
                    foreach (var rec in basketEditDto.BasketInventoryDtos)
                    {
                        if (rec.CountInventory == 0)
                        {
                            var basketInventory = basketInventories.FirstOrDefault(x => x.Id == rec.Id);
                            if (basketInventory != null)
                            {
                                unitOfWork.BasketInventory.Delete(basketInventory);
                            }
                        }
                        else
                        {
                            var basketInventory = basketInventories.FirstOrDefault(x => x.Id == rec.Id);
                            flagAdd = false;
                            if (basketInventory == null)
                            {
                                basketInventory = new BasketInventory
                                {
                                    BasketId = basket.Id,
                                };
                                flagAdd = true;
                            }

                            basketInventory.DishId         = rec.DishId;
                            basketInventory.CountInventory = rec.CountInventory;
                            basketInventory.Price          = rec.Price;
                            basketInventory.Sum            = rec.CountInventory * rec.Price;

                            if (flagAdd)
                            {
                                await unitOfWork.BasketInventory.AddAsync(basketInventory);
                            }
                            else
                            {
                                unitOfWork.BasketInventory.Update(basketInventory);
                            }
                        }
                    }
                    await unitOfWork.CompleteAsync();

                    return(EntityOperationResult <Basket> .Success(basket));
                }
                catch (Exception ex)
                {
                    return(EntityOperationResult <Basket> .Failure().AddError(ex.Message));
                }
            }
        }