/// <summary> /// Akcija za premestanje ucenika u sledeci razred u odeljenje sa istom oznakom kao i proslo,i prebacivanje ucenika u to novo odeljenje prilikom /// arhiviranja trenutnog odeljenje usled zavrsetka skolske godine. /// </summary> /// <param name="odeljenje"></param> /// <returns></returns> private int PremestiUSledecuGodinu(Odeljenje odeljenje) { var pom = _context.Odeljenja.Include("Oznaka").SingleOrDefault(o => o.Id == odeljenje.Id); //Ukoliko je 4. razred ucenici se ne premestaju nigde,ili ukoliko je odljenje na trecoj godini na trogodisnjem smeru. if (odeljenje.Razred == 4 || pom.Oznaka.Smerovi.Any(x => x.Trajanje == 3 && odeljenje.Razred == 3)) { return(0); } //objekat u kom se cuva odeljenje iste oznake za sledecu godinu,u koje treba ucenici automatksi da se premeste. var sledecaGodinaOdeljenjeUToku = _context.Odeljenja.SingleOrDefault(o => o.OznakaID == odeljenje.OznakaID && o.Razred == odeljenje.Razred + 1 && o.StatusID == 2); // Status 2 je U toku //Ukoliko ne postoji odeljenje koje je kreirano i u toku,kreira se novo sa godinom upisa jednom vecom od prosle godine. ///<see cref="Odeljenje.SledecaSkolskaGodina(int, int, ApplicationDbContext)"/> if (sledecaGodinaOdeljenjeUToku == null) { sledecaGodinaOdeljenjeUToku = new Odeljenje() { OznakaID = odeljenje.OznakaID, Razred = odeljenje.Razred + 1, PocetakSkolskeGodine = Odeljenje.SledecaSkolskaGodina(odeljenje.Razred + 1, odeljenje.OznakaID, _context), StatusID = 2, KrajSkolskeGodine = Odeljenje.SledecaSkolskaGodina(odeljenje.Razred + 1, odeljenje.OznakaID, _context) + 1 }; _context.Odeljenja.Add(sledecaGodinaOdeljenjeUToku); _context.SaveChanges(); } //Dodavanje ucenika u isto odeljenje sledeceg razreda sa statusom u toku. foreach (var ucenik in odeljenje.Ucenici) { ucenik.OdeljenjeId = sledecaGodinaOdeljenjeUToku.Id; } _context.SaveChanges(); return(0); }
/// <summary> /// Metoda dodeljuje uceniku odeljenje /// </summary> /// <param name="ucenikId"></param> /// <param name="razred"></param> /// <param name="oznaka"></param> /// <returns></returns> private void DodajUcenikaUOdeljenje(int ucenikId, int razred, int oznaka) { var skolskaGodina = _context.SkolskaGodine.SingleOrDefault(s => s.Aktuelna == true); if (skolskaGodina != null) { DateTime pocetakSkolskeGodine = skolskaGodina.PocetakSkolskeGodine.Date; DateTime krajSkolskeGodine = skolskaGodina.KrajSkolskeGodine.Date; DateTime trenutniDatum = DateTime.Now.Date; int status = 0; //Ako nije pocela skolska godina status je 2 if (trenutniDatum < pocetakSkolskeGodine) { status = 2;//Status 2 oznacava da je upis ucenika u toku } //Ako je pocela skolska godina status je 3 else if (trenutniDatum >= pocetakSkolskeGodine && trenutniDatum <= krajSkolskeGodine) { status = 3;//Status 3 oznacava vanredan upis ucenika u odeljenje i tom prilikom ucenik dolazi na kraj dnevnika } else if (trenutniDatum > krajSkolskeGodine) { status = 2; //Status 2 oznacava da je upis ucenika u toku jer je zavrsena skolska godina // i vrsi se upis za sledecu skolsku godinu } var ucenik = _context.Ucenici.Where(u => u.UcenikID == ucenikId) .SingleOrDefault(); if (ucenik != null) { //Dodeljuje se odeljenje sa statusom koji je izabran na formi. var odeljenje = _context.Odeljenja .Include("Status") .SingleOrDefault(o => o.OznakaID == oznaka && o.Razred == razred && o.StatusID == status); //Ukoliko odeljenje nije ni kreirano u bazi bez obzira na status,kreira se. if (odeljenje == null) { //Ukoliko je kreirana nova skolska godina njen Id se dodeljuje odeljenju if (skolskaGodina.PocetakSkolskeGodine.Year == DateTime.Now.Year) { odeljenje = new Odeljenje() { OznakaID = oznaka, Razred = razred, PocetakSkolskeGodine = Odeljenje.SledecaSkolskaGodina(razred, oznaka, _context), StatusID = 2, KrajSkolskeGodine = Odeljenje.SledecaSkolskaGodina(razred, oznaka, _context) + 1, SkolskaGodinaId = skolskaGodina.SkolskaGodinaId }; } //Ukoliko nije kreirana nova skolska godina njen Id se dodeljuje odeljenju kada se bude kreirala else { odeljenje = new Odeljenje() { OznakaID = oznaka, Razred = razred, PocetakSkolskeGodine = Odeljenje.SledecaSkolskaGodina(razred, oznaka, _context), StatusID = 2, KrajSkolskeGodine = Odeljenje.SledecaSkolskaGodina(razred, oznaka, _context) + 1 }; } _context.Odeljenja.Add(odeljenje); _context.SaveChanges(); } else if (odeljenje.StatusID == 3) //Status 3 = kreirano. { var poslednjiBrojUDnevniku = odeljenje.Ucenici.Max(u => u.BrojUDnevniku); ucenik.BrojUDnevniku = poslednjiBrojUDnevniku + 1; //Ucenik se dodaje na kraj dnevnika. ucenik.Odeljenje = odeljenje; ucenik.GenerisiJedinstveniBroj(); } ucenik.OdeljenjeId = odeljenje.Id; _context.Ucenici.AddOrUpdate(ucenik); _context.SaveChanges(); } if (status == 3) { /*Metoda se pozvia da proveri da li postoji odeljenje * kojem nije promenjen status iz "Upis u toku" u "Kreirano odeljenje", * do ovoga moze doci ukoliko je neko odeljenje prvi put kreirano nakon * pocetka skolske. */ PromeniStatusOdeljenjima(); } } }