public async Task <ServiceResult> PrebaciUViseOdjeljenje(Odjeljenje novoOdjeljenje, Odjeljenje nizeOdjeljenje = null) { if (novoOdjeljenje == null) { return new ServiceResult { Message = "Greska", Failed = true } } ; if (_context.Odjeljenje.Any(x => x.Oznaka == novoOdjeljenje.Oznaka)) { return new ServiceResult { Message = "Odjeljenje sa istom oznakom vec postoji.", Failed = true } } ; if (nizeOdjeljenje != null) { if (nizeOdjeljenje.Razred >= novoOdjeljenje.Razred) { return new ServiceResult { Message = "Razred u koji se prebacuje staro odjeljenje mora biti veci od trenutnog.", Failed = true } } ; if (!IsValidnaNarednaSkolskaGodina(nizeOdjeljenje.SkolskaGodina, novoOdjeljenje.SkolskaGodina)) { return new ServiceResult { Message = "Skolska godina mora biti za jednu godinu veca od stare skolske godine.", Failed = true } } ; nizeOdjeljenje.IsPrebacenuViseOdjeljenje = true; _context.Update(nizeOdjeljenje); var stavke = new List <OdjeljenjeStavka>(); var dodjeljeniPredmetiNovi = new List <DodjeljenPredmet>(); await _context.AddAsync(novoOdjeljenje); await _context.SaveChangesAsync(); foreach (var stavka in _context.OdjeljenjeStavka .Where(x => x.OdjeljenjeId == nizeOdjeljenje.Id)) { if (!_ucenikService.IsNegativanOpstiUspjeh(stavka.UcenikId, stavka.OdjeljenjeId)) { stavke.Add(new OdjeljenjeStavka { BrojUDnevniku = 0, OdjeljenjeId = novoOdjeljenje.Id, UcenikId = stavka.UcenikId }); await _context.AddAsync(stavke.Last()); await _context.SaveChangesAsync(); foreach (var predmet in _context.Predmet.Where(x => x.Razred == novoOdjeljenje.Razred)) { dodjeljeniPredmetiNovi.Add(new DodjeljenPredmet { OdjeljenjeStavkaId = stavke.Last().Id, PredmetId = predmet.Id, ZakljucnoKrajGodine = 0, ZakljucnoPolugodiste = 0 }); } } } if (dodjeljeniPredmetiNovi.Any()) { await _context.AddRangeAsync(dodjeljeniPredmetiNovi); } await _context.SaveChangesAsync(); } return(new ServiceResult { Message = "Uspjesno kreirano novo odjeljenje.", Success = true }); }