예제 #1
0
        // GET: /Lessons/

        /// <summary> Akce pro zobrazení seznamu lekcí vybrané aktivity </summary>
        /// <param name="isActive">výběr lekcí aktivních/uplynulých nebo všech (null)</param>
        /// <param name="activityTypeId">Id vybrané aktivity</param>
        /// <param name="page">číslo strany výpisu</param>
        public ActionResult Index(bool?isActive, int?activityTypeId, int?page)
        {
            // Nastavení uskutečněných lekcí jako neaktivních
            LessonDao lessonDao = new LessonDao();

            lessonDao.SetExpiredLessons();

            // Pro výpis labelů filtru aktivit.
            ViewBag.ActivityTypes = new ActivityTypeDao().GetAll();

            const int itemsOnPage = 10;
            int       pg          = page.HasValue ? page.Value : 1;
            int       totalLessons;

            // Větvení, zda je požadováno třídění dle aktivních/uplynulých či druhů aktivit lekcí.
            IList <Lesson> listLessonsPerPage;

            if (isActive.HasValue)
            {
                if (activityTypeId.HasValue)
                {
                    listLessonsPerPage = lessonDao.GetRestrictedLessonsByActivityTypeIdPaged(activityTypeId, isActive, itemsOnPage, pg, out totalLessons);
                }
                else
                {
                    listLessonsPerPage = lessonDao.GetRestrictedLessonsPaged(isActive, itemsOnPage, pg, out totalLessons);
                }
            }
            else
            {
                if (activityTypeId.HasValue)
                {
                    listLessonsPerPage = lessonDao.GetLessonsByActivityTypeIdPaged(activityTypeId, itemsOnPage, pg, out totalLessons);
                }
                else
                {
                    listLessonsPerPage = lessonDao.GetLessonsPaged(itemsOnPage, pg, out totalLessons);
                }
            }

            ViewBag.CurrentIsActive       = isActive;       // Pamatovat si nastavení výběru uplynulých/aktivních lekcí.
            ViewBag.CurrentActivityTypeId = activityTypeId; // Pamatovat si zvolený filtr při procházení stránek.
            ViewBag.Pages       = (int)Math.Ceiling((double)totalLessons / (double)itemsOnPage);
            ViewBag.CurrentPage = pg;

            if (Request.IsAjaxRequest())
            {
                return(PartialView("Index", listLessonsPerPage));
            }

            return(View("Index", listLessonsPerPage));
        }
예제 #2
0
        // GET: /Admin/Lessons/

        /// <summary> Akce pro zobrazení seznamu lekcí vybrané aktivity </summary>
        /// <param name="isActive">výběr lekcí aktivních/uplynulých nebo všech (null)</param>
        /// <param name="activityTypeId">Id vybrané aktivity</param>
        /// <param name="page">číslo strany výpisu</param>
        public ActionResult Index(bool?isActive, int?activityTypeId, int?page)
        {
            // Nastavení uskutečněných lekcí jako neaktivních
            LessonDao lessonDao = new LessonDao();

            lessonDao.SetExpiredLessons();

            // Pro výpis labelů filtru aktivit.
            ViewBag.ActivityTypes = new ActivityTypeDao().GetAll();

            // 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;
            // Pokud přijde do parametru hodnota, tak se do "page" přiřadí pageId. Pokud je parametr null tak page = 1.
            int pg = page.HasValue ? page.Value : 1;
            int totalLessons;

            // Větvení, zda je požadováno třídění dle aktivních/uplynulých či druhů aktivit lekcí.
            IList <Lesson> listLessonsPerPage;

            if (isActive.HasValue)
            {
                if (activityTypeId.HasValue)
                {
                    listLessonsPerPage = lessonDao.GetRestrictedLessonsByActivityTypeIdPaged(activityTypeId, isActive, itemsOnPage, pg, out totalLessons);
                }
                else
                {
                    listLessonsPerPage = lessonDao.GetRestrictedLessonsPaged(isActive, itemsOnPage, pg, out totalLessons);
                }
            }
            else
            {
                if (activityTypeId.HasValue)
                {
                    listLessonsPerPage = lessonDao.GetLessonsByActivityTypeIdPaged(activityTypeId, itemsOnPage, pg, out totalLessons);
                }
                else
                {
                    listLessonsPerPage = lessonDao.GetLessonsPaged(itemsOnPage, pg, out totalLessons);
                }
            }

            ViewBag.CurrentIsActive       = isActive;       // Pamatovat si nastavení výběru uplynulých/aktivních lekcí.
            ViewBag.CurrentActivityTypeId = activityTypeId; // Pamatovat si zvolený filtr při procházení stránek.

            /* Výpočet počtu stránek.
             * Nelze dělit jednoduše integery, osekla by se desetinná část po celém čísle. Ceiling zaokrouhlí nahoru. Tzn. když chci
             * 30 knížek po dvaceti na stránku, vrátí počet stránek 2.
             */
            ViewBag.Pages       = (int)Math.Ceiling((double)totalLessons / (double)itemsOnPage);
            ViewBag.CurrentPage = pg;

            // Vyznačení rezervovaných lekcí
            FitnessCentreUser user = new FitnessCentreUserDao().GetByLogin(User.Identity.Name);

            if (user.Role.Identificator == "client")
            {
                IList <Reservation> listClientsReservations = new ReservationDao().GetClientsReservations(user.Id);

                foreach (Lesson lesson in listLessonsPerPage)
                {
                    lesson.IsReserved = false;  // Pro jistotu vyplnění vlastnosti. Zamezení null hodnotám.

                    foreach (Reservation reservation in listClientsReservations)
                    {
                        if (reservation.Lesson.Id == lesson.Id)
                        {
                            lesson.IsReserved = true;
                        }
                    }
                }
            }

            ViewBag.UserId = user.Id;     // Pamatovat si Id přihlášeného uživatele pro rozlišení rezervací

            if (user.Role.Identificator == "staff")
            {
                if (Request.IsAjaxRequest())
                {
                    return(PartialView("IndexStaff", listLessonsPerPage));
                }
                else
                {
                    return(View("IndexStaff", listLessonsPerPage));
                }
            }

            if (user.Role.Identificator == "instructor")
            {
                if (Request.IsAjaxRequest())
                {
                    return(PartialView("IndexInstructor", listLessonsPerPage));
                }
                else
                {
                    return(View("IndexInstructor", listLessonsPerPage));
                }
            }

            if (Request.IsAjaxRequest())
            {
                return(PartialView("IndexClient", listLessonsPerPage));
            }
            else
            {
                return(View("IndexClient", listLessonsPerPage));
            }
        }