public IActionResult AddProductSales(Object jsonResult)
        {
            dynamic reqBody = JObject.Parse(jsonResult.ToString());
            //var productDtos = _inventoryService.GetProducts(reqBody.productIds.ToObject<List<int>>());
            //var saleProducts = _mapper.Map<List<ProductDto>, List<Product>>(productDtos);
            var         saleProducts = _inventoryService.GetProducts(reqBody.productIds.ToObject <List <int> >());
            int         saleId       = reqBody.saleId;
            SaleInvoice sale         = _saleService.GetSale(saleId);

            if (sale == null)
            {
                return(BadRequest("This sale does not exist"));
            }
            else if (sale.Finalised == true)
            {
                return(BadRequest("This Sale Has Already Been Finalised"));
            }
            else if (sale != null && saleProducts.Count > 0)
            {
                var productSales = _saleService.ApplyPromotionsToSale(sale.Id, saleProducts);
                _saleService.ProcessProductSales(sale, productSales);
                SaleInvoiceDto invoice = _mapper.Map <SaleInvoice, SaleInvoiceDto>(sale);
                invoice.Products = _mapper.Map <IList <ProductSale>, IList <ProductSaleDto> >(productSales);
                return(Ok(invoice));
            }
            else
            {
                return(BadRequest("There are no products to add"));
            }
        }
        public IActionResult CancelSale(SaleInvoiceDto saleDto)
        {
            int saleId = saleDto.Id;

            if (saleId == 0)
            {
                return(BadRequest("0 is not a valid saleId number"));
            }

            var sale = _saleService.GetSale(saleId);

            if (sale != null)
            {
                _saleService.CancelSale(saleId);
                return(Ok());
            }

            return(BadRequest());
        }