public async Task <IActionResult> UpdateStock([FromRoute] Guid id, [FromBody] WareHouseStockUpdate wareHouseStock)
        {
            var products = await _context.Products.FindAsync(id);

            var warehouseProds = new WareHouseProducts();

            if (wareHouseStock.wareHouseId != 0 && wareHouseStock.wareHouseId != null)
            {
                warehouseProds = _context.WareHouseProducts.Where(x => x.productId.Equals(id.ToString()) && x.wareHouseId.Equals(wareHouseStock.wareHouseId)).FirstOrDefault();

                if (warehouseProds == null)
                {
                    CreateFieldForWareHouseProduct(id);
                }
                if (wareHouseStock.change == "+")
                {
                    warehouseProds.quantity += wareHouseStock.quantity;
                }
                else
                {
                    warehouseProds.quantity -= wareHouseStock.quantity;
                }
                _context.Entry(warehouseProds).State = EntityState.Modified;
                var wareHouseAllStock = _context.WareHouseProducts.Where(x => x.productId.Equals(id.ToString())).ToList();
                products.quantity = wareHouseAllStock.Sum(s => s.quantity);
                _context.Entry(products).State = EntityState.Modified;
            }
            else
            {
                if (wareHouseStock.change == "+")
                {
                    products.quantity += wareHouseStock.quantity;
                }
                else
                {
                    products.quantity -= wareHouseStock.quantity;
                }
                products.modifiedOn = DateTime.Now;
                products.modifiedBy = wareHouseStock.modifiedBy;
                products.userId     = wareHouseStock.userId;

                _context.Entry(products).State = EntityState.Modified;
            }
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            return(CreatedAtAction("GetProducts", GetProducts()));
        }
        public async Task <IActionResult> PutWareHouseProducts([FromRoute] int id, [FromBody] WareHouseProducts wareHouseProducts)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != wareHouseProducts.Id)
            {
                return(BadRequest());
            }

            _context.Entry(wareHouseProducts).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!WareHouseProductsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PostWareHouseProducts([FromBody] WareHouseProducts wareHouseProducts)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.WareHouseProducts.Add(wareHouseProducts);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetWareHouseProducts", new { id = wareHouseProducts.Id }, wareHouseProducts));
        }
        private async void CreateFieldForWareHouseProduct(Guid productId)
        {
            var warehouses = _context.WareHouse.ToList();

            foreach (var item in warehouses)
            {
                var tempWhProds = new WareHouseProducts()
                {
                    productId   = productId.ToString(),
                    quantity    = 0,
                    wareHouseId = item.WareHouseId
                };
                _context.WareHouseProducts.Add(tempWhProds);
                await _context.SaveChangesAsync();
            }
        }