private void provjeriSobe(ZahtjevZaCimeraj zahtjevZaCimeraj, ZahtjevZaCimeraj zahtjevPrvogCimera)
 {
     if (zahtjevZaCimeraj.PaviljonId != zahtjevPrvogCimera.PaviljonId || zahtjevZaCimeraj.SobaId != zahtjevPrvogCimera.SobaId)
     {
         throw new Exception("Sobe moraju biti iste u svim zahtjevima");
     }
 }
Exemple #2
0
        public IActionResult posaljiCimeraj(IFormCollection forma, int id)
        {
            string paviljon        = forma["dlPaviljon"];
            string soba            = forma["dlSoba"];
            string cimer1          = forma["fldCimer1"];
            string cimer2          = forma["fldCimer2"];
            string dodatneNapomene = forma["fldNpomene"];

            if (string.IsNullOrEmpty(cimer1) || string.IsNullOrEmpty(cimer2) ||
                _context.Student.Find(Int32.Parse(cimer1)) == null || _context.Student.Find(Int32.Parse(cimer2)) == null)
            {
                return(RedirectToAction("Cimeraj", "Student", new { id }));
            }

            // Snimi zahtjev u bazu podataka
            ZahtjevZaCimeraj zahtjevZaCimeraj = new ZahtjevZaCimeraj();

            zahtjevZaCimeraj.PaviljonId      = Int32.Parse(paviljon);
            zahtjevZaCimeraj.SobaId          = Int32.Parse(soba);
            zahtjevZaCimeraj.Cimer1Id        = Int32.Parse(cimer1);
            zahtjevZaCimeraj.Cimer2Id        = Int32.Parse(cimer2);
            zahtjevZaCimeraj.DodatneNapomene = dodatneNapomene;

            zahtjevZaCimeraj.StudentId = id;

            _context.Add(zahtjevZaCimeraj);
            _context.SaveChanges();

            return(RedirectToAction("Student", "Student", new { ID = id }));
        }
        public async Task <IActionResult> PregledCimerajAsync(int id)
        {
            ZahtjevZaCimeraj zahtjevZaCimeraj = _context.ZahtjevZaCimeraj.Find(id);

            zahtjevZaCimeraj.Soba     = _context.Soba.Find(zahtjevZaCimeraj.SobaId);
            zahtjevZaCimeraj.Paviljon = _context.Paviljon.Find(zahtjevZaCimeraj.PaviljonId);
            //zahtjevZaCimeraj.Cimer1 = _context.Student.Find(zahtjevZaCimeraj.Cimer1Id);
            zahtjevZaCimeraj.Cimer1 = await GetStudentAsync(zahtjevZaCimeraj.Cimer1Id);

            zahtjevZaCimeraj.Cimer1.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaCimeraj.Cimer1.LicniPodaciId);

            //zahtjevZaCimeraj.Cimer2 = _context.Student.Find(zahtjevZaCimeraj.Cimer2Id);
            zahtjevZaCimeraj.Cimer2 = await GetStudentAsync(zahtjevZaCimeraj.Cimer2Id);

            zahtjevZaCimeraj.Cimer2.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaCimeraj.Cimer2.LicniPodaciId);

            zahtjevZaCimeraj.Student = _context.Student.Find(zahtjevZaCimeraj.StudentId);

            zahtjevZaCimeraj.Student.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaCimeraj.Student.LicniPodaciId);

            ViewBag.ZahtjevZaCimeraj = zahtjevZaCimeraj;

            return(View());
        }
        public async Task <IActionResult> OdobriCimerajAsync(int id)
        {
            ZahtjevZaCimeraj zahtjevZaCimeraj = _context.ZahtjevZaCimeraj.Find(id);

            ZahtjevZaCimeraj zahtjevPrvogCimera  = _context.ZahtjevZaCimeraj.FirstOrDefault(z => z.StudentId == zahtjevZaCimeraj.Cimer1Id);;
            ZahtjevZaCimeraj zahtjevDrugogCimera = _context.ZahtjevZaCimeraj.FirstOrDefault(z => z.StudentId == zahtjevZaCimeraj.Cimer2Id);

            int potrebnoMjesta = 3;

            if (zahtjevZaCimeraj.Cimer1Id == 0)
            {
                zahtjevPrvogCimera  = zahtjevDrugogCimera;
                zahtjevDrugogCimera = null;
                potrebnoMjesta--;
            }

            if (zahtjevZaCimeraj.Cimer2Id == 0)
            {
                potrebnoMjesta--;
            }

            if (potrebnoMjesta == 1)
            {
                throw new Exception("Student nije naveo cimere");
            }

            if (zahtjevPrvogCimera == null || zahtjevZaCimeraj.Cimer2Id != 0 && zahtjevDrugogCimera == null)
            {
                throw new Exception("Svi cimeri moraju postati zahtjev za cimeraj");
            }

            if (potrebnoMjesta == 2)
            {
                if (zahtjevPrvogCimera.Cimer1Id == zahtjevZaCimeraj.StudentId || zahtjevPrvogCimera.Cimer2Id == zahtjevZaCimeraj.StudentId)
                {
                    provjeriSobe(zahtjevZaCimeraj, zahtjevPrvogCimera);
                }
                else
                {
                    throw new Exception("Svi cimeri moraju poslati zahtjev za cimeraj");
                }
            }
            else
            {
                if ((zahtjevZaCimeraj.StudentId == zahtjevPrvogCimera.Cimer1Id || zahtjevZaCimeraj.StudentId == zahtjevPrvogCimera.Cimer2Id) &&
                    (zahtjevZaCimeraj.StudentId == zahtjevDrugogCimera.Cimer1Id || zahtjevZaCimeraj.StudentId == zahtjevDrugogCimera.Cimer2Id))
                {
                    provjeriSobe(zahtjevZaCimeraj, zahtjevPrvogCimera);
                    provjeriSobe(zahtjevZaCimeraj, zahtjevDrugogCimera);
                }
                else
                {
                    throw new Exception("Svi cimeri moraju poslati zahtjev za cimeraj");
                }
            }

            Soba soba = _context.Soba.Find(zahtjevZaCimeraj.SobaId);

            List <Student> studentiUSobi = _context.Student.Where(s => s.SobaId == soba.SobaId).ToList();

            if (studentiUSobi.Count + potrebnoMjesta > soba.Kapacitet)
            {
                throw new Exception("Nema dovoljno mjesta u sobi u koju student sa cimerima želi da bude");
            }

            Student student = _context.Student.Find(zahtjevZaCimeraj.StudentId);

            student.SobaId = soba.SobaId;
            _context.Student.Update(student);

            if (zahtjevZaCimeraj.Cimer1Id != 0)
            {
                Student student1 = await GetStudentAsync(zahtjevZaCimeraj.Cimer1Id);

                student1.SobaId = soba.SobaId;
                _context.Student.Update(student1);
            }

            if (zahtjevZaCimeraj.Cimer2Id != 0)
            {
                //Student student2 = _context.Student.Find(zahtjevZaCimeraj.Cimer2Id);
                Student student2 = await GetStudentAsync(zahtjevZaCimeraj.Cimer2Id);

                student2.SobaId = soba.SobaId;
                _context.Student.Update(student2);
            }

            _context.Zahtjev.Remove(zahtjevZaCimeraj);
            _context.Zahtjev.Remove(zahtjevPrvogCimera);
            if (zahtjevDrugogCimera == null)
            {
                _context.Zahtjev.Remove(zahtjevDrugogCimera);
            }

            _context.SaveChanges();

            return(RedirectToAction("PregledZahtjeva", "Zahtjev"));
        }
        public async Task <IActionResult> PregledZahtjevaAsync()
        {
            ICollection <Zahtjev> zahtjevi = new Collection <Zahtjev>();

            StudentskiDomSingleton studentskiDom = StudentskiDomSingleton.getInstance();
            await studentskiDom.RefreshZahtjeviAsync();

            foreach (Zahtjev z in studentskiDom.Zahtjevi)
            {
                if (z is ZahtjevZaUpis)
                {
                    ZahtjevZaUpis zahtjevZaUpis = z as ZahtjevZaUpis;

                    //zahtjevZaUpis.PrebivalisteInfo = _context.PrebivalisteInfo.Find(zahtjevZaUpis.PrebivalisteInfoId);
                    //zahtjevZaUpis.SkolovanjeInfo = _context.SkolovanjeInfo.Find(zahtjevZaUpis.SkolovanjeInfoId);
                    //zahtjevZaUpis.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaUpis.LicniPodaciId);

                    zahtjevi.Add(z);
                }
                else if (z is ZahtjevZaCimeraj)
                {
                    ZahtjevZaCimeraj zahtjevZaCimeraj = z as ZahtjevZaCimeraj;

                    //zahtjevZaCimeraj.Soba = _context.Soba.Find(zahtjevZaCimeraj.SobaId);
                    //zahtjevZaCimeraj.Paviljon = _context.Paviljon.Find(zahtjevZaCimeraj.PaviljonId);
                    ////zahtjevZaCimeraj.Cimer1 = _context.Student.Find(zahtjevZaCimeraj.Cimer1Id);
                    ////zahtjevZaCimeraj.Cimer2 = _context.Student.Find(zahtjevZaCimeraj.Cimer2Id);
                    //
                    ////zahtjevZaCimeraj.Student = _context.Student.Find(zahtjevZaCimeraj.StudentId);
                    //
                    //zahtjevZaCimeraj.Cimer1 = await GetStudentAsync(zahtjevZaCimeraj.Cimer1Id);
                    //zahtjevZaCimeraj.Cimer2 = await GetStudentAsync(zahtjevZaCimeraj.Cimer2Id);
                    //
                    //zahtjevZaCimeraj.Student = await GetStudentAsync(zahtjevZaCimeraj.StudentId);
                    //
                    //zahtjevZaCimeraj.Student.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaCimeraj.Student.LicniPodaciId);

                    zahtjevi.Add(z);
                }
                else if (z is ZahtjevZaPremjestanje)
                {
                    ZahtjevZaPremjestanje zahtjevZaPremjestanje = z as ZahtjevZaPremjestanje;

                    //zahtjevZaPremjestanje.Soba1 = _context.Soba.Find(zahtjevZaPremjestanje.Soba1Id);
                    //zahtjevZaPremjestanje.Soba2 = _context.Soba.Find(zahtjevZaPremjestanje.Soba2Id);
                    //
                    //zahtjevZaPremjestanje.Paviljon1 = _context.Paviljon.Find(zahtjevZaPremjestanje.Paviljon1Id);
                    //zahtjevZaPremjestanje.Paviljon2 = _context.Paviljon.Find(zahtjevZaPremjestanje.Paviljon2Id);
                    //
                    ////zahtjevZaPremjestanje.Student = _context.Student.Find(zahtjevZaPremjestanje.StudentId);
                    //zahtjevZaPremjestanje.Student= await GetStudentAsync(zahtjevZaPremjestanje.StudentId);
                    //
                    //zahtjevZaPremjestanje.Student.LicniPodaci = _context.LicniPodaci.Find(zahtjevZaPremjestanje.Student.LicniPodaciId);

                    zahtjevi.Add(zahtjevZaPremjestanje);
                }
                else if (z is ZahtjevZaNabavkuNamirnica)
                {
                    ZahtjevZaNabavkuNamirnica zahtjevZaNabavkuNamirnica = z as ZahtjevZaNabavkuNamirnica;

                    if (z.ZahtjevId == 39)
                    {
                        continue;
                    }

                    zahtjevi.Add(zahtjevZaNabavkuNamirnica);
                }
            }

            ViewBag.Zahtjevi = zahtjevi;
            ViewBag.id       = UpravaController.UpravaId;

            return(View());
        }