//Koodasivat Sari ja Olli
        public static string SmashTheKeyboard(List <Liikennepaikka> lista, string typo)
        {
            // Etsitään liikennepaikkojen listasta syötteen ensimmäisen ja viimeisen kirjaimen perusteella
            // mahdolliset oikeat vaihtoehdot ja tarjotaan niitä käyttäjälle yksi kerrallaan.
            List <string> samanlaiset = new List <string>();

            foreach (var item in lista)
            {
                string nimi = item.stationName;

                if (nimi.Substring(0, 2) == typo.Substring(0, 2))

                {
                    if (nimi.Substring(0, 3) == typo.Substring(0, 3))
                    {
                        samanlaiset.Add(nimi);
                    }
                    if (nimi.Substring(nimi.Length - 1, 1) == typo.Substring(typo.Length - 1, 1))
                    {
                        samanlaiset.Add(nimi);
                    }
                }
                else
                {
                    continue;
                }
            }
            SortedDictionary <string, string> Sortti = Asema.YhtenevätKirjaimet(typo, samanlaiset);

            var oikea = VaihtoehtoKäsittelijä(Sortti);

            return(oikea);
        }
Exemple #2
0
        //Koodasivat Olli ja Sari
        public static void KerroSeuraavatJunat()
        {
            //Haetaan käyttäjän syötteen perusteella annetulle reitille seuraavat junat ja tulostetaan
            //niiden lähtö- ja saapumistiedot.
            string lähtöasema;
            string kohdeasema;

            Asema.Konduktööri(out lähtöasema, out kohdeasema);
            //Console.WriteLine("Valittu matka: "+lähtöasema+ " - "+kohdeasema);
            List <Juna> junat;
            string      lähtöformat    = "dd.MM klo HH.mm";
            string      saapumisformat = "klo HH.mm";

            RataDigiTraffic.APIUtil rata = new RataDigiTraffic.APIUtil();
            try
            {
                junat = rata.JunatVälillä(lähtöasema, kohdeasema);

                int counter = 1;
                foreach (var item in junat)
                {
                    StringBuilder tulostus = new StringBuilder(counter + ". Juna " + item.trainType + " " + item.trainNumber + " lähtee asemalta " + lähtöasema + " ");
                    List <RataDigiTraffic.Model.Aikataulurivi> aikataulut = item.timeTableRows;


                    foreach (var rivi in aikataulut)
                    {
                        if (rivi.stationShortCode == lähtöasema && rivi.type.Contains("DEPARTURE"))
                        {
                            tulostus.Append(rivi.scheduledTime.ToLocalTime().ToString(lähtöformat) + " ja saapuu asemalle " + kohdeasema + " ");
                            break;
                        }
                    }
                    foreach (var rivi in aikataulut)
                    {
                        if (rivi.stationShortCode == kohdeasema && rivi.type.Contains("ARRIVAL"))
                        {
                            tulostus.Append(rivi.scheduledTime.ToLocalTime().ToString(saapumisformat));
                            break;
                        }
                    }

                    Console.WriteLine(tulostus);
                    counter++;
                    if (counter == 6)
                    {
                        break;
                    }
                }
            }
            // Jos käyttäjä syöttää lähtö- ja kohdeasemat, joiden välillä ei ole suoraa raideyhteyttä,
            // annetaan siitä ilmoitus.
            catch (Newtonsoft.Json.JsonSerializationException)
            {
                Console.WriteLine("Antamallesi yhteysvälille ei löydy suoraa junayhteyttä!");
                return;
            }
        }
        // Koodasivat Olli ja Sari
        public static void Konduktööri(out string lähtöAsema, out string kohdeAsema)
        {
            //Selvittää asiakkaan syötteen perusteella halutun reitin lähtö- ja kohdeasemat
annalähtöasema:
            Console.WriteLine("Anna lähtöasema:");

            string syöte = Console.ReadLine();
            string lähtö = Asema.Trimmeri(syöte);

            RataDigiTraffic.APIUtil rata = new RataDigiTraffic.APIUtil();
            lähtöAsema = Asema.EtsiAsema(lista: rata.Liikennepaikat(), nimi: lähtö);

            if (lähtöAsema == null)
            {
                //Jos syötteen perusteella ei suoraan löydy asemaa, etsitään syötettä lähinnä vastaavat
                //asemat ja kysytään niitä käyttäjältä
                string uusiLähtö = SmashTheKeyboard(rata.Liikennepaikat(), lähtö);
                lähtöAsema = EtsiAsema(rata.Liikennepaikat(), uusiLähtö);
                lähtö      = uusiLähtö;
                if (lähtöAsema == null)
                {
                    Console.WriteLine("Asemaa ei löydy!");
                    goto annalähtöasema;
                }
            }
annakohdeasema:
            Console.WriteLine("Anna asema, jonne haluat matkustaa asemalta " + lähtö + ": ");
            syöte = Console.ReadLine();
            string kohde = Asema.Trimmeri(syöte);

            kohdeAsema = Asema.EtsiAsema(lista: rata.Liikennepaikat(), nimi: kohde);
            if (kohdeAsema == null)
            {
                string uusiKohde = SmashTheKeyboard(rata.Liikennepaikat(), kohde);
                kohdeAsema = Asema.EtsiAsema(rata.Liikennepaikat(), uusiKohde);
                kohde      = uusiKohde;
                if (kohdeAsema == null)
                {
                    Console.WriteLine("Asemaa ei löydy!");
                    goto annakohdeasema;
                }
            }
            Console.WriteLine($"Valittu matka: {lähtö}({lähtöAsema})  - { kohde}({kohdeAsema})");
        }