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)); } } }
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() { }); } }
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)); } }
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)); } } }