Пример #1
0
        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");
        }