Ejemplo n.º 1
0
        public ServiceResponse <bool> GenerateOpenOrderAndReturnResponse(data.models.SalesOrder orders)
        {
            foreach (data.models.SalesOrderItem order in orders.SalesOrderItems)
            {
                data.models.Product product = _productService.GetproductById(order.productId);

                if (product == null)
                {
                    return(ServiceResponse <bool> .Failed(false, $"Product represented as index {order.productId} was not found"));
                }

                data.models.ProductInventory inventory = _inventoryService.GetByProductId(product.id);
                int inventoryId = inventory.id;

                if (_inventoryService.UpdateUnitsAvailableAndReturnResponse(inventoryId, -(order.quantity)).IsSuccess == false)
                {
                    return(ServiceResponse <bool> .Failed(false, "Updating inventory was fail"));
                }
            }

            try {
                _db.SalesOrders.Add(orders);
                _db.SaveChanges();

                return(ServiceResponse <bool> .Successed(true, "Open order created"));
            } catch (Exception e) {
                return(ServiceResponse <bool> .Failed(false, e.StackTrace));
            }
        }
Ejemplo n.º 2
0
        private void CreateSnpashot(data.models.ProductInventory inventory)
        {
            data.models.ProductInventorySnapshot snapshot = new data.models.ProductInventorySnapshot {
                SnapshotTime   = DateTime.UtcNow,
                Product        = inventory.Product,
                quantityOnHand = inventory.quantityOnHand
            };

            _db.Add(snapshot);
        }
Ejemplo n.º 3
0
        public ServiceResponse <data.models.Product> CreateProductAndReturnResponseAsSelf(data.models.Product product)
        {
            try {
                _db.Products.Add(product);

                data.models.ProductInventory NewInventory = new data.models.ProductInventory {
                    Product        = product,
                    quantityOnHand = 0,
                    idealQuantity  = 10
                };

                _db.ProductInventories.Add(NewInventory);
                _db.SaveChanges();

                return(ServiceResponse <data.models.Product> .Successed(product, "Product created"));
            } catch (Exception e) {
                return(ServiceResponse <data.models.Product> .Failed(product, e.StackTrace));
            }
        }
Ejemplo n.º 4
0
        public ServiceResponse <data.models.ProductInventory> UpdateUnitsAvailableAndReturnResponse(int id, int adjustment)
        {
            data.models.ProductInventory inventory = _db.ProductInventories
                                                     .Include(inventory => inventory.Product)
                                                     .First(inventory => inventory.Product.id == id);

            if ((inventory.quantityOnHand + adjustment) < 0)
            {
                return(ServiceResponse <data.models.ProductInventory> .Failed(null, $"Out of Stock [product({id})]"));
            }

            try {
                inventory.quantityOnHand += adjustment;
                CreateSnpashot(inventory);

                _db.SaveChanges();

                return(ServiceResponse <data.models.ProductInventory> .Successed(inventory, $"Inventory of product({id}) was updated"));
            } catch (Exception e) {
                return(ServiceResponse <data.models.ProductInventory> .Failed(null, $"Failed to update inventory of product({id})" + e.StackTrace));
            }
        }