/// <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++; }
/// <summary> /// Smazat zatizeni studenta /// </summary> /// <param name="student"></param> public bool Smazat(STAG_Classes.Student student) { if (students.ContainsKey(student)) { return(students.Remove(student)); } return(false); }
/// <summary> /// Zmeni zatizeni studenta kontretni katedry /// </summary> /// <param name="student"></param> /// /// <param name="katedra"></param> public bool Smazat(STAG_Classes.Student student, string katedra) { if (students.ContainsKey(student)) { if (students[student].ContainsKey(katedra)) { return(students[student].Remove(katedra)); } } return(false); }
/// <summary> /// Ziskani zateze konkretniho studenta /// </summary> /// <returns>Slovnik Katedra -> zatez</returns> public Dictionary <string, double> ZiskatZatezStudenta(STAG_Classes.Student student) { Dictionary <string, double> ret; if (students.TryGetValue(student, out ret)) { return(Normalize(ret)); } else { return(null); } }
/// <summary> /// Přidání zátěže studenta na katedru /// </summary> /// <param name="student">Osobní číslo studenta FXXYYY</param> /// <param name="katedra">Zkratka katedry</param> /// <param name="zatez">Zatížení studenta</param> public void Pridat(STAG_Classes.Student student, string katedra, double zatez) { if (students.ContainsKey(student)) { if (students[student].ContainsKey(katedra)) { students[student][katedra] += zatez; } else { students[student].Add(katedra, zatez); } } else { students.Add(student, new Dictionary <string, double> { { katedra, zatez } }); } }
/// <summary> /// Zmeni zates studenta na konkretni katedru /// </summary> /// <param name="student"></param> /// <param name="katedra"></param> /// <param name="zatez"></param> /// <returns></returns> public bool Zmenit(STAG_Classes.Student student, string katedra, double zatez) { Smazat(student, katedra); Pridat(student, katedra, zatez); return(true); }