Beispiel #1
0
 public ServiceResponse <Data.Models.Customer> CreateCustomer(Data.Models.Customer customer)
 {
     try
     {
         _context.Customers.Add(customer);
         _context.SaveChanges();
         return(new ServiceResponse <Data.Models.Customer>
         {
             IsSuccess = true,
             Message = "New Customer Added",
             Time = DateTime.UtcNow,
             Data = customer
         });
     }
     catch (Exception ex)
     {
         return(new ServiceResponse <Data.Models.Customer>
         {
             IsSuccess = false,
             Message = $"New Customer Added: {ex.Message} - {ex.StackTrace} ",
             Time = DateTime.UtcNow,
             Data = customer
         });
     }
 }
Beispiel #2
0
        /// <summary>
        /// Archives a product by setting boolean archive to true
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ServiceResponse <Data.Models.Product> ArchiveProduct(int id)
        {
            try
            {
                var product = _context.Products.Find(id);
                product.IsArchived = true;
                _context.SaveChanges();

                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = "Product archived",
                    IsSuccess = true
                });
            }
            catch (Exception ex)
            {
                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = null,
                    Time = DateTime.UtcNow,
                    Message = $"Error archiving product: {ex.StackTrace}",
                    IsSuccess = true
                });
            }
        }
        /// <summary>
        /// Archives a Product by setting boolean IsArchived to true
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ServiceResponse <Data.Models.Product> ArchiveProduct(int id)
        {
            try
            {
                var product = _db.Products.Find(id);
                product.IsArchived = true;
                _db.SaveChanges();

                return(new ServiceResponse <Data.Models.Product> {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = " Archived Product",
                    IsSuccess = true
                });
            } catch (Exception e)
            {
                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = null,
                    Time = DateTime.UtcNow,
                    Message = e.StackTrace,
                    IsSuccess = false
                });
            }
        }
Beispiel #4
0
 /// <summary>
 /// Adds a new Customer record
 /// </summary>
 /// <param name="customer"></param>
 /// <returns>ServiceResponse<Customer></Customer></returns>
 public ServiceResponse <Data.Models.Customer> CreateCustomer(Data.Models.Customer customer)
 {
     try
     {
         _db.Customers.Add(customer);
         _db.SaveChanges();
         return(new ServiceResponse <Data.Models.Customer>
         {
             IsSuccess = true,
             Message = "New Customer added",
             Time = DateTime.UtcNow,
             Data = customer
         });
     }
     catch (Exception e)
     {
         return(new ServiceResponse <Data.Models.Customer>
         {
             IsSuccess = false,
             Message = e.StackTrace,
             Time = DateTime.UtcNow,
             Data = customer
         });
     }
 }
Beispiel #5
0
        /// <summary>
        /// Creates an open SalesOrder
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public ServiceResponse <bool> GenerateOpenOrder(SalesOrder order)
        {
            var now = DateTime.UtcNow;

            _logger.LogInformation("Generating new Order");

            foreach (var item in order.SalesOrderItem)
            {
                item.Product = _productService.GetProductById(item.Product.Id);

                var inventoryId = _inventoryService.GetByProductId(item.Product.Id).Id;

                _inventoryService.UpdateUnitsAvailable(inventoryId, -item.Quantity);
            }

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

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Message = "Open order created",
                    Time = now
                });
            }
            catch (Exception e)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Message = e.StackTrace,
                    Time = now
                });
            }
        }
Beispiel #6
0
        public ServiceResponse <bool> GenerateOpenOrder(SalesOrder order)
        {
            _logger.LogInformation("Generating new order");

            foreach (var item in order.SalesOrderItems)
            {
                item.InventoryProduct = _productService.GetProductById(item.InventoryProduct.Id);

                var inventoryId = _inventoryService.GetByProductId(item.InventoryProduct.Id).Id;

                _inventoryService.UpdateUnitsAvailable(inventoryId, -item.Quantity);
            }
            ;

            try
            {
                _context.SalesOrders.Add(order);
                _context.SaveChanges();

                return(new ServiceResponse <bool>
                {
                    IsSuccess = true,
                    Data = true,
                    Message = $"Open Order Created",
                    Time = DateTime.UtcNow
                });
            }
            catch (Exception ex)
            {
                return(new ServiceResponse <bool>
                {
                    IsSuccess = false,
                    Data = false,
                    Message = $"Failed to generate invoice: {ex.StackTrace}",
                    Time = DateTime.UtcNow
                });
            }
        }
        /// <summary>
        /// Adds a new product to the database
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        public ServiceResponse <Data.Models.Product> CreateProduct(Data.Models.Product product)
        {
            try
            {
                _db.Products.Add(product);

                var newInventory = new ProductInventory
                {
                    Product        = product,
                    QuantityOnHand = 0,
                    IdealQuantity  = 10
                };

                _db.ProductInventories.Add(newInventory);

                _db.SaveChanges();

                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = "Saved new product",
                    IsSucccess = true
                });
            }

            catch (Exception e)
            {
                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = e.StackTrace,
                    IsSucccess = false
                });
            }
        }
        /// <summary>
        /// Updates number of units available of the provided product id
        /// Adjusts the QuantityOnHand by adjustment value
        /// </summary>
        /// <param name="id">productId/param>
        /// <param name="adjustment">number of units added / removed from inventory</param>
        /// <returns></returns>
        public ServiceResponse <ProductInventory> UpdateUnitsAvailable(int id, int adjustment)
        {
            var now = DateTime.UtcNow;

            try
            {
                var inventory = _db.ProductInventories
                                .Include(inv => inv.Product)
                                .First(inv => inv.Product.Id == id);

                inventory.QuantityOnHand += adjustment;

                try
                {
                    CreateSnapshot(inventory);
                }

                catch (Exception e)
                {
                    _logger.LogError("Error creating inventory snapshot");
                    _logger.LogError(e.StackTrace);
                }

                _db.SaveChanges();

                return(new ServiceResponse <ProductInventory>
                {
                    IsSucccess = true,
                    Data = inventory,
                    Message = $"Product {id} inventory adjusted",
                    Time = now
                });
            }

            catch (Exception e)
            {
                return(new ServiceResponse <ProductInventory>
                {
                    IsSucccess = true,
                    Data = null,
                    Message = "Error updating ProductInventory QuantityOnHand",
                    Time = now
                });
            }
        }