/// <summary>
        /// Vytvoří jednu SRA pro jeden předmět
        /// </summary>
        /// <param name="akce">Rozvrhová akce</param>
        public SRA(RozvrhovaAkce akce)
        {
            Inicializuj();

            VnoreneAkce.Add(akce);
            Predmety.Add(akce.PredmetRef);
            PocetStudentuSRA = akce.Obsazeni;
        }
Example #2
0
        /// <summary>
        /// Bstará zprávně zařazení a přidání referencí mezi rozvrhovou akcí a souvisejícími objekty
        /// </summary>
        /// <param name="data">Objekt databáze kam se data zařadí</param>
        /// <param name="student">Objekt studenta jehož se rozvrhová akce týká</param>
        /// <param name="roak">Zpracovávaná akce studenta</param>
        /// <param name="serializer">NewtonSoft JSON serializer pro deserializaci staženého souboru</param>
        private static void Handle_Roak(STAG_Classes.STAG_Database data, STAG_Classes.Student student, STAG_Classes.RozvrhovaAkce roak, JsonSerializer serializer)
        {
            // Zajistím aby mi nechyběl předmět této rozvrhové akce
            // Zkontroluji, jestli už znám katedru toho předmětu
            if (!data.PredmetyPodleKateder.ContainsKey(roak.Katedra))
            {
                // Zatim neznam ~ neni z me fakultu... musim stahnout (nebyl obsažen v predmetyByFakultaFullInfo)
                Handle_PredmetInfo(roak.Katedra, roak.Predmet, data, serializer);
            }
            // Zkontroluji, jestli už ten předmět znám
            if (!data.PredmetyPodleKateder[roak.Katedra].ContainsKey(roak.Predmet))
            {
                // Nezman predmet... musim stahnout
                Handle_PredmetInfo(roak.Katedra, roak.Predmet, data, serializer);
            }

            // vvvvv   REFERENCE   vvvvvv

            // Ulozim si akci a ridam reference student => roak
            if (!data.Akce.ContainsKey(roak.RoakIdno))
            {
                data.Akce.Add(roak.RoakIdno, roak);

                // Pridam reference roak <=> predmet
                data.PredmetyPodleKateder[roak.Katedra][roak.Predmet].VsechnyAkce.Add(roak);
                roak.PredmetRef = data.PredmetyPodleKateder[roak.Katedra][roak.Predmet];
            }

            // Přidám akci do rozvrhu studenta
            student.Rozvrh.Add(data.Akce[roak.RoakIdno]);
            // Pro zajímavost zjišťuji kolik studentů skutečně ukazuje na tuto akci (porovnání obsazenosti vs. referencí)
            data.Akce[roak.RoakIdno].referenceCount++;
        }
 private static void ZkontrolujAkci(List <STAG_Classes.Ucitel> neco, KeyValuePair <string, STAG_Classes.Predmet> predmet, ref PredmetVDotazniku predmetVDotazniku, STAG_Classes.RozvrhovaAkce akce)
 {
     if (predmetVDotazniku == null)
     {
         predmetVDotazniku = new PredmetVDotazniku()
         {
             predmet = predmet.Value,
             typAkce = akce.TypAkceZkr,
             ucitele = new Dictionary <string, List <Ucitel> >()
         };
     }
     foreach (var ucitel in neco)
     {
         if (!(predmetVDotazniku.ucitele.ContainsKey(ucitel.Katedra) && predmetVDotazniku.ucitele[ucitel.Katedra].Contains(ucitel)))
         {
             predmetVDotazniku.AddUcitel(ucitel);
         }
     }
 }