Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        public ActionResult Update(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ě upraven. Termín musí být založen v otevíracích hodinách (7:00 až 20:59).";
                        return(RedirectToAction("Edit", new { term }));
                    }
                    if (term.StartTerm > end)
                    {
                        TempData["error"] = "Termín nebyl úspěšně upraven. Konec termínu je dřív než jeho začátek.";
                        return(RedirectToAction("Edit", new { term }));
                    }

                    term.EndTerm  = end;
                    term.Activity = aDao.GetById(activityId);
                    term.Room     = rDao.GetById(roomId);
                    term.Trainer  = uDao.GetByLogin(User.Identity.Name);
                    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 (
                                !(                                                                   //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.Update(term);
                            TempData["succes"] = "Termín úspěšně upraven.";
                        }
                        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ž upravená kapacita termínu.";
                        return(View("Edit", term));
                    }
                }
                else
                {
                    return(View("Edit", term));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            return(RedirectToAction("Index"));
        }