/// <summary> /// Retrieve Business-Model location object from database via location id /// </summary> /// <param name="id">Location id</param> /// <returns>Business-Model location object</returns> public Library.Models.Location GetLocationById(int id) { var dbLocation = _dbContext.Locations .Include(l => l.LocationInventories) .ThenInclude(li => li.Product) .First(l => l.Id == id); Dictionary <Library.Models.Product, int> stock = new Dictionary <Library.Models.Product, int>(); Dictionary <Library.Models.Product, decimal> prices = new Dictionary <Library.Models.Product, decimal>(); foreach (LocationInventory li in dbLocation.LocationInventories) { Library.Models.Product product = new Library.Models.Product() { Id = li.ProductId, DisplayName = li.Product.Name }; stock.Add(product, li.Stock); prices.Add(product, li.Price); } return(new Library.Models.Location( dbLocation.Name, dbLocation.Address, dbLocation.City, dbLocation.State, dbLocation.Country, dbLocation.PostalCode, dbLocation.Phone ) { Id = dbLocation.Id, Stock = stock, Prices = prices }); }
public static Product MapLibProduct(Library.Models.Product product) { return(new Product() { ProductId = product.ProductId, ProductName = product.Name, Price = product.Price, Inventory = product.Inventory.Select(LibInventoryMap).ToList(), OrderLine = product.OrderLine.Select(LibOrderLinesMap).ToList() }); }
/// <summary> /// Add a new product to the database /// </summary> /// <param name="product">Business-Model product object</param> public void AddProduct(Library.Models.Product product) { if (product.Id != 0) // IDs are assigned by database, so it already exists if not 0 { throw new ArgumentException("Product already exists."); } var dbProduct = new Product() { Name = product.DisplayName }; _dbContext.Products.Add(dbProduct); }
/// <summary> /// Retrieve Business-Model order object from database via order id /// </summary> /// <param name="id">Order id</param> /// <returns>Business-Model order object</returns> public Library.Models.Order GetOrderById(int id) { var dbOrder = _dbContext.Orders .Include(o => o.Location) .Include(o => o.Customer) .Include(o => o.OrderContents) .ThenInclude(oc => oc.Product) .First(o => o.Id == id); var location = new Library.Models.Location( dbOrder.Location.Name, dbOrder.Location.Address, dbOrder.Location.City, dbOrder.Location.State, dbOrder.Location.Country, dbOrder.Location.PostalCode, dbOrder.Location.Phone ) { Id = dbOrder.LocationId }; var customer = new Library.Models.Customer() { Id = dbOrder.CustomerId, FirstName = dbOrder.Customer.FirstName, LastName = dbOrder.Customer.LastName, Email = dbOrder.Customer.Email }; Dictionary <Library.Models.Product, int> products = new Dictionary <Library.Models.Product, int>(); Dictionary <Library.Models.Product, decimal> prices = new Dictionary <Library.Models.Product, decimal>(); foreach (OrderContent oc in dbOrder.OrderContents) { Library.Models.Product product = new Library.Models.Product() { Id = oc.ProductId, DisplayName = oc.Product.Name }; products.Add(product, oc.Quantity); prices.Add(product, oc.Price); } return(new Library.Models.Order() { Id = dbOrder.Id, Products = products, PricePaid = prices, Customer = customer, Location = location, Time = dbOrder.Date }); }
// // Update Methods // /// <summary> /// Update the amount of some product that a particular location has in stock /// </summary> /// <param name="location">Business-Model location object</param> /// <param name="product">Business-Model product object</param> /// <param name="qty">integer number of items to add</param> public void UpdateLocationStock(Library.Models.Location location, Library.Models.Product product) { LocationInventory dbLocationInventory; try { dbLocationInventory = _dbContext.LocationInventories.First(x => x.LocationId == location.Id && x.ProductId == product.Id); dbLocationInventory.Stock = location.Stock[product]; } catch (InvalidOperationException) { var dbLocation = _dbContext.Locations.First(l => l.Id == location.Id); var dbProduct = _dbContext.Products.First(p => p.Id == product.Id); dbLocationInventory = new LocationInventory() { Location = dbLocation, Product = dbProduct, Stock = location.Stock[product], Price = location.Prices[product] }; _dbContext.LocationInventories.Add(dbLocationInventory); } }
public static Entities.Product Map(Library.Models.Product product) => new Entities.Product { ProductId = product.Id, Name = product.Name, Price = (decimal)product.Price };
public void UpdateProduct(Library.Models.Product product) { throw new NotImplementedException(); }