public async Task <BasketDTO> Delete(BasketItemsDTO item, long userId) { var basket = await GetBasketByUserId(userId);///?? if (basket == null) { return(null); } if (!basket.BasketItems.Any()) { return(basket); } basket.BasketItems.Remove(item); var result = unitOfWork.Repository <BasketItems>().Delete(BasketItemsConverter.Convert(item)); if (!result) { return(null); } await unitOfWork.SaveChangesAsync(); return(basket); }
public async Task <BasketDTO> DeleteAllItems(long userId) { var basket = await GetBasketByUserId(userId);///?? if (basket == null || !basket.BasketItems.Any()) { return(null); } basket.BasketItems.Clear(); var result = unitOfWork.Repository <BasketItems>().Delete(BasketItemsConverter.Convert(basket.BasketItems)); if (!result) { return(null); } return(basket); }
public async Task <BasketDTO> AddItem(CreateBasketItemsDTO dto, long userId) { if (dto == null) { return(null); } var basket = await GetBasketByUserId(userId); basket.BasketItems = basket.BasketItems ?? new List <BasketItemsDTO>(); var _item = basket.BasketItems.SingleOrDefault(x => x.ProductId == dto.ProductId); if (_item != null) { var product = await productService.Get(_item.ProductId); if (_item != null && product.Quantity >= dto.Quantity + _item.Quantity) { _item.Quantity += dto.Quantity; } await unitOfWork.Repository <BasketItems>().Update(BasketItemsConverter.Convert(_item)); } else { var item = BasketItemsConverter.Convert(dto); var productDto = await productService.Get(item.ProductId); if (dto.Quantity <= productDto.Quantity) { item = await unitOfWork.Repository <BasketItems>().Add(item); basket.BasketItems.Add(BasketItemsConverter.Convert(dto, item.Id)); } } return(basket); }