public ActionResult Index(bool?isActive, int?page) { // Nastavení uskutečněných lekcí jako neaktivních LessonDao lessonDao = new LessonDao(); lessonDao.SetExpiredLessons(); // Tato proměnná by správně neměla být definována uvnitř controlleru, ale měla by to být konfigurační konstanta. const int itemsOnPage = 10; int pg = page.HasValue ? page.Value : 1; int totalClientsReservations; FitnessCentreUser user = new FitnessCentreUserDao().GetByLogin(User.Identity.Name); ReservationDao reservationDao = new ReservationDao(); // Větvení pro výběr uplynulých/aktivních či všech rezervací. IList <Reservation> listClientsReservationsPerPage; if (isActive.HasValue) { listClientsReservationsPerPage = reservationDao.GetRestrictedClientsReservationsPaged(isActive, user.Id, itemsOnPage, pg, out totalClientsReservations); } else { listClientsReservationsPerPage = reservationDao.GetClientsReservationsPaged(user.Id, itemsOnPage, pg, out totalClientsReservations); } ViewBag.CurrentIsActive = isActive; // Pamatovat si nastavení výběru uplynulých/aktivních lekcí. // Výpočet počtu stránek. ViewBag.Pages = (int)Math.Ceiling((double)totalClientsReservations / (double)itemsOnPage); ViewBag.CurrentPage = pg; // Rezervaci nelze zrušit 6h před zahájením lekce. foreach (Reservation reservation in listClientsReservationsPerPage) { DateTime sixHoursBeforeStart = reservation.Lesson.StartTime.AddHours(-6); // Výpočet času 6h před zahájením lekce. reservation.IsCancellable = true; // Pro jistotu předvyplnění vlastnosti. Zabránění null hodnotám. // Porovnání CompareTo vrací hodnoty -1, 0, 1. Pokud aktuální čas je v rozmezí 6 hodin před zahájením lekce a více. if (DateTime.Now.CompareTo(sixHoursBeforeStart) > 0) { reservation.IsCancellable = false; } } if (Request.IsAjaxRequest()) { return(PartialView(listClientsReservationsPerPage)); } else { return(View(listClientsReservationsPerPage)); } }