//LISÄTÄÄN PELATUT OTTELUT TIETOKANNAN TAULUKKOON
        static public void LisaaOttelu(Ottelu match)
        {
            using (insertOttelu = new NpgsqlCommand("INSERT INTO ottelut(ottelu_id , koti, vieras, maalitkoti, maalitvieras, voittaja, päivämäärä) " +
                                                    "VALUES (@ottelu_id,@koti, @vieras, @maalitkoti, @maalitvieras, @voittaja, @päivämäärä)", connection))
            {
                insertOttelu.Parameters.AddWithValue("ottelu_id", match.getOtteluID());
                insertOttelu.Parameters.AddWithValue("koti", match.getJoukkue1());
                insertOttelu.Parameters.AddWithValue("vieras", match.getJoukkue2());

                //JOS JATKOAIKAVOITTAJA ON KOTIJOUKKUE
                if (match.getJatkoaikavoittaja() == match.getJoukkue1())
                {
                    insertOttelu.Parameters.AddWithValue("maalitkoti", match.GetMaalit1() + 1);
                    insertOttelu.Parameters.AddWithValue("maalitvieras", match.GetMaalit2());
                    insertOttelu.Parameters.AddWithValue("voittaja", match.getJatkoaikavoittaja());
                }
                //JOS JATKOAIKAVOITTAJA ON VIERASJOUKKUE
                if ((match.getJatkoaikavoittaja() == match.getJoukkue2()))
                {
                    insertOttelu.Parameters.AddWithValue("maalitkoti", match.GetMaalit1());
                    insertOttelu.Parameters.AddWithValue("maalitvieras", match.GetMaalit2() + 1);
                    insertOttelu.Parameters.AddWithValue("voittaja", match.getJatkoaikavoittaja());
                }

                else
                {
                    insertOttelu.Parameters.AddWithValue("maalitkoti", match.GetMaalit1());
                    insertOttelu.Parameters.AddWithValue("maalitvieras", match.GetMaalit2());
                    insertOttelu.Parameters.AddWithValue("voittaja", match.Getvoittaja());
                    // insertOttelu.Parameters.AddWithValue("voittaja", match.Getvoittaja());
                }
                insertOttelu.Parameters.AddWithValue("päivämäärä", match.Getottelupvm());
                insertOttelu.ExecuteNonQuery();
            }
        }
