Ejemplo n.º 1
0
        private bool CheckIfStockItemAvailable(Guid productGuid)
        {
            var stockController = new StocksController();

            var firstOrDefault = _db.StockItems.FirstOrDefault(g => g.StockItemProduct.ProductGuid == productGuid);

            return(firstOrDefault != null && stockController.GetStockItemQuantity(firstOrDefault.StockItemGuid) > 0);
        }
Ejemplo n.º 2
0
        public async Task <IHttpActionResult> PostProduct(Product product, Guid stockGuid, int maxQuantity = 0,
                                                          int minQuantity = 0)
        {
            //verify data
            if (!ModelState.IsValid)
            {
                foreach (var v in ModelState.Values)
                {
                    foreach (var e in v.Errors)
                    {
                        if (e.Exception != null)
                        {
                            return
                                (BadRequest(
                                     "Something went wrong. Please check your form fields for disallowed or missing values."));
                        }
                    }
                }

                return(BadRequest(ModelState));
            }

            var stockController = new StocksController();

            //generate new guid for the product
            product.ProductGuid = Guid.NewGuid();

            //add product to db context
            db.Products.Add(product);

            //save changes to db
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (ProductExists(product.ProductGuid))
                {
                    return(Conflict());
                }
                throw;
            }

            if (stockGuid != new Guid("00000000-0000-0000-0000-000000000000"))
            {
                await stockController.CreateStockItem(stockGuid, product, maxQuantity, minQuantity);
            }

            return(CreatedAtRoute("DefaultApi", new { id = product.ProductGuid }, product));
        }
Ejemplo n.º 3
0
        public async Task <IHttpActionResult> PutProduct(Guid id, ProductDetailsViewModel product)
        {
            //verify data
            if (!ModelState.IsValid)
            {
                foreach (var v in ModelState.Values)
                {
                    foreach (var e in v.Errors)
                    {
                        if (e.Exception != null)
                        {
                            return
                                (BadRequest(
                                     "Something went wrong. Please check your form fields for disallowed or missing values."));
                        }
                    }
                }

                return(BadRequest(ModelState));
            }

            if (id != product.Product.ProductGuid)
            {
                return(BadRequest());
            }

            var stockController = new StocksController();

            db.Entry(product.Product).State = EntityState.Modified;

            //save data
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductExists(id))
                {
                    return(NotFound());
                }
                throw;
            }

            await stockController.UpdateStockItem(product.ProductStockItem, product.Product);

            return(StatusCode(HttpStatusCode.NoContent));
        }
Ejemplo n.º 4
0
        public async Task <IHttpActionResult> PostSupplyItems(List <SupplyItemProductViewModel> supplyItems,
                                                              Guid supplyGuid)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var stockController = new StocksController();

            //create the Supplyitems and link them to the Supply
            foreach (var p in supplyItems)
            {
                var supplyItem = new SupplyItem
                {
                    SupplyItemGuid      = Guid.NewGuid(),
                    SupplyItemSupply    = _db.Supplys.FirstOrDefault(g => g.SupplyGuid == supplyGuid),
                    SupplyItemStockItem =
                        _db.StockItems.FirstOrDefault(g => g.StockItemProduct.ProductGuid == p.ProductGuid),
                    SupplyQuantity = p.SupplyQuantity
                };

                _db.SupplyItems.Add(supplyItem);

                try
                {
                    await _db.SaveChangesAsync();
                }
                catch (DbUpdateException)
                {
                }

                await stockController.CreateStockTransaction(new StockItemViewModel
                {
                    StockItemGuid     = supplyItem.SupplyItemStockItem.StockItemGuid,
                    StockItemQuantity = supplyItem.SupplyQuantity,
                    Supply            = supplyItem.SupplyItemSupply,
                    Order             = null
                });
            }

            return(CreatedAtRoute("DefaultApi", new { id = supplyItems }, supplyItems));
        }
Ejemplo n.º 5
0
        public async Task <IHttpActionResult> PostOrderItems(List <OrderItemProductViewModel> orderItems, Guid orderGuid)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var stockController = new StocksController();

            //create the orderitems and link them to the order
            foreach (var p in orderItems)
            {
                var orderItem = new OrderItem
                {
                    OrderItemGuid      = Guid.NewGuid(),
                    OrderItemOrder     = db.Orders.FirstOrDefault(g => g.OrderGuid == orderGuid),
                    OrderItemStockItem =
                        db.StockItems.FirstOrDefault(g => g.StockItemProduct.ProductGuid == p.ProductGuid),
                    OrderQuantity = p.OrderQuantity
                };

                db.OrderItems.Add(orderItem);

                try
                {
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateException)
                {
                }

                await stockController.CreateStockTransaction(new StockItemViewModel
                {
                    StockItemGuid     = orderItem.OrderItemStockItem.StockItemGuid,
                    StockItemQuantity = -orderItem.OrderQuantity,
                    Order             = orderItem.OrderItemOrder,
                    Supply            = null
                });
            }

            return(CreatedAtRoute("DefaultApi", new { id = orderItems }, orderItems));
        }
Ejemplo n.º 6
0
        public async Task <IHttpActionResult> DeleteProduct(Guid id)
        {
            //verify data
            if (!db.Products.Any(g => g.ProductGuid == id))
            {
                return(BadRequest());
            }

            var stocksController = new StocksController();

            var product = await db.Products.FindAsync(id);

            product.ProductDeleted = true;

            db.Entry(product).State = EntityState.Modified;

            //save changes
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ProductExists(id))
                {
                    return(NotFound());
                }
                throw;
            }

            var stockItem = await db.StockItems.FirstOrDefaultAsync(si => si.StockItemProduct.ProductGuid == id);

            await stocksController.DeleteStockItem(stockItem.StockItemGuid);

            return(StatusCode(HttpStatusCode.NoContent));
        }