public static void CapacityCheck(Room r) { TermDao tDao = new TermDao(); ReservationDao resDao = new ReservationDao(); IList <Term> terms = tDao.GetTermsByRoom(r); foreach (Term t in terms) { //pokud je u nektereho terminu nastavena vetsi kapacita nez je nova maximalni kapacita mistnosti, zmen kapacitu terminu na max.kapacitu mistnosti if (r.MaxCapacity < t.Capacity && t.EndTerm > DateTime.Now) { int uCount = r.MaxCapacity - (t.Capacity - tDao.GetActualCapacity(t)); //pokud je prihlaseno vice lidi nez nova max.kapacita mistnosti, odstran rezervace poslednich prihlasenych if (uCount > 0) { IList <Reservation> reservations = resDao.GetLastReservationByTerm(t, uCount); foreach (Reservation res in reservations) { resDao.Delete(res); } } t.Capacity = r.MaxCapacity; tDao.Update(t); } } }
//pridat upozorneni pro vypsane teminy public ActionResult Delete(int id) { try { RoomDao rDao = new RoomDao(); Room r = rDao.GetById(id); //je zapotřebí smazat nejdrive vsechny terminy v teto mistnosti, a take rezervace na tyto terminy TermDao tDao = new TermDao(); ReservationDao resDao = new ReservationDao(); IList <Term> terms = tDao.GetTermsByRoom(r); foreach (Term t in terms) { IList <Reservation> reservations = resDao.GetAllReservationsByTerm(t); foreach (Reservation res in reservations) { resDao.Delete(res); } tDao.Delete(t); } rDao.Delete(r); TempData["succes"] = "Místnost " + r.Name + " byla odstraněna, stejně tak i všechny termíny v této místnosti."; } catch (Exception e) { Console.WriteLine(e); throw; } return(RedirectToAction("Index")); }
public ActionResult Add(Term term, int activityId, int roomId, int timeLong) { try { if (ModelState.IsValid) { TermDao tDao = new TermDao(); ActivityDao aDao = new ActivityDao(); RoomDao rDao = new RoomDao(); UserDao uDao = new UserDao(); DateTime end = term.StartTerm.AddMinutes((double)timeLong); if (term.StartTerm.Hour < 7 || term.StartTerm.Hour > 21 || end.Hour < 7 || end.Hour > 21) { TempData["error"] = "Termín nebyl úspěšně přidán. Termín musí být založen v otevíracích hodinách (7:00 až 20:59)."; return(RedirectToAction("Create", new { term })); } if (term.StartTerm > end) { TempData["error"] = "Termín nebyl úspěšně přidán. Konec termínu je dřív než jeho začátek."; return(RedirectToAction("Create", new { term })); } term.EndTerm = end; term.Activity = aDao.GetById(activityId); term.Room = rDao.GetById(roomId); term.Trainer = uDao.GetByLogin(User.Identity.Name); ViewBag.Rooms = new RoomDao().GetAll(); ViewBag.Activities = new ActivityDao().GetAll(); //kontrola kapacity terminu if (term.Room.MaxCapacity >= term.Capacity) { IList <Term> termsInRoom = tDao.GetTermsByRoom(term.Room); bool validDates = true; //kontrola dostupnosti mistnosti ve zvoleny cas foreach (Term t in termsInRoom) { if ( (t.EndTerm > DateTime.Now) && //neukoncene terminy !( //zapor (t.StartTerm > term.StartTerm && t.StartTerm >= term.EndTerm) || //zacatek i konec terminu je pred zacatkem jineho terminu (t.EndTerm <= term.StartTerm && t.EndTerm < term.EndTerm) //zacatek i konec terminu je po konci jineho terminu ) ) { validDates = false; break; } } if (validDates == true) { tDao.Create(term); TempData["succes"] = "Termín úspěšně vytvořen."; } else { TempData["warning"] = "Časový plán termínu je v konfilktu s jiným termínem ve stejné místnosti."; return(View("Create", term)); } } else { TempData["warning"] = "Maximální kapacita místnosti je menší než kapacita vytvářeného termínu."; return(View("Create", term)); } } else { return(View("Create", term)); } } catch (Exception e) { Console.WriteLine(e); throw; } return(RedirectToAction("Index")); }