public void Post([FromBody] DTO.Client client) { Console.WriteLine($"DEBUG: Entering {nameof(Post)}"); Console.WriteLine($"DEBUG: Request body contained: {client}"); // TODO: updatedBy var updatedBy = "SYSTEM"; using (var db = new TransactionServiceDbContext()) { var dbClient = db.Clients.FindAsync(client.ClientId).Result; if (dbClient == null) { // PK is serial, so should be automatically generated dbClient = new Domain.Entities.Client { CreatedBy = updatedBy, CreatedOn = DateTime.UtcNow }; db.Add(dbClient); } dbClient.Name = client.Name; dbClient.Description = client.Description; dbClient.UpdatedBy = updatedBy; dbClient.UpdatedOn = DateTime.UtcNow; db.SaveChangesAsync(); } }
public ActionResult <DTO.Transaction> Get(int id) { DTO.Transaction transaction; using (var db = new TransactionServiceDbContext()) { transaction = db.Transactions .Include(t => t.LineItems) .Include(t => t.AssociatedClient) .Where(t => !t.Deleted && t.TransactionId == id) .Select(t => t.toDto()) .FirstOrDefault(); } // Set default for new transactions if (transaction == null) { transaction = new DTO.Transaction { TransactionId = -1, TransactionType = Enums.TransactionTypeEnum.Sale, Status = "Draft", LineItems = new List <DTO.LineItem>() }; } return(transaction); }
public ActionResult <DTO.Client> Get(int id) { DTO.Client client; using (var db = new TransactionServiceDbContext()) { client = db.Clients .Where(c => !c.Deleted && c.ClientId == id) .Select(c => c.toDto()) .FirstOrDefault(); } if (client == null) { client = new DTO.Client { ClientId = -1, Name = "<name>", Description = "<description>" }; } return(client); }
public ActionResult <List <DTO.Product> > Get() { List <DTO.Product> productList; using (var db = new TransactionServiceDbContext()) { productList = db.Products .Where(p => !p.Deleted) .OrderByDescending(p => p.UpdatedOn) .Select(p => p.toDto()) .ToList(); foreach (var product in productList) { // get sale price product.AvgSalePrice = Decimal.Round(db.LineItems .Where(l => !l.Deleted && l.ProductId == product.ProductId && l.Quantity > 0 && l.Transaction.TransactionType == TransactionTypeEnum.Sale.ToString()) .Sum(l => l.Price / l.Quantity), 2); // get purchase price product.AvgPurchasePrice = Decimal.Round(db.LineItems .Where(l => !l.Deleted && l.ProductId == product.ProductId && l.Quantity > 0 && l.Transaction.TransactionType == TransactionTypeEnum.Purchase.ToString()) .Sum(l => l.Price / l.Quantity), 2); } } return(productList); }
public void Delete(int id) { using (var db = new TransactionServiceDbContext()) { var dbClient = db.Clients.FindAsync(id).Result; if (dbClient != null) { dbClient.Deleted = true; } db.SaveChangesAsync(); } }
public void Delete(int id) { using (var db = new TransactionServiceDbContext()) { var dbTransaction = db.Transactions.FindAsync(id).Result; if (dbTransaction != null) { dbTransaction.Deleted = true; } // TODO: Delete line items as well? db.SaveChangesAsync(); } }
public ActionResult <List <DTO.Client> > Get() { List <DTO.Client> clientList; using (var db = new TransactionServiceDbContext()) { clientList = db.Clients .Where(c => !c.Deleted) .Select(c => c.toDto()) .ToList(); } return(clientList); }
public ActionResult <List <DTO.Transaction> > Get() { List <DTO.Transaction> transactionList; using (var db = new TransactionServiceDbContext()) { transactionList = db.Transactions .Include(t => t.LineItems) .Include(t => t.AssociatedClient) .Where(t => !t.Deleted) .Select(t => t.toDto()) .ToList(); } return(Ok(transactionList)); }
public ActionResult <DTO.Product> Get(int id) { DTO.Product product; using (var db = new TransactionServiceDbContext()) { product = db.Products .Where(p => !p.Deleted && p.ProductId == id) .Select(p => p.toDto()) .FirstOrDefault(); if (product != null) { // get sale price product.AvgSalePrice = Decimal.Round(db.LineItems .Where(l => !l.Deleted && l.ProductId == product.ProductId && l.Quantity > 0 && l.Transaction.TransactionType == TransactionTypeEnum.Sale.ToString()) .Sum(l => l.Price / l.Quantity), 2); // get purchase price product.AvgPurchasePrice = Decimal.Round(db.LineItems .Where(l => !l.Deleted && l.ProductId == product.ProductId && l.Quantity > 0 && l.Transaction.TransactionType == TransactionTypeEnum.Purchase.ToString()) .Sum(l => l.Price / l.Quantity), 2); } } // Set default for new products if (product == null) { product = new DTO.Product { ProductId = -1, Name = "<name>", Description = "<description>" }; } return(product); }
public ActionResult <List <DTO.SiteSearchResult> > SiteSearch(string query) { Console.WriteLine($"DEBUG: Entering {nameof(SiteSearch)}"); Console.WriteLine($"DEBUG: query: {query}"); List <DTO.SiteSearchResult> sites; using (var db = new TransactionServiceDbContext()) { sites = db.Transactions .Where(t => !t.Deleted && t.SiteName.Contains(query)) .Select(t => new DTO.SiteSearchResult { SiteName = t.SiteName, SiteLatitude = t.SiteLatitude, SiteLongitude = t.SiteLongitude, }) .ToList(); } Console.WriteLine($"DEBUG: Matching sites found: {JsonConvert.SerializeObject(sites, Formatting.Indented)}"); return(Ok(sites)); }
public void Post([FromBody] DTO.Transaction transaction) { Console.WriteLine($"DEBUG: Entering {nameof(Post)}"); Console.WriteLine($"DEBUG: Request body contained: {JsonConvert.SerializeObject(transaction, Formatting.Indented)}"); // TODO: updatedBy var updatedBy = "SYSTEM"; using (var db = new TransactionServiceDbContext()) { // TODO: Only change Updated* values if the other values are actually different. Override SaveChanges method? var dbTransaction = db.Transactions.FindAsync(transaction.TransactionId).Result; if (dbTransaction == null && transaction.TransactionId == -1) { Console.WriteLine($"DEBUG: Creating new transaction"); // PK is serial, so should be automatically generated dbTransaction = new Domain.Entities.Transaction { CreatedOn = DateTime.UtcNow, CreatedBy = updatedBy }; db.Add(dbTransaction); } if (dbTransaction != null) { Console.WriteLine("DEBUG: Updating transaction properties"); dbTransaction.Status = transaction.Status; dbTransaction.TransactionType = transaction.TransactionType.ToString(); dbTransaction.UpdatedOn = DateTime.UtcNow; dbTransaction.UpdatedBy = updatedBy; dbTransaction.DeliverAfter = transaction.DeliverAfter?.ToUniversalTime(); dbTransaction.DeliverBefore = transaction.DeliverBefore?.ToUniversalTime(); dbTransaction.Priority = (int)transaction.Priority; dbTransaction.SiteName = transaction.SiteName; dbTransaction.SiteLatitude = transaction.SiteLatitude; dbTransaction.SiteLongitude = transaction.SiteLongitude; // Unsure why LineItems is null instead of empty list if (transaction.LineItems != null) { Console.WriteLine($"DEBUG: Updating {transaction.LineItems.Count} line items"); foreach (var lineItem in transaction.LineItems) { var dbLineItem = db.LineItems.FindAsync(lineItem.LineItemId).Result; if (dbLineItem == null) { // Transaction IDs start empty for new incoming line items dbLineItem = new Domain.Entities.LineItem { LineItemId = lineItem.LineItemId, TransactionId = dbTransaction.TransactionId, CreatedOn = DateTime.UtcNow, CreatedBy = updatedBy }; db.Add(dbLineItem); } dbLineItem.ProductId = lineItem.ProductId; dbLineItem.Quantity = lineItem.Quantity; dbLineItem.Price = lineItem.Price; dbLineItem.UpdatedOn = DateTime.UtcNow; dbLineItem.UpdatedBy = updatedBy; } } Console.WriteLine($"DEBUG: Updating client ID"); dbTransaction.ClientId = transaction.AssociatedClient?.ClientId; Console.WriteLine($"DEBUG: Saving changes"); db.SaveChangesAsync(); } } Console.WriteLine($"DEBUG: Exiting {nameof(Post)}"); }