private void printHeader(Models.Predmet predmet)
        {
            Console.Clear();
            Console.WriteLine();
            Console.WriteLine("\t\tSpráva přednášejících předmětu: {0}", predmet);

            Console.WriteLine("\t   -------------------------------------------------------------------------------------------------");
            Console.WriteLine("\t\tID    Jméno                                     ID    Jméno");
            Console.WriteLine("\t   -------------------------------------------------------------------------------------------------");
        }
Beispiel #2
0
        private void printHeader(Models.Predmet predmet)
        {
            Console.Clear();
            Console.WriteLine();
            Console.WriteLine("\t\tSpráva vedoucích semináře předmětu: {0}", predmet);

            Console.WriteLine("\t   -------------------------------------------------------------------------------------------------");
            Console.WriteLine("\t\tID    Jméno                                     ID    Jméno");
            Console.WriteLine("\t   -------------------------------------------------------------------------------------------------");
        }
Beispiel #3
0
 private bool MaPredmetStudenty(Models.Predmet predmet, Models.StudijniObor obor)
 {
     foreach (KeyValuePair <int, Models.Student> student in predmet.Studujici)
     {
         if (student.Value.StudijniObor == obor)
         {
             return(true);
         }
     }
     return(false);
 }
 private bool MaPrednasejiciRozvrhovouAkciPredmetu(Models.Vyucujici ucitel, Models.Predmet predmet)
 {
     foreach (KeyValuePair <Dny, Dictionary <int, Models.RozvrhovaAkce> > rozvrhDne in ucitel.Rozvrh)
     {
         foreach (KeyValuePair <int, Models.RozvrhovaAkce> akce in rozvrhDne.Value)
         {
             if (akce.Value.TypVyuky == TypyVyuky.Přednáška && akce.Value.Predmet == predmet)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
        public override void Render()
        {
            Models.Predmet predmet = (Models.Predmet)Context["predmet"];
            Dictionary <int, Models.Vyucujici> vyucujici = (Dictionary <int, Models.Vyucujici>)Context["vyucujici"];

            string         input     = String.Empty;
            int            i         = 0;
            int            itrBuffer = 0;
            int            item      = 0;
            int            volba     = 0;
            ConsoleKeyInfo key;
            bool           ok          = false;
            bool           emptyBuffer = false;
            int            bufferSize  = 10;
            List <int>     actualId    = new List <int>();

            do // volba editace
            {
                Console.Clear();
                Console.WriteLine();
                Console.WriteLine("\tSPRÁVA PŘEDNÁŠEJÍCÍCH PŘEDMĚTU [{0}]", predmet.Zkratka);
                Console.WriteLine("\r\n\tZvolte další postup:");
                Console.WriteLine();
                Console.WriteLine("\t\t1: Výpis přednášejících předmětu");
                Console.WriteLine("\t\t2: Plnění předmětu přednášejícími");
                Console.WriteLine("\t\t3: Storno");

                Console.Write("\r\n\tVaše volba: ");
                key = Console.ReadKey();
                ok  = (int.TryParse(key.KeyChar.ToString(), out volba)) && (volba > 0 && volba < 4);
            } while (!ok);  // volba editace

            switch (volba)
            {
            case 1:     // Výpis vyučujících předmětu + odstaňování
                do
                {
                    printHeader(predmet);

                    var serazeniVyucujici = from pair in predmet.Prednasejici
                                            orderby pair.Value.Prijmeni ascending
                                            select pair;

                    var v     = serazeniVyucujici.ToList();
                    int count = v.Count;
                    if (count == 0)
                    {
                        Console.WriteLine("\r\n\t\tPředmět zatím neobsahuje žádné přednášející.");
                        Console.Write("\r\n\t\tStiskněte libovolnou klávesu pro návrat. ");
                        Console.ReadKey();
                        Request("Predmet", "PrednasejiciPredmetu", predmet);
                    }

                    bool odd = true;
                    int  pocetNeodstanitelnych = 0;
                    for (i = 0, itrBuffer = 0; i < count; i++)
                    {
                        actualId.Add(v[i].Key);
                        itrBuffer++;

                        if (itrBuffer == bufferSize || (count < bufferSize && itrBuffer == count) || i == count - 1)
                        {
                            do
                            {
                                odd                   = true;
                                emptyBuffer           = false;
                                pocetNeodstanitelnych = 0;
                                for (int j = 0; j < actualId.Count; j++)
                                {
                                    if (odd)
                                    {
                                        if (MaPrednasejiciRozvrhovouAkciPredmetu(vyucujici[actualId[j]], predmet))
                                        {
                                            Console.ForegroundColor = ConsoleColor.DarkGray;
                                            pocetNeodstanitelnych++;
                                        }
                                        Console.Write("\t\t{0,-5} {1,-30}", vyucujici[actualId[j]].Id, vyucujici[actualId[j]].Jmeno + " " + vyucujici[actualId[j]].Prijmeni);
                                        odd = false;
                                        Console.ForegroundColor = ConsoleColor.Black;
                                    }
                                    else
                                    {
                                        if (MaPrednasejiciRozvrhovouAkciPredmetu(vyucujici[actualId[j]], predmet))
                                        {
                                            Console.ForegroundColor = ConsoleColor.DarkGray;
                                            pocetNeodstanitelnych++;
                                        }
                                        Console.WriteLine("\t\t{0,-5} {1,-30}", vyucujici[actualId[j]].Id, vyucujici[actualId[j]].Jmeno + " " + vyucujici[actualId[j]].Prijmeni);
                                        odd = true;
                                        Console.ForegroundColor = ConsoleColor.Black;
                                    }
                                }
                                do
                                {
                                    if (pocetNeodstanitelnych == actualId.Count)
                                    {
                                        Console.Write("\r\n\tStiskněte libovolnou klávesu posun/ukončení: ");
                                        Console.ReadKey();
                                        input = String.Empty;
                                    }
                                    else
                                    {
                                        Console.Write("\r\n\tZadejte ID přednášejícího, kterého chcete odebrat, nebo enter posun/ukončení: ");
                                        input = Console.ReadLine();
                                        ok    = int.TryParse(input, out item);
                                        if (ok)
                                        {
                                            ok = actualId.Contains(item);
                                        }
                                        if (!ok)
                                        {
                                            ok = input == String.Empty;
                                        }
                                        if (input != String.Empty && MaPrednasejiciRozvrhovouAkciPredmetu(vyucujici[item], predmet))
                                        {
                                            ok = false;
                                        }
                                    }
                                } while (!ok);

                                if (input != String.Empty)
                                {
                                    if (vyucujici.ContainsKey(item) && actualId.Contains(item))
                                    {
                                        OnDeleteItem(vyucujici[item]);
                                        actualId.Remove(item);
                                        if (actualId.Count == 0)
                                        {
                                            emptyBuffer = true;
                                        }
                                    }
                                }
                                else
                                {
                                    // nebylo zvoleno
                                    actualId.RemoveRange(0, actualId.Count);
                                }
                                printHeader(predmet);
                                itrBuffer = 0;
                            } while (input != String.Empty && !emptyBuffer);
                        }
                    }
                } while (input != String.Empty && !emptyBuffer);     // (case 2: přidávání)
                Request("Predmet", "PrednasejiciPredmetu", predmet);
                break;

            case 2:     // Plnění předmětů vyučujícími
                do
                {
                    printHeader(predmet);

                    var serazeniVyucujici = from pair in vyucujici
                                            orderby pair.Value.Prijmeni ascending
                                            select pair;

                    var p     = serazeniVyucujici.ToList();
                    int count = p.Count;

                    if (count == 0)
                    {
                        Console.WriteLine("\r\n\t\tV systému dosud neexistuje žádný vyučující.");
                        Console.Write("\r\n\t\tStiskněte libovolnou klávesu pro návrat.");
                        Console.ReadKey();
                        Request("Predmet", "PrednasejiciPredmetu", predmet);
                    }

                    bool odd = true;
                    for (i = 0, itrBuffer = 0; i < count; i++)
                    {
                        if (predmet.Cvicici.ContainsKey(p[i].Key))
                        {
                            continue;
                        }
                        else
                        {
                            actualId.Add(p[i].Key);
                            itrBuffer++;
                        }

                        if (itrBuffer == bufferSize || (count < bufferSize && itrBuffer == count) || i == count - 1)
                        {
                            do
                            {
                                odd         = true;
                                emptyBuffer = false;
                                for (int j = 0; j < actualId.Count; j++)
                                {
                                    if (odd)
                                    {
                                        Console.Write("\t\t{0,-5} {1,-30}", vyucujici[actualId[j]].Id, vyucujici[actualId[j]].Jmeno + " " + vyucujici[actualId[j]].Prijmeni);
                                        odd = false;
                                    }
                                    else
                                    {
                                        Console.WriteLine("\t\t{0,-5} {1,-30}", vyucujici[actualId[j]].Id, vyucujici[actualId[j]].Jmeno + " " + vyucujici[actualId[j]].Prijmeni);
                                        odd = true;
                                    }
                                }
                                do
                                {
                                    Console.Write("\r\n\tZadejte ID přednášejícího, kterého chcete přidat, nebo enter posun/ukončení: ");
                                    input = Console.ReadLine();
                                    ok    = int.TryParse(input, out item);
                                    if (ok)
                                    {
                                        ok = actualId.Contains(item);
                                    }
                                    if (!ok)
                                    {
                                        ok = input == String.Empty;
                                    }
                                } while (!ok);

                                if (input != String.Empty)
                                {
                                    if (vyucujici.ContainsKey(item) && actualId.Contains(item))
                                    {
                                        OnAddItem(vyucujici[item]);
                                        actualId.Remove(item);
                                        if (actualId.Count == 0)
                                        {
                                            emptyBuffer = true;
                                        }
                                    }
                                }
                                else
                                {
                                    // nebylo zvoleno
                                    actualId.RemoveRange(0, actualId.Count);
                                }
                                printHeader(predmet);
                                itrBuffer = 0;
                            } while (input != String.Empty && !emptyBuffer);
                        }
                    }
                } while (input != String.Empty && !emptyBuffer);     // (case 2: přidávání)
                Request("Predmet", "PrednasejiciPredmetu", predmet);
                break;

            case 3:     // Storno
                Request("Predmet", "Default", null);
                break;
            }
        } // render