static void Main(string[] args) { logger.Info("Program started"); try { string choice; do { Console.WriteLine("1) Display Categories"); Console.WriteLine("2) Add Category"); Console.WriteLine("3) Display Category and related products"); Console.WriteLine("4) Display all Categories and their related products"); Console.WriteLine("5) Add Product"); Console.WriteLine("6) Display products"); Console.WriteLine("7) Edit products"); Console.WriteLine("8) Edit categories"); Console.WriteLine("\"q\" to quit"); choice = Console.ReadLine(); Console.Clear(); logger.Info($"Option {choice} selected"); if (choice == "1") { var db = new NWConsole_96_CFGContext(); var query = db.Categories.OrderBy(p => p.CategoryName); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine($"{query.Count()} records returned"); Console.ForegroundColor = ConsoleColor.Magenta; foreach (var item in query) { Console.WriteLine($"{item.CategoryName} - {item.Description}"); } Console.ForegroundColor = ConsoleColor.White; } else if (choice == "2") { var db = new NWConsole_96_CFGContext(); Categories category = InputCategories(db); db.AddCategory(category); } else if (choice == "3") { var db = new NWConsole_96_CFGContext(); var query = db.Categories.OrderBy(p => p.CategoryId); Console.WriteLine("Select the category whose products you want to display:"); Console.ForegroundColor = ConsoleColor.DarkRed; foreach (var item in query) { Console.WriteLine($"{item.CategoryId}) {item.CategoryName}"); } Console.ForegroundColor = ConsoleColor.White; int id = int.Parse(Console.ReadLine()); Console.Clear(); logger.Info($"CategoryId {id} selected"); Categories category = db.Categories.Include("Products").FirstOrDefault(c => c.CategoryId == id); Console.WriteLine($"{category.CategoryName} - {category.Description}"); foreach (Products p in category.Products) { Console.WriteLine(p.ProductName); } } else if (choice == "4") { var db = new NWConsole_96_CFGContext(); var query = db.Categories.Include("Products").OrderBy(p => p.CategoryId); foreach (var item in query) { Console.WriteLine($"{item.CategoryName}"); foreach (Products p in item.Products) { Console.WriteLine($"\t{p.ProductName}"); } } } else if (choice == "5") { //add product var db = new NWConsole_96_CFGContext(); Products product = InputProduct(db); if (product != null) { db.AddProduct(product); logger.Info("Product added - {name}", product.ProductName); } } else if (choice == "6") { //filter only discontinued TODO //display all content for one product TODO var db = new NWConsole_96_CFGContext(); Console.WriteLine("Choose an option: "); Console.WriteLine("1) Display all active products"); Console.WriteLine("2) Display all products"); Console.WriteLine("3) Display only discontinued products"); Console.WriteLine("4) Display info on a specific product"); string input = Console.ReadLine(); GetProducts(db, input); } else if (choice == "7") { // edit products var db = new NWConsole_96_CFGContext(); Console.WriteLine("Choose a product to edit:"); var query = db.Products.OrderBy(p => p.ProductId); foreach (var item in query) { Console.WriteLine($"{item.ProductId}) {item.ProductName}"); } if (int.TryParse(Console.ReadLine(), out int ProductId)) { logger.Info($"ProductId {ProductId} selected"); Products product = db.Products.FirstOrDefault(p => p.ProductId == ProductId); if (product != null) { // input product Products UpdatedProduct = InputProduct(db); if (UpdatedProduct != null) { UpdatedProduct.ProductId = product.ProductId; db.EditProduct(UpdatedProduct); logger.Info($"Product (id: {product.ProductId}) updated"); } } } } else if (choice == "8") { var db = new NWConsole_96_CFGContext(); // edit categories Console.WriteLine("Choose a category to edit:"); var query = db.Categories.OrderBy(p => p.CategoryId); foreach (var item in query) { Console.WriteLine($"{item.CategoryId}) {item.CategoryName}"); } if (int.TryParse(Console.ReadLine(), out int CategoryId)) { logger.Info($"CategoryId {CategoryId} selected"); Categories category = db.Categories.FirstOrDefault(c => c.CategoryId == CategoryId); if (category != null) { // input category Categories UpdatedCategory = InputCategories(db); if (UpdatedCategory != null) { UpdatedCategory.CategoryId = category.CategoryId; db.EditCategory(UpdatedCategory); logger.Info($"Category (id: {category.CategoryId}) updated"); } } // GetCategories(db); } } Console.WriteLine(); } while (choice.ToLower() != "q"); } catch (Exception ex) { logger.Error(ex.Message); } logger.Info("Program ended"); }