예제 #1
0
파일: Program.cs 프로젝트: FraiZj/Warehouse
        static void Main(string[] args)
        {
            Console.WindowWidth = 135;
            Console.Title       = "Warehouse Accounting";
            Warehouse warehouse = new Warehouse();

            warehouse.Load();

            if (warehouse.Name == null)
            {
                warehouse.ChangeName(InputString("Название склада"));
            }

            while (true)
            {
                Console.Clear();
                Console.WriteLine("1.Формирование приходной накладной");
                Console.WriteLine("2.Формирование расходной накладной");
                Console.WriteLine("3.Список товаров на складе");
                Console.WriteLine("4.Поиск товаров");
                Console.WriteLine("5.Список поставщиков");
                Console.WriteLine("6.Просмотр приходных накладных");
                Console.WriteLine("7.Просмотр расходных накладных");
                Console.WriteLine("8.Выход");
                ConsoleKey key = Console.ReadKey().Key;

                if (key == ConsoleKey.D1)
                {
                    Supplier supplier          = RegisterSupplier();
                    Supplier duplicateSupplier = warehouse.GetDuplicateSupplier(supplier);

                    if (duplicateSupplier != null)
                    {
                        supplier = duplicateSupplier;
                    }

                    List <Product>            productList   = new List <Product>();
                    List <(Product, Product)> duplicateList = new List <(Product, Product)>();

                    while (true)
                    {
                        Product        registeredProduct         = RegisterProduct(supplier);
                        Product        productDuplicates         = DuplicateProduct(productList, registeredProduct);
                        List <Product> warehousProductDuplicates = warehouse.GetDuplicateProducts(registeredProduct);

                        if (productDuplicates != null)
                        {
                            warehouse.AddSomeCountOfProduct(productDuplicates, registeredProduct.Count);
                        }
                        else if (warehousProductDuplicates.Count > 0)
                        {
                            Console.Clear();
                            warehouse.PrintProducts(warehousProductDuplicates);
                            Console.Write("\nНа складе находится такой же товар.\n" +
                                          "1.Создать новую запись\n" +
                                          "2.Добавить товары в одну запись");
                            if (Console.ReadKey().Key == ConsoleKey.D1)
                            {
                                productList.Add(registeredProduct);
                            }
                            else
                            {
                                Console.Clear();
                                warehouse.PrintProducts(warehousProductDuplicates);
                                Console.WriteLine("Введите номер товара, к которому добавить новый товар.");
                                int     number  = InputProductNumber(warehousProductDuplicates.Count);
                                Product product = warehousProductDuplicates[number - 1];
                                duplicateList.Add((registeredProduct, product));
                            }
                        }
                        else
                        {
                            productList.Add(registeredProduct);
                        }

                        Console.Write("\nEnter - добавить еще один товар \n" +
                                      "Esc - вывести приходную накладную");

                        if (Console.ReadKey().Key != ConsoleKey.Enter)
                        {
                            supplier.AddSupliesCount();
                            break;
                        }
                    }

                    if (productList.Count > 0)
                    {
                        warehouse.AddSupply(new Supply(supplier, productList));
                    }

                    foreach ((Product product, Product duplicate) in duplicateList)
                    {
                        warehouse.AddSomeCountOfProduct(duplicate, product.Count);
                        productList.Add(product);
                    }

                    warehouse.Save();
                    warehouse.PrintPurchaseInvoice(new Supply(supplier, productList));

                    Console.Write(ClickAnyButtonMessage);
                    Console.ReadKey();
                }
                else if (key == ConsoleKey.D2)
                {
                    Console.Clear();
                    if (warehouse.Products.Count == 0)
                    {
                        Console.WriteLine("Склад пуст.");
                    }
                    else
                    {
                        string recipient = InputString("Покупатель");
                        List <(Product, int)> soldProductList = new List <(Product, int)>();

                        while (true)
                        {
                            Console.Clear();

                            if (warehouse.Products.Count == 0)
                            {
                                Console.WriteLine("Склад пуст.");
                                Console.WriteLine(ClickAnyButtonMessage);
                                Console.ReadKey();
                                break;
                            }

                            warehouse.PrintAllProducts();
                            int     number  = InputProductNumber(warehouse.Products.Count);
                            int     count   = InputSalesProductCount(warehouse.Products[number - 1].Count);
                            Product product = warehouse.Products[number - 1];
                            warehouse.RemoveSomeCountOfProduct(product, count);
                            soldProductList.Add((product, count));

                            if (warehouse.Products.Count == 0)
                            {
                                break;
                            }

                            Console.Write("Enter - продолжить ввод \n" +
                                          "Esc - вывести расходную накладную");
                            if (Console.ReadKey().Key != ConsoleKey.Enter)
                            {
                                break;
                            }
                        }

                        warehouse.Save();
                        warehouse.PrintSalesInvoice(recipient, soldProductList);
                    }

                    Console.Write(ClickAnyButtonMessage);
                    Console.ReadKey();
                }
                else if (key == ConsoleKey.D3)
                {
                    Console.Clear();
                    if (warehouse.Products.Count == 0)
                    {
                        Console.WriteLine("Склад пуст.");
                    }
                    else
                    {
                        warehouse.PrintAllProducts();
                        Console.WriteLine($"\nВсего товаров: {warehouse.Products.Count}\n");
                    }

                    Console.Write(ClickAnyButtonMessage);
                    Console.ReadKey();
                }
                else if (key == ConsoleKey.D4)
                {
                    if (warehouse.Products.Count == 0)
                    {
                        Console.Clear();
                        Console.WriteLine("Склад пуст.");
                        Console.Write(ClickAnyButtonMessage);
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.Clear();
                        string recipient = InputString("Покупатель");
                        List <(Product, int)> soldProductList = new List <(Product, int)>();

                        while (true)
                        {
                            Console.Clear();
                            Console.WriteLine("Введите наименование товара");
                            string         name           = InputString("Наименование");
                            List <Product> wantedProducts = warehouse.SearchProducts(name);

                            if (wantedProducts.Count == 0)
                            {
                                Console.WriteLine("Товар не найден.");
                                Console.WriteLine("\nEnter - искать другой товар\n" +
                                                  "Esc - вывести расходную накладную");
                                if (Console.ReadKey().Key == ConsoleKey.Enter)
                                {
                                    continue;
                                }
                                else
                                {
                                    break;
                                }
                            }
                            else
                            {
                                warehouse.PrintProducts(wantedProducts);

                                Console.WriteLine("\nEnter - добавить товар в расходную накладную\n" +
                                                  "Backspace - искать другой товар\n" +
                                                  "Esc - вывести расходную накладную");
                                ConsoleKey key2 = Console.ReadKey().Key;
                                if (key2 == ConsoleKey.Backspace)
                                {
                                    continue;
                                }
                                else if (key2 == ConsoleKey.Enter)
                                {
                                    Console.Clear();
                                    warehouse.PrintProducts(wantedProducts);
                                    int     number  = InputProductNumber(wantedProducts.Count);
                                    int     count   = InputSalesProductCount(warehouse.Products[number - 1].Count);
                                    Product product = wantedProducts[number - 1];
                                    warehouse.RemoveSomeCountOfProduct(product, count);
                                    soldProductList.Add((product, count));

                                    if (warehouse.Products.Count == 0)
                                    {
                                        break;
                                    }

                                    Console.Write("\nEnter - искать другой товар \n" +
                                                  "Esc - вывести расходную накладную");
                                    if (Console.ReadKey().Key == ConsoleKey.Enter)
                                    {
                                        continue;
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }

                                break;
                            }
                        }

                        if (soldProductList.Count > 0)
                        {
                            warehouse.Save();
                            warehouse.PrintSalesInvoice(recipient, soldProductList);
                            Console.Write(ClickAnyButtonMessage);
                            Console.ReadKey();
                        }
                    }
                }
                else if (key == ConsoleKey.D5)
                {
                    if (warehouse.Suppliers.Count == 0)
                    {
                        Console.Clear();
                        Console.WriteLine("Список поставщиков пуст.");
                        Console.Write(ClickAnyButtonMessage);
                        Console.ReadKey();
                    }
                    else
                    {
                        List <(Product, int)> soldProductList = new List <(Product, int)>();

                        while (true)
                        {
                            Console.Clear();
                            Console.WriteLine("Введите наименование поставщика");
                            string          name            = InputString("Наименование");
                            List <Supplier> wantedSuppliers = warehouse.SearchSupplier(name);

                            if (wantedSuppliers.Count == 0)
                            {
                                Console.WriteLine("Поставщик не найден.");
                                Console.WriteLine("\nEnter - искать другого поставщика\n" +
                                                  "Esc - вернуться в меню");
                                if (Console.ReadKey().Key == ConsoleKey.Enter)
                                {
                                    continue;
                                }
                                else
                                {
                                    break;
                                }
                            }
                            else
                            {
                                warehouse.PrintSuppliers(wantedSuppliers);
                                Console.WriteLine("\nEnter - искать другого поставщика\n" +
                                                  "Esc - вернуться в меню");
                                if (Console.ReadKey().Key == ConsoleKey.Enter)
                                {
                                    continue;
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
                else if (key == ConsoleKey.D6)
                {
                    if (Directory.Exists(PurchaseInvoiceDirectoryPath) && Directory.GetFiles(SalesInvoicesDirectoryPath).Length > 0)
                    {
                        Process.Start(PurchaseInvoiceDirectoryPath);
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Список приходных накладных пуст.");
                        Console.Write(ClickAnyButtonMessage);
                        Console.ReadKey();
                    }
                }
                else if (key == ConsoleKey.D7)
                {
                    if (Directory.Exists(SalesInvoicesDirectoryPath) && Directory.GetFiles(SalesInvoicesDirectoryPath).Length > 0)
                    {
                        Process.Start(SalesInvoicesDirectoryPath);
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Список расходных накладных пуст.");
                        Console.Write(ClickAnyButtonMessage);
                        Console.ReadKey();
                    }
                }
                else if (key == ConsoleKey.D8)
                {
                    warehouse.Save();
                    break;
                }
            }
        }