private void RefreshProductsCache() { List <ProdVendidoPorFranqueado> prodsVendidosPorFranqueado; using (ProdVendidoPorFranqueadoSession s = new ProdVendidoPorFranqueadoSession()) { using (var das = s.CreateDataAccessScope(true)) { IMapperProdVendidoPorFranqueado map = s.CreateMapperProdVendidoPorFranqueado(); prodsVendidosPorFranqueado = map.GetAllInFranchisee(franqId).ToList(); } } using (ProdutoSession s = new ProdutoSession()) { using (var das = s.CreateDataAccessScope(true)) { IMapperProduto map = s.CreateMapperProduto(); productsCache = map .GetAll() .Zip(prodsVendidosPorFranqueado, (p, pvpf) => ProdutoViewInStore.Parse(p, pvpf)) .ToList(); } } }
public void Execute() { franqId = WelcomeAndChooseStore(); if (productsCache.Count == 0) { RefreshProductsCache(); } bool se = false; //sale ended List <ProdutoViewInStore> sale = new List <ProdutoViewInStore>(); while (!se) { ShowExistingProducts(); //Scan product Console.WriteLine("Introduza o id do produto que pretende levar"); int prodId = int.Parse(Console.ReadLine()); Console.WriteLine("Introduza a quantidade que pretende levar"); int qty = int.Parse(Console.ReadLine()); ProdutoViewInStore productInStore = productsCache.Find(p => p.ProdId == prodId); //update cache productInStore.Quantidade -= qty; //add scanned product to sale list ProdutoViewInStore boughtProduct = new ProdutoViewInStore( productInStore.ProdId, productInStore.Descricao, qty, productInStore.PrecoUnitario); sale.Add(boughtProduct); Console.WriteLine("Do you want to continue scanning items? (y/n)"); if (Console.ReadKey().KeyChar.Equals('n')) { se = true; } } UpdateStock(sale); //Calc value to be payed decimal total = 0; sale.ForEach(item => total += item.PrecoUnitario * item.Quantidade); Console.WriteLine("Your total is {0} euros ", total); //Emission of receipt with shopping list Console.WriteLine("Item Unit Price Value to Pay"); sale.ForEach(item => Console.WriteLine("{0} {1}eur/unit {2}€", item.Descricao, item.PrecoUnitario, item.PrecoUnitario * item.Quantidade)); Console.WriteLine("See you next time! Press any key to continue"); Console.ReadKey(); }