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