private async Task <IActionResult> CreateOrEditBasketItem(BasketItemDto basketItem) { if (await _orderRepository.CustomerExists(basketItem.CustomerId)) { if (await _orderRepository.IsCustomerActive(basketItem.CustomerId)) { bool itemIsInBasket = await _orderRepository.IsItemInBasket(basketItem.CustomerId, basketItem.ProductId); if (itemIsInBasket && basketItem.Quantity == 0) { return(await Delete(basketItem.CustomerId, basketItem.ProductId)); } if (await IsBasketItemValid(basketItem)) { if (await _orderRepository.ProductExists(basketItem.ProductId)) { if (itemIsInBasket) { if (await _orderRepository.EditBasketItem(_mapper.Map <BasketItemRepoModel>(basketItem))) { return(Ok()); } } else { if (await _orderRepository.AddBasketItem(_mapper.Map <BasketItemRepoModel>(basketItem))) { return(Ok()); } } return(NotFound()); } return(NotFound()); } return(UnprocessableEntity()); } return(Forbid()); } return(NotFound()); }