コード例 #1
0
ファイル: Menu.cs プロジェクト: dretax/OE_NIK_PROG3
        /// <summary>
        /// This method keeps the main thread alive, and displays the menu.
        /// </summary>
        internal void Watcher()
        {
            this.Help();
            while (this.run)
            {
                string s = Console.ReadLine();
                int    i;
                bool   b = int.TryParse(s, out i);
                while (!b)
                {
                    Console.WriteLine("Hibás Opció! Listázom a lehetőségeket.");
                    this.Help();
                    s = Console.ReadLine();
                    b = int.TryParse(s, out i);
                }

                Logic.Logic logic = new Logic.Logic();
                try
                {
                    switch (i)
                    {
                    case 1:
                    {
                        Console.WriteLine("Listázom az összes elérhető adatbázis neveket.");
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine(string.Join(", ", list));
                        break;
                    }

                    case 2:
                    {
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine("Írd be a tábla nevét amiből listázni szeretnél!");
                        string dbname = Console.ReadLine();
                        while (!list.Contains(dbname))
                        {
                            Console.WriteLine("Írd be a tábla nevét amiből listázni szeretnél!");
                            dbname = Console.ReadLine();
                        }

                        Console.WriteLine(dbname + " LISTÁZÁS.");
                        Console.WriteLine();
                        if (dbname == "extrak")
                        {
                            Console.WriteLine(logic.GetExtrasData());
                        }
                        else if (dbname == "modellek")
                        {
                            Console.WriteLine(logic.GetCarsData());
                        }
                        else if (dbname == "automarkak")
                        {
                            Console.WriteLine(logic.GetBrandsData());
                        }
                        else if (dbname == "modellextrakapcsolo")
                        {
                            Console.WriteLine(logic.GetModelExtraKeysData());
                        }

                        break;
                    }

                    case 3:
                    {
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine("Írd be a tábla nevét ahova hozzá kívánsz adni értéket!");
                        string dbname = Console.ReadLine();
                        while (!list.Contains(dbname))
                        {
                            Console.WriteLine("Írd be a tábla nevét ahova hozzá kívánsz adni értéket!");
                            dbname = Console.ReadLine();
                        }

                        if (dbname == "extrak")
                        {
                            // string categoryname, string name, int price, string color, bool canbeusedmoretimes
                            Console.WriteLine("Írj be egy kategória nevet.");
                            string category = Console.ReadLine();

                            Console.WriteLine("Írj be egy nevet hozzá.");
                            string name = Console.ReadLine();

                            Console.WriteLine("Írj be egy árat.");
                            string price = Console.ReadLine();
                            int    pricee;
                            bool   b2 = int.TryParse(price, out pricee);
                            while (!b2)
                            {
                                Console.WriteLine("Írj be egy árat.");
                                price = Console.ReadLine();
                                b2    = int.TryParse(price, out pricee);
                            }

                            Console.WriteLine("Írj be egy színt.");
                            string color = Console.ReadLine();

                            Console.WriteLine("Többször használható? 0 - Nem, 1 - Igen");
                            string canbeused = Console.ReadLine();
                            int    canbeusedmorenumber;
                            bool   b3 = int.TryParse(canbeused, out canbeusedmorenumber);
                            while (!b3 || (canbeusedmorenumber != 0 && canbeusedmorenumber != 1))
                            {
                                Console.WriteLine("Többször használható? 0 - Nem, 1 - Igen");
                                canbeused = Console.ReadLine();
                                b3        = int.TryParse(canbeused, out canbeusedmorenumber);
                            }

                            bool   success = logic.InsertExtraData(category, name, pricee, color, canbeusedmorenumber == 1);
                            string text    = success ? "Sikeres bevitel." : "Sikertelen bevitel";
                            Console.WriteLine(text);
                        }
                        else if (dbname == "modellek")
                        {
                            // int brandid, string name, DateTime releasedate, int enginevolume, int horsepower, int baseprice
                            Console.WriteLine(
                                "Ahhoz, hogy egy új autót adj hozzá, már léteznie kell a márkájának az adatbázisban. Szükséged lesz az ID-jére.");
                            Console.WriteLine("Megvan már? y / n?");
                            string yorno = Console.ReadLine();
                            if (yorno != "n")
                            {
BrandDoesntExist:
                                Console.WriteLine("Írd be a márka ID-jét!");
                                string id = Console.ReadLine();
                                int    idy;
                                bool   b2 = int.TryParse(id, out idy);
                                while (!b2)
                                {
                                    Console.WriteLine("Írd be a márka ID-jét!");
                                    id = Console.ReadLine();
                                    b2 = int.TryParse(id, out idy);
                                }

                                if (!logic.CheckIfBrandExists(idy))
                                {
                                    Console.WriteLine("Nem létezik a márka id!");
                                    goto BrandDoesntExist;
                                }

                                Console.WriteLine("Írd be az autó nevét!");
                                string carname = Console.ReadLine();

                                Console.WriteLine("Írd be az autó megjelenésének dátumát! (yyyy-mm-dd)");
                                string   cardate = Console.ReadLine();
                                DateTime cardatey;
                                bool     b3 = DateTime.TryParse(cardate, out cardatey);
                                while (!b3)
                                {
                                    Console.WriteLine("Írd be az autó megjelenésének dátumát! (yyyy-mm-dd)");
                                    cardate = Console.ReadLine();
                                    b3      = DateTime.TryParse(cardate, out cardatey);
                                }

                                Console.WriteLine("Írd be az autó motortérfogatát!");
                                string carvolume = Console.ReadLine();
                                int    carvolumey;
                                bool   b4 = int.TryParse(carvolume, out carvolumey);
                                while (!b4)
                                {
                                    Console.WriteLine("Írd be az autó motortérfogatát!");
                                    carvolume = Console.ReadLine();
                                    b4        = int.TryParse(carvolume, out carvolumey);
                                }

                                Console.WriteLine("Írd be az autó lóerejét!");
                                string carhorse = Console.ReadLine();
                                int    carhorsey;
                                bool   b5 = int.TryParse(carhorse, out carhorsey);
                                while (!b5)
                                {
                                    Console.WriteLine("Írd be az autó lóerejét!");
                                    carhorse = Console.ReadLine();
                                    b5       = int.TryParse(carhorse, out carhorsey);
                                }

                                Console.WriteLine("Írd be az autó árát!");
                                string carprice = Console.ReadLine();
                                int    carpricey;
                                bool   b6 = int.TryParse(carprice, out carpricey);
                                while (!b6)
                                {
                                    Console.WriteLine("Írd be az autó árát!");
                                    carprice = Console.ReadLine();
                                    b6       = int.TryParse(carprice, out carpricey);
                                }

                                bool   success = logic.InsertCarData(idy, carname, cardatey, carvolumey, carhorsey, carpricey);
                                string text    = success ? "Sikeres bevitel." : "Sikertelen bevitel";
                                Console.WriteLine(text);
                            }
                        }
                        else if (dbname == "automarkak")
                        {
                            // string name, string country, string url, int foundation, int annualtraffic
                            Console.WriteLine("Írj be egy márkanevet.");
                            string name = Console.ReadLine();

                            Console.WriteLine("Írj be egy ország nevet ahonnan származik.");
                            string country = Console.ReadLine();

                            Console.WriteLine("Írd be a weboldalát a márkának.");
                            string web = Console.ReadLine();

                            Console.WriteLine("Írd be a márka alapításának évét.");
                            string foundation = Console.ReadLine();
                            int    foundationy;
                            bool   b2 = int.TryParse(foundation, out foundationy);
                            while (!b2)
                            {
                                Console.WriteLine("Írd be a márka alapításának évét.");
                                foundation = Console.ReadLine();
                                b2         = int.TryParse(foundation, out foundationy);
                            }

                            Console.WriteLine("Írd be a márka éves forgalmát.");
                            string annual = Console.ReadLine();
                            int    annualy;
                            bool   b3 = int.TryParse(annual, out annualy);
                            while (!b3)
                            {
                                Console.WriteLine("Írd be a márka éves forgalmát.");
                                annual = Console.ReadLine();
                                b3     = int.TryParse(annual, out annualy);
                            }

                            bool   success = logic.InsertBrandData(name, country, web, foundationy, annualy);
                            string text    = success ? "Sikeres bevitel." : "Sikertelen bevitel";
                            Console.WriteLine(text);
                        }
                        else if (dbname == "modellextrakapcsolo")
                        {
ReAddExtraShit:
                            Console.WriteLine("Írd be melyik autó idhez adjunk hozzá extrát!");
                            string carid = Console.ReadLine();
                            int    caridy;
                            bool   b2 = int.TryParse(carid, out caridy);
                            while (!b2)
                            {
                                Console.WriteLine("Írd be melyik autó idhez adjunk hozzá extrát!");
                                carid = Console.ReadLine();
                                b2    = int.TryParse(carid, out caridy);
                            }

                            Console.WriteLine("Írd be a hozzáadandó extra idjét!");
                            string extraid = Console.ReadLine();
                            int    extraidy;
                            bool   b3 = int.TryParse(extraid, out extraidy);
                            while (!b3)
                            {
                                Console.WriteLine("Írd be a hozzáadandó extra idjét!");
                                extraid = Console.ReadLine();
                                b3      = int.TryParse(extraid, out extraidy);
                            }

                            if (!logic.DoesCarExist(caridy))
                            {
                                Console.WriteLine("Az autó ID nem is létezik!");
                                goto ReAddExtraShit;
                            }

                            if (!logic.DoesExtraExist(extraidy))
                            {
                                Console.WriteLine("Az extra ID nem is létezik!");
                                goto ReAddExtraShit;
                            }

                            bool   success = logic.InsertCarExtraData(caridy, extraidy);
                            string text    = success ? "Sikeres bevitel." : "Sikertelen bevitel";
                            Console.WriteLine(text);
                        }
                        else
                        {
                            Console.WriteLine("Hibás opció!");
                        }

                        break;
                    }

                    case 4:
                    {
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine("Írd be a tábla nevét amiből törölni szeretnél!");
                        string dbname = Console.ReadLine();
                        while (!list.Contains(dbname))
                        {
                            Console.WriteLine("Írd be a tábla nevét amiből törölni szeretnél!");
                            dbname = Console.ReadLine();
                        }

                        Console.WriteLine("Írd be a törlendő rekord azonosítóját!");
                        string idofval = Console.ReadLine();
                        int    idofvaly;
                        bool   b2 = int.TryParse(idofval, out idofvaly);
                        while (!b2)
                        {
                            Console.WriteLine("Írd be a törlendő rekord azonosítóját!");
                            idofval = Console.ReadLine();
                            b2      = int.TryParse(idofval, out idofvaly);
                        }

                        bool success;
                        if (dbname == "extrak")
                        {
                            success = logic.DeleteExtraData(idofvaly);
                        }
                        else if (dbname == "automarkak")
                        {
                            success = logic.DeleteBrandData(idofvaly);
                        }
                        else if (dbname == "modellek")
                        {
                            success = logic.DeleteCarData(idofvaly);
                        }
                        else
                        {
                            Console.WriteLine("Nincs ilyen opció!");
                            return;
                        }

                        string text = success ? "Sikeres törlés." : "Sikertelen törlés";
                        Console.WriteLine(text);
                        break;
                    }

                    case 5:
                    {
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine("Írd be a tábla nevét amiben rekordot szeretnél módosítani!");
                        string dbname = Console.ReadLine();
                        while (!list.Contains(dbname))
                        {
                            Console.WriteLine("Írd be a tábla nevét amiben rekordot szeretnél módosítani!");
                            dbname = Console.ReadLine();
                        }

IDDoesNotExist:
                        Console.WriteLine("Írd be a kiválasztott rekord ID-jét!");
                        string dbid = Console.ReadLine();
                        int    dbidy;
                        bool   b2 = int.TryParse(dbid, out dbidy);
                        while (!b2)
                        {
                            Console.WriteLine("Írd be a kiválasztott rekord ID-jét!");
                            dbid = Console.ReadLine();
                            b2   = int.TryParse(dbid, out dbidy);
                        }

                        if (dbname == "extrak")
                        {
                            if (!logic.CheckIfExtraIDExists(dbidy))
                            {
                                Console.WriteLine("Nincs ilyen ID a " + dbname + " nevű táblában!");
                                goto IDDoesNotExist;
                            }

                            Console.WriteLine("Írj be egy kategória nevet.");
                            string category = Console.ReadLine();

                            Console.WriteLine("Írj be egy nevet hozzá.");
                            string name = Console.ReadLine();

                            Console.WriteLine("Írj be egy árat.");
                            string price = Console.ReadLine();
                            int    pricee;
                            bool   b22 = int.TryParse(price, out pricee);
                            while (!b22)
                            {
                                Console.WriteLine("Írj be egy árat.");
                                price = Console.ReadLine();
                                b22   = int.TryParse(price, out pricee);
                            }

                            Console.WriteLine("Írj be egy színt.");
                            string color = Console.ReadLine();

                            Console.WriteLine("Többször használható? 0 - Nem, 1 - Igen");
                            string canbeused = Console.ReadLine();
                            int    canbeusedmorenumber;
                            bool   b3 = int.TryParse(canbeused, out canbeusedmorenumber);
                            while (!b3 || (canbeusedmorenumber != 0 && canbeusedmorenumber != 1))
                            {
                                Console.WriteLine("Többször használható? 0 - Nem, 1 - Igen");
                                canbeused = Console.ReadLine();
                                b3        = int.TryParse(canbeused, out canbeusedmorenumber);
                            }

                            bool   success = logic.UpdateExtraData(dbidy, category, name, pricee, color, canbeusedmorenumber == 1);
                            string text    = success ? "Sikeres update." : "Sikertelen update";
                            Console.WriteLine(text);
                        }
                        else if (dbname == "automarkak")
                        {
                            if (!logic.CheckIfBrandExists(dbidy))
                            {
                                Console.WriteLine("Nincs ilyen ID a " + dbname + " nevű táblában!");
                                goto IDDoesNotExist;
                            }

                            Console.WriteLine("Írj be egy márkanevet.");
                            string name = Console.ReadLine();

                            Console.WriteLine("Írj be egy ország nevet ahonnan származik.");
                            string country = Console.ReadLine();

                            Console.WriteLine("Írd be a weboldalát a márkának.");
                            string web = Console.ReadLine();

                            Console.WriteLine("Írd be a márka alapításának évét.");
                            string foundation = Console.ReadLine();
                            int    foundationy;
                            bool   b22 = int.TryParse(foundation, out foundationy);
                            while (!b22)
                            {
                                Console.WriteLine("Írd be a márka alapításának évét.");
                                foundation = Console.ReadLine();
                                b22        = int.TryParse(foundation, out foundationy);
                            }

                            Console.WriteLine("Írd be a márka éves forgalmát.");
                            string annual = Console.ReadLine();
                            int    annualy;
                            bool   b3 = int.TryParse(annual, out annualy);
                            while (!b3)
                            {
                                Console.WriteLine("Írd be a márka éves forgalmát.");
                                annual = Console.ReadLine();
                                b3     = int.TryParse(annual, out annualy);
                            }

                            bool   success = logic.UpdateBrandData(dbidy, name, country, web, foundationy, annualy);
                            string text    = success ? "Sikeres update." : "Sikertelen update";
                            Console.WriteLine(text);
                        }
                        else if (dbname == "modellek")
                        {
                            if (!logic.CheckIfCarIDExists(dbidy))
                            {
                                Console.WriteLine("Nincs ilyen ID a " + dbname + " nevű táblában!");
                                goto IDDoesNotExist;
                            }

BrandDoesntExist:
                            Console.WriteLine("Írd be a márka ID-jét!");
                            string id = Console.ReadLine();
                            int    idy;
                            bool   b22 = int.TryParse(id, out idy);
                            while (!b22)
                            {
                                Console.WriteLine("Írd be a márka ID-jét!");
                                id  = Console.ReadLine();
                                b22 = int.TryParse(id, out idy);
                            }

                            if (!logic.CheckIfBrandExists(idy))
                            {
                                Console.WriteLine("Nem létezik a márka id!");
                                goto BrandDoesntExist;
                            }

                            Console.WriteLine("Írd be az autó nevét!");
                            string carname = Console.ReadLine();

                            Console.WriteLine("Írd be az autó megjelenésének dátumát! (yyyy-mm-dd)");
                            string   cardate = Console.ReadLine();
                            DateTime cardatey;
                            bool     b3 = DateTime.TryParse(cardate, out cardatey);
                            while (!b3)
                            {
                                Console.WriteLine("Írd be az autó megjelenésének dátumát! (yyyy-mm-dd)");
                                cardate = Console.ReadLine();
                                b3      = DateTime.TryParse(cardate, out cardatey);
                            }

                            Console.WriteLine("Írd be az autó motortérfogatát!");
                            string carvolume = Console.ReadLine();
                            int    carvolumey;
                            bool   b4 = int.TryParse(carvolume, out carvolumey);
                            while (!b4)
                            {
                                Console.WriteLine("Írd be az autó motortérfogatát!");
                                carvolume = Console.ReadLine();
                                b4        = int.TryParse(carvolume, out carvolumey);
                            }

                            Console.WriteLine("Írd be az autó lóerejét!");
                            string carhorse = Console.ReadLine();
                            int    carhorsey;
                            bool   b5 = int.TryParse(carhorse, out carhorsey);
                            while (!b5)
                            {
                                Console.WriteLine("Írd be az autó lóerejét!");
                                carhorse = Console.ReadLine();
                                b5       = int.TryParse(carhorse, out carhorsey);
                            }

                            Console.WriteLine("Írd be az autó árát!");
                            string carprice = Console.ReadLine();
                            int    carpricey;
                            bool   b6 = int.TryParse(carprice, out carpricey);
                            while (!b6)
                            {
                                Console.WriteLine("Írd be az autó árát!");
                                carprice = Console.ReadLine();
                                b6       = int.TryParse(carprice, out carpricey);
                            }

                            bool   success = logic.UpdateCarData(dbidy, idy, carname, cardatey, carvolumey, carhorsey, carpricey);
                            string text    = success ? "Sikeres update." : "Sikertelen update";
                            Console.WriteLine(text);
                        }
                        else if (dbname == "modellextrakapcsolo")
                        {
                            Console.WriteLine("Írd be a törlendő carextra idjét!");
                            string extraid = Console.ReadLine();
                            int    extraidy;
                            bool   b3 = int.TryParse(extraid, out extraidy);
                            while (!b3)
                            {
                                Console.WriteLine("Írd be a törlendő carextra idjét!");
                                extraid = Console.ReadLine();
                                b3      = int.TryParse(extraid, out extraidy);
                            }

                            bool   success = logic.DeleteCarExtraKey(extraidy);
                            string text    = success ? "Sikeres törlés." : "Sikertelen törlés";
                            Console.WriteLine(text);
                        }
                        else
                        {
                            Console.WriteLine("Nincs ilyen opció!");
                            return;
                        }

                        break;
                    }

                    case 6:
                    {
                        List <string> list = logic.GetAllTableNames();
                        Console.WriteLine("Írd be a tábla nevét amiben átlagot szeretnél lekérdezni!");
                        string dbname = Console.ReadLine();
                        while (!list.Contains(dbname))
                        {
                            Console.WriteLine("Írd be a tábla nevét amiben átlagot szeretnél lekérdezni!");
                            dbname = Console.ReadLine();
                        }

                        if (dbname == "extrak")
                        {
                            Console.WriteLine("Írj be egy létező extra színt! Akár lehet 'nincs' is.");
                            Console.WriteLine("Ha érvénytelen a program -1-t fog visszadobni.");
                            string color = Console.ReadLine();
                            float  avg   = logic.GetAverageForExtraColor(color);
                            Console.WriteLine("Átlag a " + color + " színre: " + avg);
                        }
                        else if (dbname == "automarkak")
                        {
BrandDoesntExist:
                            Console.WriteLine("Írd be a márka ID-jét!");
                            string id = Console.ReadLine();
                            int    idy;
                            bool   b22 = int.TryParse(id, out idy);
                            while (!b22)
                            {
                                Console.WriteLine("Írd be a márka ID-jét!");
                                id  = Console.ReadLine();
                                b22 = int.TryParse(id, out idy);
                            }

                            if (!logic.CheckIfBrandExists(idy))
                            {
                                Console.WriteLine("Nem létezik a márka id!");
                                goto BrandDoesntExist;
                            }

                            float avg = logic.GetAverageAmountForBrand(idy);
                            Console.WriteLine("Átlag a márkákban: " + avg);
                        }
                        else if (dbname == "modellek")
                        {
                            Console.WriteLine("Írj be egy létező ország nevet!");
                            Console.WriteLine("Ha érvénytelen a program -1-t fog visszadobni.");
                            string country = Console.ReadLine();
                            float  avg     = logic.GetAverageAmountForBrandByCountry(country);
                            Console.WriteLine("Átlag a " + country + " országra nézve: " + avg);
                        }
                        else
                        {
                            Console.WriteLine("Nincs ilyen opció!");
                            return;
                        }

                        break;
                    }

                    case 7:
                    {
                        WebClient client = new WebClient();
                        Console.WriteLine("Adj meg egy ár minimum értéket!");
                        string pricemin = Console.ReadLine();

                        Console.WriteLine("Adj meg egy ár maximum értéket!");
                        string pricemax = Console.ReadLine();

                        Console.WriteLine("Adj meg egy minimum év értéket!");
                        string yearmin = Console.ReadLine();

                        Console.WriteLine("Adj meg egy maximum év értéket!");
                        string yearmax = Console.ReadLine();

                        Console.WriteLine("Adj meg egy minimum motortérfogat értéket!");
                        string enginevolumemin = Console.ReadLine();

                        Console.WriteLine("Adj meg egy maximum motortérfogat értéket!");
                        string enginevolumemax = Console.ReadLine();

                        Console.WriteLine("Adj meg egy minimum lóerő értéket!");
                        string horsemin = Console.ReadLine();

                        Console.WriteLine("Adj meg egy maximum lóerő értéket!");
                        string horsemax = Console.ReadLine();

                        client.Encoding = Encoding.UTF8;
                        string fullresponse = client.DownloadString(Program.JAVAURL +
                                                                    "?releasedate=" + yearmin + "-" + yearmax +
                                                                    "&enginevolume=" + enginevolumemin + "-" + enginevolumemax +
                                                                    "&horsepower=" + horsemin + "-" + horsemax +
                                                                    "&baseprice=" + pricemin + "-" + pricemax);

                        if (fullresponse.Contains("Hiba!") || fullresponse.Contains("Hibás") || fullresponse.Contains("SYNTAX"))
                        {
                            Console.WriteLine("HIBÁS LEKÉRDEZÉS: " + fullresponse);
                        }
                        else
                        {
                            Console.WriteLine("Válasz: " + fullresponse);

                            CarJSONData car = JsonConvert.DeserializeObject <CarJSONData>(fullresponse);

                            int releasedate  = int.Parse(car.RELEASEDATE);
                            int enginevolume = int.Parse(car.ENGINEVOLUME);
                            int horsepower   = int.Parse(car.HORSEPOWER);
                            int baseprice    = int.Parse(car.BASEPRICE);

BrandDoesntExist:
                            Console.WriteLine("Írd be az autó márka ID-jét!");
                            string id = Console.ReadLine();
                            int    idy;
                            bool   b2 = int.TryParse(id, out idy);
                            while (!b2)
                            {
                                Console.WriteLine("Írd be az autó márka ID-jét!");
                                id = Console.ReadLine();
                                b2 = int.TryParse(id, out idy);
                            }

                            if (!logic.CheckIfBrandExists(idy))
                            {
                                Console.WriteLine("Nem létezik a márka id!");
                                goto BrandDoesntExist;
                            }

                            Console.WriteLine("Adj meg egy autó típusának nevét végül a folytatáshoz!");
                            string carname = Console.ReadLine();

                            bool   success = logic.InsertCarData(idy, carname, new DateTime(releasedate, 1, 10), enginevolume, horsepower, baseprice);
                            string text    = success ? "Sikeres bevitel." : "Sikertelen bevitel";
                            Console.WriteLine(text);
                        }

                        break;
                    }

                    default:
                    {
                        Console.WriteLine("Hibás Opció! Listázom a lehetőségeket.");
                        this.Help();
                        break;
                    }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Hiba történt: " + ex.Message);
                }
            }
        }