예제 #1
0
        /// <summary> Akce pro zobrazení detailních informací o vybrané lekci. </summary>
        /// <param name="id"> Id lekce </param>
        public ActionResult Detail(int id)
        {
            LessonDao lessonDao = new LessonDao();
            Lesson    lesson    = lessonDao.GetById(id);

            // Získání seznamu registrovaných klientů na vybranou lekci.
            FitnessCentreUserDao      fitnessCentreUserDao = new FitnessCentreUserDao();
            IList <FitnessCentreUser> listReservedClients  = fitnessCentreUserDao.GetReservedClients(id);

            ViewBag.ListReservedClients = listReservedClients;

            FitnessCentreUser user = new FitnessCentreUserDao().GetByLogin(User.Identity.Name);

            if (Request.IsAjaxRequest() && user.Role.Identificator == "staff")
            {
                return(PartialView("DetailStaff", lesson));
            }

            if (user.Role.Identificator == "staff")
            {
                return(View("DetailStaff", lesson));
            }

            if (Request.IsAjaxRequest())
            {
                return(PartialView("Detail", lesson));
            }

            return(View("Detail", lesson));
        }
예제 #2
0
        public ActionResult Reserve(int id)
        {
            // Získání instance vybrané lekce.
            LessonDao lessonDao = new LessonDao();
            Lesson    lesson    = lessonDao.GetById(id);

            // Získání instance přihlášeného klienta.
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    user = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

            // Ověření, zda lekce je aktivní (z důvodu času či aktivity instruktora).
            if (lesson.IsActive)
            {
                // Ověření, zda na lekci je volné místo pro registraci.
                if (lesson.ActualCapacity > 0)
                {
                    // Ověření, zda má klient dostatečný kredit pro rezervaci aktivity.
                    if (user.Credit >= lesson.ActivityType.Price)
                    {
                        // Nastavení parametrů rezervace.
                        Reservation reservation = new Reservation();
                        reservation.ReservationTime = DateTime.Now;
                        reservation.Lesson          = lesson;
                        reservation.Client          = user;

                        // Vložení rezervace do databáze.
                        ReservationDao reservationDao = new ReservationDao();
                        reservationDao.Create(reservation);

                        // Odečtení ceny aktivity z kreditu klienta a odečtení 1 volného místa z kapacity lekce. Update hodnot v databázi.
                        user.Credit -= lesson.ActivityType.Price;
                        fitnessCentreUserDao.Update(user);
                        lesson.ActualCapacity -= 1;
                        lessonDao.Update(lesson);

                        TempData["message-success"] = "Lekce aktivity " + lesson.ActivityType.Name + " v " + lesson.StartTime.ToString("dddd d.M.") +
                                                      " byla zarezervována.";
                        return(RedirectToAction("Index", "Lessons", new { isActive = true }));
                    }
                    else
                    {
                        TempData["message-error"] = "Nemáte dostatek kreditu pro registraci na aktivitu " +
                                                    lesson.ActivityType.Name + ".";
                        return(RedirectToAction("Index", "Lessons", new { isActive = true }));
                    }
                }
                else
                {
                    TempData["message-error"] = "Na lekci není žádné volné místo.";
                    return(RedirectToAction("Index", "Lessons", new { isActive = true }));
                }
            }
            else
            {
                TempData["message-error"] = "Lekce není aktivní.";
                return(RedirectToAction("Index", "Lessons", new { isActive = true }));
            }
        }
예제 #3
0
        /// <summary> Akce pro zobrazení detailních informací o vybrané lekci. </summary>
        /// <param name="id"> Id lekce </param>
        public ActionResult Detail(int id)
        {
            LessonDao lessonDao = new LessonDao();
            Lesson    lesson    = lessonDao.GetById(id);

            // Získání seznamu registrovaných klientů na vybranou lekci.
            FitnessCentreUserDao      fitnessCentreUserDao = new FitnessCentreUserDao();
            IList <FitnessCentreUser> listReservedClients  = fitnessCentreUserDao.GetReservedClients(id);

            ViewBag.ListReservedClients = listReservedClients;

            return(View("Detail", lesson));
        }
예제 #4
0
        public ActionResult Delete(int id)
        {
            try
            {
                LessonDao lessonDao = new LessonDao();
                Lesson    lesson    = lessonDao.GetById(id);
                lessonDao.Delete(lesson);

                TempData["message-success"] = "Lekce " + lesson.ActivityType.Name + " byla úspěšně smazána.";
            }
            catch (Exception)
            {
                // mechanismus zachytávání výjimek doporučuje dobře si nastudovat
                throw;
            }

            return(RedirectToAction("Index", "Lessons", new { isActive = true }));
        }
예제 #5
0
        public ActionResult Cancel(int id)
        {
            try
            {
                // Získání instance vybrané rezervace pro zrušení.
                ReservationDao reservationDao = new ReservationDao();
                Reservation    reservation    = reservationDao.GetById(id);

                // Píše chybu v dvojité session
                //reservation.Client.Credit += reservation.Lesson.ActivityType.Price;
                //FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                //fitnessCentreUserDao.Update(reservation.Client);

                //reservation.Lesson.Capacity += 1;
                //LessonDao lessonDao = new LessonDao();
                //lessonDao.Update(reservation.Lesson);

                // Přičtení ceny aktivity zpět ke kreditu klienta a uvolnění 1 místa v kapacitě lekce. Zápis změn do databáze.
                reservation.Client.Credit += reservation.Lesson.ActivityType.Price;
                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreUser    client = fitnessCentreUserDao.GetByLogin(reservation.Client.Login);
                fitnessCentreUserDao.Update(client);

                reservation.Lesson.ActualCapacity += 1;
                LessonDao lessonDao = new LessonDao();
                Lesson    lesson    = lessonDao.GetById(reservation.Lesson.Id);
                lessonDao.Update(lesson);

                TempData["message-success"] = "Rezervace aktivity " + reservation.Lesson.ActivityType.Name + " byla úspěšně zrušena.";

                // Smazání rezervace z databáze.
                reservationDao.Delete(reservation);
            }
            catch (Exception)
            {
                // mechanismus zachytávání výjimek doporučuje dobře si nastudovat
                throw;
            }

            return(RedirectToAction("Index", new { isActive = true }));
        }