private SaleDataModel ConvertViewModel(SaleDataViewModel viewModel) { var result = new SaleDataModel { SalesChannel = viewModel.SalesChannel, TotalCost = decimal.Parse(viewModel.TotalCost), Region = viewModel.Region, TotalProfit = decimal.Parse(viewModel.TotalProfit), OrderPriority = viewModel.OrderPriority, UnitCost = decimal.Parse(viewModel.UnitCost), TotalRevenue = decimal.Parse(viewModel.TotalRevenue), ShipDate = viewModel.ShipDate, UnitsSold = viewModel.UnitsSold, UnitPrice = decimal.Parse(viewModel.UnitPrice), ItemType = viewModel.ItemType, Country = viewModel.Country, OrderDate = viewModel.OrderDate }; if (viewModel.OrderId.HasValue) { result.OrderId = viewModel.OrderId.Value; } return(result); }
public void PostSale(SaleModel sale, string cashierId) { List <SaleDetailDataModel> saleDetails = new List <SaleDetailDataModel>(); ProductData productData = new ProductData(); var taxRate = ConfigHelper.GetTaxRate(); foreach (var item in sale.SaleDetails) { var details = new SaleDetailDataModel { ProductId = item.ProductId, Quantity = item.Quantity }; var productInfo = productData.GetProductById(item.ProductId); if (productInfo == null) { throw new Exception($"The product WHERE id = {item.ProductId} is null"); } details.PurchasePrice = productInfo.RetailPrice * details.Quantity; if (productInfo.isTaxable) { details.Tax = details.PurchasePrice * taxRate; } saleDetails.Add(details); } SaleDataModel saleData = new SaleDataModel { SubTotal = saleDetails.Sum(x => x.PurchasePrice), Tax = saleDetails.Sum(x => x.Tax), CashierId = cashierId, }; saleData.Total = saleData.SubTotal + saleData.Tax; using (SqlDataAccess sql = new SqlDataAccess()) { try { sql.StartTransaction("RMData"); sql.SaveDataInTransaction("dbo.spSaleInsert", saleData); saleData.Id = sql.LoadDataInTransaction <int, dynamic>("dbo.spSaleLookup", new { saleData.CashierId, saleData.SaleDate }, "RMData").FirstOrDefault(); foreach (var item in saleDetails) { item.SaleId = saleData.Id; sql.SaveDataInTransaction("dbo.spSaleDetailInsert", item); } } catch { sql.RollBackTransaction(); throw; } } }
public async Task <bool> AddOrUpdateRecord(SaleDataModel saleData) { if (_database.Sales.Any(sale => sale.OrderId == saleData.OrderId)) { _database.Sales.Attach(saleData); _database.Entry(saleData).State = EntityState.Modified; } else { _database.Sales.Add(saleData); } var changes = await _database.SaveChangesAsync(); return(changes == 1); }
public async Task SaveSaleData(SaleDataModel saleData) { _database.Sales.Add(saleData); await _database.SaveChangesAsync(); }