/// <summary>
        /// Metoda pozwalajaca pobrać z konsoli wybrany przez uzytkownika sposób sortowania
        /// </summary>
        /// <returns name = "ascendingOrDescending"> zmienna z sposobem sortowania</returns>
        private static string ChoiceAscendingOrDescending()
        {
            int    selectOption;
            string choice;
            string ascendingOrDescending;

            Console.WriteLine();
            Console.WriteLine("Jak posortować raport: ");
            Console.WriteLine("1. Rosnąco");
            Console.WriteLine("2. Malejąco");
            Console.WriteLine("Aby wybrać sposób sortowania raportu wpisz odpowiadającą mu cyfre: ");

            while (true)
            {
                choice = Console.ReadLine();
                try
                {
                    selectOption = int.Parse(choice);

                    switch (selectOption)
                    {
                    case 1:
                        ascendingOrDescending = "Ascending";
                        goto end;

                    case 2:
                        ascendingOrDescending = "Descending";
                        goto end;

                    default:
                        RaportView.ErrorInterfaceInformation(choice);
                        break;
                    }
                }
                catch (Exception)
                {
                    RaportView.ErrorInterfaceInformation(choice);
                }
            }
end:
            return(ascendingOrDescending);
        }
        /// <summary>
        /// Metoda pozwalajaca pobrać z konsoli wybrany przez uzytkownika sposób sortowania
        /// </summary>
        /// <returns name = "sotringMethod"> zmienna z sposobem sortowania</returns>
        private static string SortingMethodGroupByName()
        {
            int    selectOption;
            string choice;
            string sortingMethod;

            Console.WriteLine();
            Console.WriteLine("Jak posortować raport: ");
            Console.WriteLine("1. Po nazwach produktów");
            Console.WriteLine("2. Po ilości wystąpień");
            Console.WriteLine("Aby wybrać sposób sortowania raportu wpisz odpowiadającą mu cyfre: ");

            while (true)
            {
                choice = Console.ReadLine();
                try
                {
                    selectOption = int.Parse(choice);

                    switch (selectOption)
                    {
                    case 1:
                        sortingMethod = "Key";
                        goto end;

                    case 2:
                        sortingMethod = "Count";
                        goto end;

                    default:
                        RaportView.ErrorInterfaceInformation(choice);
                        break;
                    }
                }
                catch (Exception)
                {
                    RaportView.ErrorInterfaceInformation(choice);
                }
            }
end:
            return(sortingMethod);
        }
        /// <summary>
        /// Metoda odczytująca wartości double podane przez użytkownika
        /// </summary>
        /// <returns name = "value">Wartość double</returns>
        private static double LoadDoubleValue()
        {
            double value;
            string loadValue;

            while (true)
            {
                loadValue = Console.ReadLine();
                try
                {
                    value = double.Parse(loadValue);
                    goto end;
                }
                catch (Exception)
                {
                    RaportView.ErrorInterfaceInformation(loadValue);
                }
            }
end:
            return(value);
        }
        /// <summary>
        /// Metoda pozwalajaca pobrać z konsoli wybrany przez uzytkownika sposób sortowania
        /// </summary>
        /// <returns name = "sotringMethod"> zmienna z sposobem sortowania</returns>
        private static string ChoseSortingMethod()
        {
            int    selectOption;
            string choice;
            string sortingMethod;

            Console.WriteLine();
            Console.WriteLine("Jak posortować raport: ");
            Console.WriteLine("1. Po zamówieniach");
            Console.WriteLine("2. Po clientId");
            Console.WriteLine("3. Po requestId");
            Console.WriteLine("4. Po name");
            Console.WriteLine("5. Po quantity");
            Console.WriteLine("6. Po price");
            Console.WriteLine("Aby wybrać sposób sortowania raportu wpisz odpowiadającą mu cyfre: ");

            while (true)
            {
                choice = Console.ReadLine();
                try
                {
                    selectOption = int.Parse(choice);

                    switch (selectOption)
                    {
                    case 1:
                        sortingMethod = "Order";
                        goto end;

                    case 2:
                        sortingMethod = "ClientId";
                        goto end;

                    case 3:
                        sortingMethod = "RequstId";
                        goto end;

                    case 4:
                        sortingMethod = "Name";
                        goto end;

                    case 5:
                        sortingMethod = "Quantity";
                        goto end;

                    case 6:
                        sortingMethod = "Price";
                        goto end;

                    default:
                        RaportView.ErrorInterfaceInformation(choice);
                        break;
                    }
                }
                catch (Exception)
                {
                    RaportView.ErrorInterfaceInformation(choice);
                }
            }
end:
            return(sortingMethod);
        }
        static void Main(string[] args)
        {
            string choice;
            int    selectOption;
            string filePath;
            string raport;
            string clientId;
            string sortingMethod;
            string ascendingOrDescending;
            double min, max;

            List <String> fileList = new List <string>();

            Console.WriteLine("*********PROGRAM DO OBSŁUGI ZAMÓWIEŃ********");
            do
            {
                Console.WriteLine("Podaj ścieżkę do pliku z listą plików z zamówieniami: ");
                filePath = @Console.ReadLine();

                fileList = ReadData.ReadFile(filePath);
            } while (fileList.Count() == 0);

            ReadListFiles(fileList);

raportInterface:
            RaportsUserInterfaceView();
            while (true)
            {
                choice = Console.ReadLine();
                try
                {
                    selectOption = int.Parse(choice);

                    switch (selectOption)
                    {
                    case 1:
                        raport = "Łączna liczba zamówień: " + NumbersOfOrders(Order.orders);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 2:
                        clientId = LoadClientId();
                        raport   = "Łączna liczba zamówień dla klienta o id '" + clientId + "': "
                                   + ClientNumbersOfOrders(Order.orders, clientId);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 3:
                        raport = "Łączna kwota zamówień: " + TotalPrice(Order.orders);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 4:
                        clientId = LoadClientId();
                        raport   = "Łączna kwota zamówień dla klienta o id'" + clientId + "': "
                                   + ClientTotalPrice(Order.orders, clientId);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 5:
                        sortingMethod = ChoseSortingMethod();
                        if (sortingMethod == "Order")
                        {
                            raport = "Wszystkie zamówienia: " + Environment.NewLine + AllOrders(Order.orders);
                        }
                        else
                        {
                            ascendingOrDescending = ChoiceAscendingOrDescending();
                            raport = "Wszystkie zamówienia: " + Environment.NewLine
                                     + AllOrders(Order.orders, sortingMethod, ascendingOrDescending);
                        }
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 6:
                        clientId      = LoadClientId();
                        sortingMethod = ChoseSortingMethod();
                        if (sortingMethod == "Order")
                        {
                            raport = "Wszystkie zamówienia dla klienta o id'" + clientId + "': " + Environment.NewLine
                                     + ClientAllOrders(Order.orders, clientId);
                        }
                        else
                        {
                            ascendingOrDescending = ChoiceAscendingOrDescending();
                            raport = "Wszystkie zamówienia dla klienta o id'" + clientId + "': " + Environment.NewLine
                                     + ClientAllOrders(Order.orders, clientId, sortingMethod, ascendingOrDescending);
                        }
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 7:
                        raport = "Średnia wartość wszystkich zamówień: " + AverageOrderValue(Order.orders);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 8:
                        clientId = LoadClientId();
                        raport   = "Średnia wartość wszystkich zamówień dla klienta o id'" + clientId + "': "
                                   + ClientAverageOrderValue(Order.orders, clientId);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 9:
                        sortingMethod         = SortingMethodGroupByName();
                        ascendingOrDescending = ChoiceAscendingOrDescending();
                        raport = "Ilość zamówień pogrupowane po nazwie produktów: " + Environment.NewLine
                                 + GroupNumberOfOrders(Order.orders, sortingMethod, ascendingOrDescending);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 10:
                        clientId              = LoadClientId();
                        sortingMethod         = SortingMethodGroupByName();
                        ascendingOrDescending = ChoiceAscendingOrDescending();
                        raport = "Ilość zamówień pogrupowane po nazwie produktów dla klienta o id'" + clientId + "': "
                                 + Environment.NewLine
                                 + ClientGroupNumberOfOrders(Order.orders, clientId, sortingMethod, ascendingOrDescending);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 11:
                        Console.WriteLine("Podaj dolną granice przedziału: ");
                        min = LoadDoubleValue();
                        Console.WriteLine("Podaj górną granice przedziału: ");
                        max    = LoadDoubleValue();
                        raport = "Zamówienia w przedziale cenowym(" + min + "-" + max + "): " + Environment.NewLine
                                 + OrdersPriceRange(Order.orders, min, max);
                        RaportView.FileOrConsole(raport);
                        goto raportInterface;

                    case 12:
                        goto end;

                    default:
                        RaportView.ErrorInterfaceInformation(choice);
                        break;
                    }
                }
                catch (Exception)
                {
                    RaportView.ErrorInterfaceInformation(choice);
                }
            }
            end :;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Metoda tworzaca plik
        /// </summary>
        /// <param name="raport">raport do wyświtlenia</param>
        /// <param name="pathDirectoryRaports">ścieżka do folderu</param>
        public static void CreateFileWithRaport(string pathDirectoryRaports, string raport)
        {
            string       choice;
            int          selectOption;
            string       pathRaportFile;
            string       fileName;
            FileInfo     file   = null;
            StreamWriter writer = null;

            Console.WriteLine();
            Console.WriteLine("Podaj nazwe pliku bez rozszerzenia: ");
            fileName = Console.ReadLine() + ".csv";

            pathRaportFile = System.IO.Path.Combine(pathDirectoryRaports, fileName);

            if (System.IO.File.Exists(pathRaportFile))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Plik już istnieje!");
                Console.ResetColor();

                Console.WriteLine();
                Console.WriteLine("1.Nadpisz plik.");
                Console.WriteLine("2.Wprowadź inną nazwę.");
                Console.WriteLine("Aby wybrać opcej wpisz odpowiadającą mu cyfre: ");

                while (true)
                {
                    choice = Console.ReadLine();
                    try
                    {
                        selectOption = int.Parse(choice);

                        if (selectOption == 1)
                        {
                            System.IO.File.Delete(pathRaportFile);
                            file = new FileInfo(pathRaportFile);
                            break;
                        }
                        else if (selectOption == 2)
                        {
                            CreateFileWithRaport(pathDirectoryRaports, raport);
                            goto next;
                        }
                        else
                        {
                            RaportView.ErrorInterfaceInformation(choice);
                        }
                    }
                    catch (Exception)
                    {
                        RaportView.ErrorInterfaceInformation(choice);
                    }
                }
            }
            else
            {
                file = new FileInfo(pathRaportFile);
            }
            try
            {
                writer = file.AppendText();
                writer.WriteLine("*******RAPORT******");
                writer.Write(raport);

                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Plik został zapisany" + Environment.NewLine + "Miejsce zapisu: " + pathRaportFile);
                Console.ResetColor();
            }
            catch (Exception)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Błąd w zapisie");
                Console.ResetColor();
                Console.WriteLine();
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                }
            }
            next :;
        }