diff --git a/LuminousSales/Business/Business/Sales/ProductController.cs b/LuminousSales/Business/Business/Sales/ProductController.cs index a7a2db0..76501b3 100644 --- a/LuminousSales/Business/Business/Sales/ProductController.cs +++ b/LuminousSales/Business/Business/Sales/ProductController.cs @@ -8,7 +8,7 @@ using System.Text; namespace Business.Business.Sales { - class ProductController : IController + public class ProductController : IController { private LuminousContext context; private User currentUser; @@ -23,15 +23,39 @@ namespace Business.Business.Sales } public Product Get(int id) { - return context.Product.Find(id); + var item = context.Product.Find(id); + if (item != null) + { + return item; + } + else + { + throw new ArgumentException("Product Id not found!"); + } } public Product Get(string name) { - return context.Product.FirstOrDefault(p => p.Name == name); + var item = context.Product.FirstOrDefault(p => p.Name == name); + if (item != null) + { + return item; + } + else + { + throw new ArgumentException("Product name not found!"); + } } public ICollection GetByApproximateName(string name) { - return context.Product.Where(u => u.Name.Contains(name)).ToList(); + var items = context.Product.Where(u => u.Name.Contains(name)).ToList(); + if (items.Any()) + { + return items; + } + else + { + throw new ArgumentException("No products added in the database!"); + } } public void AddItem(string name, double price) { diff --git a/LuminousSales/Display/Program.cs b/LuminousSales/Display/Program.cs index 1d3b3c3..5a55da2 100644 --- a/LuminousSales/Display/Program.cs +++ b/LuminousSales/Display/Program.cs @@ -1,5 +1,7 @@ using Business.Business.UserManagment; +using Display.Views; using Models; +using Models.Models; using System; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -10,10 +12,18 @@ namespace Display { static void Main(string[] args) { - var a = new InitialSetup.InitialSetup(); - a.InitialRegistration(); - var ih = new InputHandler(); - ih.CommandLineInterface(); + try + { + var uc = new UserController(); + User currentUser = uc.ValidatePassword("admin123"); + uc = new UserController(currentUser); + var cv = new CashierView(currentUser); + cv.SaleHandle(); + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } } } } diff --git a/LuminousSales/Display/Sales/Stock.cs b/LuminousSales/Display/Sales/Stock.cs index 024378d..9095561 100644 --- a/LuminousSales/Display/Sales/Stock.cs +++ b/LuminousSales/Display/Sales/Stock.cs @@ -6,6 +6,6 @@ namespace Display.Sales { class Stock { - public void + //public void } } diff --git a/LuminousSales/Display/Views/BaseView.cs b/LuminousSales/Display/Views/BaseView.cs index fc6cace..5d79e8b 100644 --- a/LuminousSales/Display/Views/BaseView.cs +++ b/LuminousSales/Display/Views/BaseView.cs @@ -1,12 +1,21 @@ -using Models.Models; +using Business.Business.Sales; +using Models.Models; using System; using System.Collections.Generic; +using System.Linq; using System.Text; namespace Display.Views { class BaseView { + ProductController productctrl; + DealController dealctrl; + public BaseView(User currentUser) + { + this.productctrl = new ProductController(currentUser); + this.dealctrl = new DealController(currentUser); + } public virtual void ShowAvaliableCommands() { Console.WriteLine("1. Sales"); @@ -17,17 +26,81 @@ namespace Display.Views Product product = new Product(); while (true) { - SearchItem(); - SaleItem(); + Console.WriteLine("1. Search"); + Console.WriteLine("2. Sale"); + Console.WriteLine("3. Exit"); + Console.Write("Your Choice: "); + try + { + int choice = int.Parse(Console.ReadLine()); + switch (choice) + { + case 1: + SearchItem(); + break; + case 2: + SaleItem(); + break; + case 3: + Environment.Exit(0); + break; + default: + Console.WriteLine("Invalid Option!"); + break; + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } } + } private void SearchItem() { + try + { + Console.Write("Search item: "); + string search = Console.ReadLine(); + ICollection productsFound = productctrl.GetByApproximateName(search).ToArray(); + foreach (var item in productsFound) + { + Console.WriteLine($"{item.Id} {item.Name} {item.Price} {item.AmountInStock}"); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } } private void SaleItem() { + try + { + Console.Write("Type in item id or name: "); + string itemInput = Console.ReadLine(); + int itemId; + if (Int32.TryParse(itemInput, out itemId)) + { + var productToAdd = productctrl.Get(itemId); + Console.Write("Amount: "); + double amount = double.Parse(Console.ReadLine()); + dealctrl.Add(itemId, amount); + } + else + { + var productToAdd = productctrl.Get(itemInput); + Console.Write("Amount: "); + double amount = double.Parse(Console.ReadLine()); + dealctrl.Add(itemInput, amount); + } + } + catch (Exception e) + { + Console.WriteLine(e.Message); + } } } } diff --git a/LuminousSales/Display/Views/CashierView.cs b/LuminousSales/Display/Views/CashierView.cs index 8ce0142..36d48e8 100644 --- a/LuminousSales/Display/Views/CashierView.cs +++ b/LuminousSales/Display/Views/CashierView.cs @@ -1,10 +1,16 @@ -using System; +using Models.Models; +using System; using System.Collections.Generic; using System.Text; namespace Display.Views { - class CashierView + class CashierView : BaseView { + public CashierView(User currentUser) : base(currentUser) + { + + } + } }