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
            });
        }