public async Task <EntityOperationResult <Basket> > CreateItemAsync(BasketCreateDto basketCreateDto) { using (var unitOfWork = _unitOfWorkFactory.MakeUnitOfWork()) { int countInverory = basketCreateDto.BasketInventoryDto.Sum(x => x.CountInventory); if (countInverory <= 0) { return(EntityOperationResult <Basket> .Failure() .AddError("Вы не указали количество товара")); } if (basketCreateDto.BasketInventoryDto.Any(x => x.CountInventory < 0)) { return(EntityOperationResult <Basket> .Failure() .AddError("Вы указали отрицательное число товара")); } try { var basket = new Basket { UserId = basketCreateDto.UserId, CountInventory = countInverory, OrganizationId = basketCreateDto.OrganizationId, Sum = basketCreateDto.BasketInventoryDto.Sum(x => x.Price * x.CountInventory), Status = false, DateAction = DateTime.Now }; var entity = await unitOfWork.Basket.AddAsync(basket); await unitOfWork.CompleteAsync(); var basketCheck = unitOfWork.Basket.GetById(entity.Id); if (basketCheck != null) { foreach (var rec in basketCreateDto.BasketInventoryDto.Where(x => x.CountInventory > 0)) { var basketInventory = new BasketInventory { BasketId = entity.Id, DishId = rec.DishId, CountInventory = rec.CountInventory, Price = rec.Price, Sum = rec.CountInventory * rec.Price }; var basketInventoryCheck = await unitOfWork.BasketInventory.AddAsync(basketInventory); await unitOfWork.CompleteAsync(); } } return(EntityOperationResult <Basket> .Success(entity)); } catch (Exception ex) { return(EntityOperationResult <Basket> .Failure().AddError(ex.Message)); } } }
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)); } } }