Example #2
0
        static void Main(String[] args)
        {
            int            valinta;
            int            valinta2;
            int            ottelulaskuri = 0;
            int            pelaajamaara  = 0;
            DateTime       paivamaara;
            List <Joukkue> Sarjataulukko   = new List <Joukkue>();
            List <Ottelu>  Ottelut         = new List <Ottelu>();
            List <Joukkue> Joukkueluottelo = new List <Joukkue>();
            List <Pelaaja> pelaajaluettelo = new List <Pelaaja>();
            Joukkue        joukkueet;

            //PÄÄVALIKKO MISTÄ PÄÄSTÄÄN SWITCH CASE VALINNOILLA OHJELMAN ERI VAIHEISIIN
            do
            {
valikko:
                Console.WriteLine();
                Console.WriteLine("1 - Syötä sarjaan osallistuvat joukkueet");
                Console.WriteLine("2 - Syötä joukkueen pelaajalista:");
                Console.WriteLine("3 - Syötä otteluita");
                Console.WriteLine("4 - Tulosta lista pelatuista otteluista");
                Console.WriteLine("5 - Tulosta Sarjataulukko");
                Console.WriteLine("6 - Tulosta Lista pelaajista");
                Console.WriteLine("7 - Lataa tiedot tietokantaan");
                Console.WriteLine("8 - Tyhjennä kaikki tiedot sovelluksesta");
                Console.WriteLine("0 - Lopeta");
                try
                {
                    valinta = int.Parse(Console.ReadLine());
                }
                catch (Exception)
                {
                    goto valikko; //PALAUTTAA VALIKKOON JOS LYÖ ESIM. VIRHELYÖNNIN
                }

                switch (valinta)

                {
                case 1:     //asetetaan Joukkueet sarjaan
insertmaara:
                    int maara;
                    try
                    {
                        Console.Write("Syötä sarjaan osallistuvien joukkueiden lukumäärä: ");     //OHJELMA KYSYY MÄÄRÄN
                        maara = int.Parse(Console.ReadLine());
                    }
                    catch (Exception)
                    {
                        Console.Write("virheelllinen valinta! Anna määrä väliltä 2-20: ");
                        goto insertmaara;     //PALAUTTAA Takaisin jos antaa virheellisen arvon
                    }
                    Console.WriteLine();
                    for (int i = 0; i < maara; i++)       //KÄYDÄÄN FOR LAUSEELLA LÄPI SYÖTETTY MÄÄRÄ JOUKKUEITA JA ANNETAAN NIILLE NIMI
                    {
insertjoukkue:
                        try
                        {
                            Console.Write("Anna {0}. joukkueen nimi: ", i + 1);
                            joukkueet = new Joukkue(Console.ReadLine());
                            Joukkueluottelo.Add(joukkueet);
                            Sarjataulukko.Add(joukkueet);
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("virheelllinen valinta! ");
                            goto insertjoukkue;     //PALAUTETAAN JOS LYÖ VIRHEELLISEN ARVON
                        }
                    }
                    break;

                case 2:         // SYÖTÄ JOUKKUEIDEN PELAAJALISTA
                    int     pelaajaID = 0;
                    Pelaaja pelaajat;
                    for (int i = 0; i < Joukkueluottelo.Count; i++)       //KYSELEE FOR LAUSEEN AVULLA KAIKKIEN SYÖTETTYJEN JOUKKUEIDEN PELAAJAT
                    {
insertpelaajamaara:
                        try
                        {
                            Console.Write("Anna joukkueen {0} pelaaja määrä:", Joukkueluottelo[i].GetNimi());     //KYSYTÄÄN PELAAJA MÄÄRÄÄ
                            pelaajamaara = int.Parse(Console.ReadLine());
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("virheelllinen valinta! ");
                            goto insertpelaajamaara;           //PALAUTTAA JOS LYÖ VIRHELYÖNNIN
                        }
                        for (int j = 0; j < pelaajamaara; j++) //KÄY LÄPIANNETUN PELAAJAMÄÄRÄN JA KYSELEE PELAAJAN TIEDOT SEURAAVASSA VAIHEESSA
                        {
                            int    pelinumero, syntymavuosi;
                            string joukkue, etunimi, sukinimi;
                            pelaajaID++;
insertpelaaja:
                            Console.WriteLine("Joukkueen {0} pelaaja {1}.", Joukkueluottelo[i].GetNimi(), j + 1);
                            joukkue = Joukkueluottelo[i].GetNimi();
                            try
                            {
                                Console.Write("Anna Pelinumero: ");
                                pelinumero = int.Parse(Console.ReadLine());
                                Console.Write("Anna etunumi: ");
                                etunimi = (Console.ReadLine());
                                Console.Write("Anna Sukunimi: ");
                                sukinimi = Console.ReadLine();
                                Console.Write("Anna syntymävuosi: ");
                                syntymavuosi = int.Parse(Console.ReadLine());
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Virheellinen valinta aloita tietojen antaminen alusta!");
                                Console.WriteLine();
                                goto insertpelaaja;      //PALAUTETAAN JOS TEKEE SYÖTTEESSÄ VIRHEEN
                            }
                            //Tarkistetaan että pelaajan pelipaikka annetaan oikeassa muodossa
takaisin:
                            Console.Write("Anna pelipaikka seuraavista --> hyökkääjä/puolustaja/maalivahti: ");
                            string pelipaikka = Console.ReadLine();
                            if (pelipaikka == "hyökkääjä" || pelipaikka == "puolustaja" || pelipaikka == "maalivahti")
                            {
                                //LUODAAN UUSI PELAAJA JA LISÄTÄÄN SE PELAAJALUOTTEOLO LISTAAN
                                pelaajat = new Pelaaja(pelaajaID, joukkue, pelinumero, etunimi, sukinimi, syntymavuosi, pelipaikka);
                                pelaajaluettelo.Add(pelaajat);
                                Console.WriteLine();
                            }
                            else
                            {
                                Console.WriteLine("vihreellinen pelipaikka");
                                goto takaisin;       //PALAUTTAA JOS TEKEE ESIM. VIRHELYÖNNIN
                            }
                        }
                    }
                    break;

                case 3:      //HAETAAN Joukkueluettolosta OTTELUITA kahden for lauseen avulla.
                             //Ottelujen asettelun jälkeen lasketaan foreach lauseilla sarjataulukoden kaikki halutut tiedot. Niiden tulostus tehdään tosin myöhemmässä casessa.
                    Ottelu uusiOttelu;
                    Console.WriteLine();

                    for (int i = 0; i < Joukkueluottelo.Count; i++)
                    {
                        for (int j = 0; j < Joukkueluottelo.Count; j++)
                        {
                            if (i == j)     // TÄLLÄ ESTETÄÄN ETTEI JOUKKUE VOI PELATA ITSEÄÄN VASTAAN
                            {
                                continue;
                            }
                            else
                            {
                                ottelulaskuri++;     //LASKETAAN JUOKSEVALLA NUMEROINNILLA OTTELU ID
                            }
insertottelu:
                            string koti, vieras;
                            int  maalitKoti, maalitVieras;
                            char jatkoaika;
                            Console.WriteLine("ottelunumero:{0} = {1} vs {2}", ottelulaskuri, Joukkueluottelo[i].GetNimi(), Joukkueluottelo[j].GetNimi());
                            koti   = Joukkueluottelo[i].GetNimi();
                            vieras = Joukkueluottelo[j].GetNimi();
syotapvm:
                            try
                            {
                                Console.Write("Anna ottelulle päivämäärä muotoa DD.MM.YYYY = ");
                                paivamaara = DateTime.Parse(Console.ReadLine());
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("virheellinen syöte");
                                goto syotapvm;     //PALAUTTAA JOS TEKEE ESIM. VIRHELYÖNNIN
                            }

                            try
                            {
                                Console.Write("Syötä varsinaisen peliajan maalimäärä kotijoukkueelle: ");
                                maalitKoti = int.Parse(Console.ReadLine());
                                Console.Write("Syötä varsinaisen peliajan maalimäärä vierasjoukkueelle: ");
                                maalitVieras = int.Parse(Console.ReadLine());
                            }
                            catch (Exception)
                            {
                                Console.WriteLine("Virheellinen syöte");
                                Console.WriteLine();
                                goto insertottelu;      //PALAUTETAAN JOS ASETTAA VIRHAALLISIÄ ARVOJA
                            }

                            //LUODAAN UUSI OTTELU JA LISÄTÄÄN SE Ottelut LISTAAN
                            uusiOttelu = new Ottelu(ottelulaskuri, koti, vieras, maalitKoti, maalitVieras, paivamaara);
                            Ottelut.Add(uusiOttelu);

                            //JOS MAALIT ON TASAN TARKASTELLAAN IF LAUSEILLA VOITTAJA JATKOAJALTA. JOS JOMPIKUMPI JOUKKUE VOITTAA VARSINAISELLA OHITETAAN TUO KYSELY
                            if (maalitKoti == maalitVieras)
                            {
jatkoaikasyöte:
                                Console.WriteLine();
                                Console.WriteLine("Ottelun varsinainen peliaika päättyy tasan");
                                Console.Write("Aseta jatkoajan/rl-kisan voittaja (koti tai vieras) merkillä --> k tai v : ");
                                try
                                {
                                    jatkoaika = char.Parse(Console.ReadLine());
                                    if (jatkoaika == 'k')
                                    {
                                        Console.WriteLine("Ottelun voittaja jatkoajan jälkeen on {0}", uusiOttelu.getJoukkue1());
                                        uusiOttelu.checkjatkoaikavoittaja(uusiOttelu.getJoukkue1());
                                    }
                                    else if (jatkoaika == 'v')
                                    {
                                        Console.WriteLine("Ottelun voittaja jatkoajan jälkeen on {0}", uusiOttelu.getJoukkue2());
                                        uusiOttelu.checkjatkoaikavoittaja(uusiOttelu.getJoukkue2());
                                    }
                                    else
                                    {
                                        Console.WriteLine("Virheellinen syöte");
                                        goto jatkoaikasyöte;        //PALAUTETAAN JOS SYÖTE EI OLE k tai v
                                    }
                                }
                                catch (Exception)
                                {
                                    Console.WriteLine("Virheellinen syöte");
                                    goto jatkoaikasyöte;     //PALAUTETAAN jos syöte on vihreellinen esim. pelkkä entterin painaminen
                                }
                            }
                            else
                            {
                                Console.WriteLine("Ottelun voittaja on: {0}", uusiOttelu.Getvoittaja());
                            }
                            Console.WriteLine();     //TYHJÄ RIVI TULOSTUKSEEN

                            //SYÖTETYN OTTELUN JÄLKEEN VALITAAN EDETÄÄNKÖ PÄÄVALIKKOON VAI SYÖTETÄÄNKÖ UUSI OTTELU
insertvalinta2:
                            try
                            {
                                Console.Write("Päävalikkoon pääset syöttämällä: 0\nJatkaaksesi uuteen otteluun anna joku numero: ");
                                valinta2 = int.Parse(Console.ReadLine());
                                Console.WriteLine();
                                if (valinta2 == 1)
                                {
                                    continue;
                                }
                                else if (valinta2 == 0)
                                {
                                    goto ulos;
                                }
                            }

                            catch (Exception)
                            {
                                Console.WriteLine("Virheellinen arvo");
                                goto insertvalinta2;
                            }
                        }
                    }
ulos:               //jos on valittu ettei haluta syöttää uutta ottelua tämän avulla päästään ulos for silmukasta


                    //KÄYDÄÄN SARJATAULUKKO LISTA LÄPI
                    foreach (Joukkue laske in Sarjataulukko)
                    {
                        //KÄYDÄÄN OTTELUT LISTA LÄPIT
                        foreach (Ottelu aseta in Ottelut)
                        {
                            //LISÄTÄÄN 3pistettä Varsinaisen peliajan voittajalle
                            if (aseta.Getvoittaja() == laske.GetNimi()) //KUN VOITTAJA ON SAMA KUIN SARJATAULUKON NIMI
                            {
                                laske.SetPisteet(3);                    //LIÄSÄTÄÄN 3pistettä taulukkoon
                                laske.Set3pVoitot(1);                   //LIÄSÄTÄÄN 1 3pisteen voitto taulukkoon
                            }
                            //ASETAAN PISTE Kotijoukkueelle jos varsinainen peliaika tasan.
                            if (aseta.GetMaalit1() == aseta.GetMaalit2() && aseta.getJoukkue1() == laske.GetNimi())
                            {
                                laske.SetPisteet(1);     //LIÄSÄTÄÄN kotijoukkueelle 1piste taulukkoon
                                laske.set1pTappio(1);    //LIÄSÄTÄÄN 1pisteen tappio taulukkoon
                            }
                            //ASETAAN PISTE vierasjoukkueelle jos varsinainen peliaika tasan.
                            if (aseta.GetMaalit1() == aseta.GetMaalit2() && aseta.getJoukkue2() == laske.GetNimi())
                            {
                                laske.SetPisteet(1);     //LIÄSÄTÄÄN vierasjoukkueelle 1piste taulukkoon
                                laske.set1pTappio(1);    //LIÄSÄTÄÄN 1pisteen tappio taulukkoon
                            }
                            //LISÄTÄÄN piste jatkoaikavoittajalle
                            if (aseta.GetMaalit1() == aseta.GetMaalit2() && aseta.getJatkoaikavoittaja() == laske.GetNimi())
                            {
                                laske.SetPisteet(1);         //LISÄTÄÄN PISTE JATKOAIKA VOITOSTA
                                laske.SetTehdytMaalit(1);    //Lisätään jatkoaika/rankaistuslaukauskilpailun maali tehtyihin maaleihin
                                laske.set2pVoitot(1);        //LISÄTÄÄN 2pisteen voitto joukkueelle
                                laske.set1pTappio(-1);       // VÄHENNETÄÄn JATKOAIKA VOITTAJALTA 1kpl 1pisteen tappiota koska se joudutaan aimmeammassa vaiheessa asettaa molemmille joukkueille
                            }
                            //LISÄTÄÄN OTTELU lukumäärää pelaaville joukkueille
                            if (aseta.getJoukkue1() == laske.GetNimi() || aseta.getJoukkue2() == laske.GetNimi())
                            {
                                laske.SetOtteluLKM(1);
                            }
                            //TEHDYT MAALIT KOTIJOUKKUEELLE
                            if (aseta.getJoukkue1() == laske.GetNimi())
                            {
                                laske.SetTehdytMaalit(aseta.GetMaalit1());
                            }
                            //TEHDYTMAALIT VIERASJOUKKUEELLE
                            if (aseta.getJoukkue2() == laske.GetNimi())
                            {
                                laske.SetTehdytMaalit(aseta.GetMaalit2());
                            }
                            //PÄÄSTETYTMAALIT KOTIJOUKKUEELLE
                            if (aseta.getJoukkue1() == laske.GetNimi())
                            {
                                laske.SetPaastetytMaalit(aseta.GetMaalit2());
                            }
                            //PÄÄSTETYT MAALIT VIERASJOUKKUEELLE
                            if (aseta.getJoukkue2() == laske.GetNimi())
                            {
                                laske.SetPaastetytMaalit(aseta.GetMaalit1());
                            }
                            //PÄÄSTETTY MAALI vierasjoukkueelle JOS TULEE JATKOAIKA TAPPIO
                            if (aseta.getJoukkue1() == aseta.getJatkoaikavoittaja() && aseta.getJoukkue2() == laske.GetNimi())
                            {
                                laske.SetPaastetytMaalit(1);
                            }
                            //PÄÄSTETTY MAALI kotijoukkueelle JOS TULEE JATKOAIKA TAPPIO

                            if (aseta.getJoukkue2() == aseta.getJatkoaikavoittaja() && aseta.getJoukkue1() == laske.GetNimi())
                            {
                                laske.SetPaastetytMaalit(1);
                            }
                            laske.set0pTappio();     // ASETETAAN 0pisteen tappiot
                        }
                    }
                    Sarjataulukko.Sort();     //JÄRJESTETÄÄN SARJATAUKUKKO

                    break;

                //Tulostaa listan pelatuistat otteluista
                case 4:

                    foreach (Ottelu item in Ottelut)
                    {
                        if (item.GetMaalit1() == item.GetMaalit2())
                        {
                            Console.WriteLine("Ottelunro:{0} pvm:{1}\n{2}({3}) VS {4}({5}) Voittaja jatkoaika/rl: {6}", item.getOtteluID(), item.Getottelupvm(), item.getJoukkue1(), item.GetMaalit1(), item.getJoukkue2(), item.GetMaalit2(), item.getJatkoaikavoittaja());
                            Console.WriteLine();
                        }
                        else
                        {
                            Console.WriteLine("Ottelunro:{0} pvm:{1}\n{2}({3}) VS {4}({5}) Voittaja: {6}", item.getOtteluID(), item.Getottelupvm(), item.getJoukkue1(), item.GetMaalit1(), item.getJoukkue2(), item.GetMaalit2(), item.Getvoittaja());
                        }
                        Console.WriteLine();
                    }
                    Console.WriteLine("Jatka painamalla enter: ");
                    Console.ReadLine();
                    break;

                case 5:
                    //TULOSTETAAN SARJATAULUKKO
                    Console.WriteLine("Joukkue\t\t\tO\tV3\tV2\tH1\tH0 \tTM\tPM\tME\tP ");

                    foreach (Joukkue jarjestys in Sarjataulukko)
                    {
                        Console.WriteLine($"{jarjestys.GetNimi()}\t\t\t{jarjestys.GetOtteluLkm()}\t{jarjestys.Get3pVoitot()}\t{jarjestys.Get2pVoitot()}\t {jarjestys.Get1ptappiot()}\t{jarjestys.Get0ptappiot()}\t{jarjestys.GetTehdytMaalit()}" +
                                          $"\t{jarjestys.GetPaastetytMaalit()}\t{jarjestys.GetTehdytMaalit() - jarjestys.GetPaastetytMaalit()}\t{jarjestys.Getpisteet()} ");
                    }
                    //SELITEÄÄN LYHENTEIDEN MERKITYKSET
                    Console.WriteLine("\nO=ottelut: V3=voitto: V2=jatkoaikavoitto: H1=jatkoaikatappio: H0=tappio: TM=tehdytmaalit\n" +
                                      "PM=päästetyt maalit: P=pisteet\n");
                    Console.WriteLine("Jatka painamalla enter:");
                    Console.ReadLine();
                    break;

                case 6:
                    //TULOSTAA LISTAAN PELAAJISTA
                    foreach (Pelaaja item in pelaajaluettelo)
                    {
                        Console.WriteLine($"Nimi:{item.getEtunimi()} {item.getSukunimi()}  Syntymävuosi:{item.getIka()}\nJoukkue:{item.getPeJoukkue()}\nPelipaikka:{item.GETpelipaikka()}");
                        Console.WriteLine();
                    }
                    Console.WriteLine("Jatka painamalla enter:");
                    Console.ReadLine();
                    break;


                case 7:

                    //LATAA tiedot Tietokantaan
                    // Käyttäjätunnus: postgres
                    // Salasana: Grespost99
                    // Tietokanta Sarjataulukko
                    // Taulukot: taulukko, ottelut, pelaajalista
                    try
                    {
                        foreach (Joukkue lataaSarja in Sarjataulukko)
                        {
                            Tietokanta.LisaaJoukkue(lataaSarja);
                        }
                        foreach (Ottelu lataaOttelut in Ottelut)
                        {
                            Tietokanta.LisaaOttelu(lataaOttelut);
                        }
                        foreach (Pelaaja lataapelaajat in pelaajaluettelo)
                        {
                            Tietokanta.LisaaPelaajat(lataapelaajat);
                        }
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Lataus tietokantaan ei onnistunut!");
                        Console.WriteLine("Jatka painamalla Enter");
                        Console.ReadLine();
                        goto ulos;
                    }

                    break;

                case 8:
                    //TYHJENTÄÄ JOKAISESTA LISTASTA KAIKKI TIEDOT
                    Ottelut.Clear();
                    Sarjataulukko.Clear();
                    Joukkueluottelo.Clear();
                    pelaajaluettelo.Clear();
                    Console.WriteLine("Kaikki tiedot tyhjätty, jatka painamalla enter: ");
                    Console.ReadLine();


                    break;

                default:
                    break;
                }
            } while (valinta > 0);
        }