public async Task <IActionResult> Create([FromBody] StockEntryInputModel model)
        {
            var entry = mapper.Map <StockEntry>(model);

            entry.Date = DateTime.UtcNow;
            this.ctx.Add(entry);
            UpdateProductStock(model);
            if (await this.ctx.SaveChangesAsync() > 0)
            {
                var url = Url.Link("StockEntryGet", new { id = entry.Id });
                return(Created(url, mapper.Map <StockEntryModel>(entry)));
            }

            return(BadRequest());
        }
        private void UpdateProductStock(StockEntryInputModel stockEntry)
        {
            var product = ctx.Products.Find(stockEntry.ProductId);

            switch (stockEntry.StockEntryType)
            {
            case StockEntryType.Buy:
            case StockEntryType.Increase:
                product.CurrentStock += stockEntry.Units;
                product.CurrentCost  += stockEntry.Amount;
                break;

            case StockEntryType.Sell:
            case StockEntryType.Decrease:
                product.CurrentStock -= stockEntry.Units;
                product.CurrentCost  -= stockEntry.Amount;
                break;

            default:
                throw new Exception("Unknown stock entry type");
            }
        }