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 }); } }
/// <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 }); } }
/// <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 }); } }
/// <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 }); } }
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 }); } }