Esempio n. 1
0
        public ActionResult Activate(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    instructor           = fitnessCentreUserDao.GetById(id);

            LessonDao      lessonDao   = new LessonDao();
            IList <Lesson> listLessons = lessonDao.GetAll();

            // Automatická aktivace všech lekcí daného instruktora, které se ještě neuskutečnily.
            foreach (Lesson lesson in listLessons)
            {
                // Porovnání CompareTo vrací hodnoty -1, 0, 1. Pokud aktuální čas je dřívěji než zahájení lekce.
                if (lesson.Instructor.Id == instructor.Id && DateTime.Now.CompareTo(lesson.StartTime) < 0)
                {
                    lesson.IsActive = true;
                    lessonDao.Update(lesson);
                }
            }

            TempData["message-success"] = "Účet instruktora " + instructor.FirstName + " " + instructor.LastName + " byl úspěšně aktivován.";

            // Aktivace účtu instruktora
            instructor.IsActive = true;
            fitnessCentreUserDao.Update(instructor);

            return(RedirectToAction("Index"));
        }
        /*
         * Vrací true, pokud uživatel zadal správný login a heslo. Vrací false v každém jiném případě.
         */
        public override bool ValidateUser(string username, string password)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    user = fitnessCentreUserDao.GetByLoginAndPassword(username, password);

            return(user != null);
        }
Esempio n. 3
0
        // GET: /Admin/Instructors/
        public ActionResult Index()
        {
            FitnessCentreUserDao      fitnessCentreUserDao = new FitnessCentreUserDao();
            IList <FitnessCentreUser> listInstructors      = fitnessCentreUserDao.GetUsersByRole("instructor");

            FitnessCentreUser user = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

            // Lze smazat pouze instruktory, kteří nevypsali do systému žádnou lekci.
            if (user.Role.Identificator == "staff")
            {
                IList <Lesson> listLessons = new LessonDao().GetAll();

                foreach (FitnessCentreUser instructor in listInstructors)
                {
                    instructor.IsDeletable = true;  // Pro jistotu předvyplnění vlastnosti. Zabránění null hodnotám.

                    foreach (Lesson lesson in listLessons)
                    {
                        if (lesson.Instructor.Id == instructor.Id)
                        {
                            instructor.IsDeletable = false;
                            // break;
                        }
                    }
                }
            }

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

            return(View("Index", listInstructors));
        }
Esempio n. 4
0
        public ActionResult Edit(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    user = fitnessCentreUserDao.GetById(id);

            return(View(user));
        }
Esempio n. 5
0
        public ActionResult Deactivate(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    instructor           = fitnessCentreUserDao.GetById(id);

            LessonDao      lessonDao   = new LessonDao();
            IList <Lesson> listLessons = lessonDao.GetAll();

            // Automatická deaktivace všech lekcí daného instruktora
            foreach (Lesson lesson in listLessons)
            {
                if (lesson.Instructor.Id == instructor.Id)
                {
                    lesson.IsActive = false;
                    lessonDao.Update(lesson);
                }
            }

            TempData["message-success"] = "Účet instruktora " + instructor.FirstName + " " + instructor.LastName + " byl úspěšně deaktivován.";

            // Deaktivace účtu instruktora
            instructor.IsActive = false;
            fitnessCentreUserDao.Update(instructor);

            return(RedirectToAction("Index"));
        }
Esempio n. 6
0
        [ChildActionOnly]   // Způsobí, že tato daná akce může být volána pouze zevnitř jinou akcí.
        // GET: /Admin/Menu/
        public ActionResult Index()
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    fitnessCentreUser    = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

            return(View(fitnessCentreUser));
        }
Esempio n. 7
0
        public ActionResult Detail(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    instructor           = fitnessCentreUserDao.GetById(id);

            return(View("Detail", instructor));
        }
Esempio n. 8
0
        public ActionResult Delete(int id)
        {
            try
            {
                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreUser    user = fitnessCentreUserDao.GetById(id);

                // Pokud uživatel neměl nastavenu pouze defaultní fotografii, ještě před smazáním uživatele, smaž jeho fotografii.
                if (!user.ProfilePhotoName.Equals("manSilhouette.png"))
                {
                    System.IO.File.Delete(Server.MapPath("~/uploads/profilePhoto/" + user.ProfilePhotoName));
                }

                fitnessCentreUserDao.Delete(user);

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

            return(RedirectToAction("Index"));
        }
Esempio n. 9
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 }));
            }
        }
Esempio n. 10
0
        public ActionResult Update(FitnessCentreUser user, HttpPostedFileBase profilePhoto)
        {
            try
            {
                if (profilePhoto != null)
                {
                    if (profilePhoto.ContentType == "image/jpeg" || profilePhoto.ContentType == "image/png")
                    {
                        Image image = Image.FromStream(profilePhoto.InputStream);

                        if (image.Height > 200 || image.Width > 200)
                        {
                            Image  smallImage = ImageHelper.ScaleImage(image, 200, 200);
                            Bitmap b          = new Bitmap(smallImage);

                            Guid   guid      = Guid.NewGuid();
                            string imageName = guid.ToString() + ".jpg";

                            b.Save(Server.MapPath("~/uploads/profilePhoto/" + imageName), ImageFormat.Jpeg);

                            smallImage.Dispose();
                            b.Dispose();

                            // TomSko přesunuto: ještě předtím, než vyčistím jméno, je potřeba, abych smazal starý soubor
                            System.IO.File.Delete(Server.MapPath("~/uploads/profilePhoto/" + user.ProfilePhotoName));

                            // TomSko přesunuto: přiřadíme nový soubor, který už je nahraný
                            user.ProfilePhotoName = imageName;
                        }
                        else
                        {
                            // TomSko přesunuto: ještě předtím, než vyčistím jméno, je potřeba, abych smazal starý soubor
                            System.IO.File.Delete(Server.MapPath("~/uploads/profilePhoto/" + user.ProfilePhotoName));
                            profilePhoto.SaveAs(Server.MapPath("~/uploads/profilePhoto/") + profilePhoto.FileName);
                            user.ProfilePhotoName = profilePhoto.FileName;   // TomSko asi chybělo vyplnění parametru názvu fotografie
                        }
                    }
                }

                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreRoleDao fitnessCentreRoleDao = new FitnessCentreRoleDao();
                user.Role     = fitnessCentreRoleDao.GetById(3);
                user.IsActive = true;
                fitnessCentreUserDao.Update(user);

                TempData["message-success"] = "Klient " + user.FirstName + " " + user.LastName + " byl úspěšně upraven.";
            }
            catch (Exception)
            {
                throw;
            }

            return(RedirectToAction("Index", "Clients"));
        }
        /*
         * Pokud roleName se bude shodovat s identifikátorem na Role vrátí true
         */
        public override bool IsUserInRole(string username, string roleName)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    user = fitnessCentreUserDao.GetByLogin(username);

            if (user == null)
            {
                return(false);
            }

            return(user.Role.Identificator == roleName);
        }
        /*
         * Jestliže user nebude null sáhnu do Role na identifikátor.
         * Mechanismus je obecně připravený, že uživatel může mít více rolí, proto vrací pole stringů.
         */
        public override string[] GetRolesForUser(string username)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    user = fitnessCentreUserDao.GetByLogin(username);

            if (user == null)
            {
                return(new string[] { });
            }

            return(new string[] { user.Role.Identificator });
        }
Esempio n. 13
0
        public ActionResult Activate(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    client = fitnessCentreUserDao.GetById(id);

            client.IsActive = true;
            fitnessCentreUserDao.Update(client);

            TempData["message-success"] = "Účet klienta " + client.FirstName + " " + client.LastName + " byl úspěšně aktivován.";

            return(RedirectToAction("Index"));
        }
Esempio n. 14
0
        public ActionResult Detail(int id)
        {
            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            FitnessCentreUser    instructor           = fitnessCentreUserDao.GetById(id);

            FitnessCentreUser user = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

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

            return(View("Detail", instructor));
        }
Esempio n. 15
0
        public ActionResult Update(int idLesson, string startTime, string endTime, int activityTypeId, int roomId, int instructorId, int originalCapacity, bool isActive)
        {
            try
            {
                Lesson lesson = new Lesson();
                lesson.Id = idLesson;

                // Nastavení času lekce
                lesson.StartTime = DateTime.ParseExact(startTime, "dd.MM.yyyy H:mm", CultureInfo.CurrentCulture);
                lesson.EndTime   = DateTime.ParseExact(endTime, "dd.MM.yyyy H:mm", CultureInfo.CurrentCulture);

                // Přiřazení vybrané aktivity ze select listu vytvářené lekci
                ActivityTypeDao activityTypeDao = new ActivityTypeDao();
                ActivityType    activityType    = activityTypeDao.GetById(activityTypeId);
                lesson.ActivityType = activityType;

                // Přiřazení vybrané místnosti ze select listu vytvářené lekci
                RoomDao roomDao = new RoomDao();
                Room    room    = roomDao.GetById(roomId);
                lesson.Room = room;

                // Přiřazení vybraného trenéra ze select listu vytvářené lekci
                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreUser    instructor           = fitnessCentreUserDao.GetById(instructorId);
                lesson.Instructor = instructor;

                // Aktuální kapacita lekce je rovna původní kapacitě.
                lesson.OriginalCapacity = originalCapacity;
                lesson.ActualCapacity   = originalCapacity;

                lesson.IsActive = isActive;

                // Upravení lekce
                LessonDao lessonDao = new LessonDao();
                lessonDao.Update(lesson);

                TempData["message-success"] = "Lekce " + lesson.ActivityType.Name + " byla úspěšně upravena.";
            }
            catch (Exception)
            {
                throw;
            }

            return(RedirectToAction("Index", "Lessons", new { isActive = true }));
        }
Esempio n. 16
0
        public ActionResult Add(string startTime, string endTime, int activityTypeId, int roomId, int originalCapacity)
        {
            Lesson lesson = new Lesson();

            if (ModelState.IsValid)
            {
                // Nastavení času lekce
                lesson.StartTime = DateTime.ParseExact(startTime, "dd.MM.yyyy H:mm", CultureInfo.CurrentCulture);
                lesson.EndTime   = DateTime.ParseExact(endTime, "dd.MM.yyyy H:mm", CultureInfo.CurrentCulture);

                // Přiřazení vybrané aktivity ze select listu vytvářené lekci
                ActivityTypeDao activityTypeDao = new ActivityTypeDao();
                ActivityType    activityType    = activityTypeDao.GetById(activityTypeId);
                lesson.ActivityType = activityType;

                // Přiřazení vybrané místnosti ze select listu vytvářené lekci
                RoomDao roomDao = new RoomDao();
                Room    room    = roomDao.GetById(roomId);
                lesson.Room = room;

                // Přiřazení přihlášeného instruktora vytvářené lekci
                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreUser    instructor           = fitnessCentreUserDao.GetByLogin(User.Identity.Name);
                lesson.Instructor = instructor;

                // Aktuální kapacita lekce je rovna původní kapacitě.
                lesson.OriginalCapacity = originalCapacity;
                lesson.ActualCapacity   = originalCapacity;

                lesson.IsActive = true;

                // Vytvoření lekce
                LessonDao lessonDao = new LessonDao();
                lessonDao.Create(lesson);

                TempData["message-success"] = "Lekce " + lesson.ActivityType.Name + " byla úspěšně přidána.";
            }
            else
            {
                TempData["message-error"] = "Lekce nebyla přidána";
                return(View("Create", lesson));
            }

            return(RedirectToAction("Index", "Lessons", new { isActive = true }));
        }
        // GET: /Admin/CreditAdministration/
        public ActionResult Index(int?clientId)
        {
            int cId = clientId.HasValue ? clientId.Value : -1;   // cId musí být vyplněno

            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();

            if (cId != -1)
            {
                FitnessCentreUser client = fitnessCentreUserDao.GetById(cId);
                return(View("IndexChosenClient", client));
            }
            else
            {
                IList <FitnessCentreUser> listClients = fitnessCentreUserDao.GetUsersByRole("client");
                ViewBag.ListClients = listClients;
                return(View("IndexAllClients"));
            }
        }
        /*
         * Metoda pro připsání kreditu klientovi.
         */
        public ActionResult UpdateCredit(int clientId, int addedCredit)
        {
            try
            {
                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreUser    editedClient         = fitnessCentreUserDao.GetById(clientId);
                editedClient.Credit = editedClient.Credit + addedCredit;
                fitnessCentreUserDao.Update(editedClient);

                TempData["message-success"] = "Klientu " + editedClient.FirstName + " " + editedClient.LastName + " byl úspěšně připsán kredit " + addedCredit + " Kč";
            }
            catch (Exception)
            {
                throw;
            }

            return(RedirectToAction("Index", "Clients"));
        }
Esempio n. 19
0
        public ActionResult Edit(int id)
        {
            ViewBag.ListActivityTypes = new ActivityTypeDao().GetAll();
            ViewBag.ListRooms         = new RoomDao().GetAll();

            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();

            ViewBag.ListInstructors = fitnessCentreUserDao.GetUsersByRole("instructor");

            Lesson lesson = new LessonDao().GetById(id);

            FitnessCentreUser user = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

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

            return(View("EditInstructor", lesson));
        }
Esempio n. 20
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 }));
        }
Esempio n. 21
0
        public ActionResult Create()
        {
            ActivityTypeDao      activityTypeDao   = new ActivityTypeDao();
            IList <ActivityType> listActivityTypes = activityTypeDao.GetAll();

            ViewBag.ListActivityTypes = listActivityTypes;

            RoomDao      roomDao   = new RoomDao();
            IList <Room> listRooms = roomDao.GetAll();

            ViewBag.ListRooms = listRooms;

            FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
            //IList<FitnessCentreUser> listInstructors = fitnessCentreUserDao.GetUsersByRole("instructor");
            //ViewBag.ListInstructors = listInstructors;

            FitnessCentreUser instructor = fitnessCentreUserDao.GetByLogin(User.Identity.Name);

            ViewBag.Instructor = instructor;

            return(View());
        }
Esempio n. 22
0
 public ActionResult Success(FitnessCentreUser user)
 {
     return(View(user));
 }
Esempio n. 23
0
        public ActionResult Add(FitnessCentreUser user, HttpPostedFileBase profilePhoto)
        {
            if (ModelState.IsValid)
            {
                if (profilePhoto != null)
                {
                    if (profilePhoto.ContentType == "image/jpeg" || profilePhoto.ContentType == "image/png")
                    {
                        Image image = Image.FromStream(profilePhoto.InputStream);

                        if (image.Height > 200 || image.Width > 200)
                        {
                            Image  smallImage = ImageHelper.ScaleImage(image, 200, 200);    // zmenšení fotografie
                            Bitmap b          = new Bitmap(smallImage);

                            Guid   guid      = Guid.NewGuid(); // vytvoření jména fotografie
                            string imageName = guid.ToString() + ".jpg";

                            b.Save(Server.MapPath("~/uploads/profilePhoto/" + imageName), ImageFormat.Jpeg); // uložení fotografie; formát jpg

                            smallImage.Dispose();                                                            // vyčištění po e-disposable objektech
                            b.Dispose();

                            user.ProfilePhotoName = imageName;   // vyplnění parametru názvu fotografie
                        }
                        else
                        {
                            // BUG asi chyby v závorkách a mazání null obrázku viz. activityController
                            profilePhoto.SaveAs(Server.MapPath("~/uploads/profilePhoto/") + profilePhoto.FileName); // uložení v případě, že fotografii není potřeba zmenšovat
                            user.ProfilePhotoName = profilePhoto.FileName;                                          // TomSko asi chybělo vyplnění parametru názvu fotografie
                        }
                    }
                }
                else
                {
                    // Pokud není vybrána fotografie, přiřadíme defaultní siluetu.
                    user.ProfilePhotoName = "manSilhouette.png";
                }

                FitnessCentreUserDao fitnessCentreUserDao = new FitnessCentreUserDao();
                FitnessCentreRoleDao fitnessCentreRoleDao = new FitnessCentreRoleDao();

                // == TVORBA LOGINU ==
                // Spoj prvních 5 písmen z příjmení s prvními 2 písmeny ze jména uživatele. Převeď string na malá písmena.
                string loginName      = user.LastName.ToLowerInvariant().Substring(0, 5) + user.FirstName.ToLowerInvariant().Substring(0, 2);
                string cleanLoginName = Utilities.RemoveDiacritics(loginName); // Odstraň ze stringu diakritiku.

                // Za každého uživatele se stejným cleanLoginName zvyš loginNumber o 1.
                int loginNumber = 1;
                IList <FitnessCentreUser> listUsers = fitnessCentreUserDao.GetAll();
                foreach (FitnessCentreUser u in listUsers)
                {
                    if (u.Login.Substring(0, 7).Equals(cleanLoginName))
                    {
                        loginNumber++;
                    }
                }

                // Vytvoř Login spojením cleanLoginName a loginNumber.
                user.Login = cleanLoginName + loginNumber.ToString();

                user.Credit   = 0;                               // Nastavíme počáteční kredit 0 Kč
                user.Role     = fitnessCentreRoleDao.GetById(3); // Přiřadíme uživateli roli klienta (vybereme ze seznamu rolí podle RoleId == 3)
                user.IsActive = false;
                fitnessCentreUserDao.Create(user);
            }
            else
            {
                TempData["message-error"] = "Klient nebyl přidán";
                return(View("Create", user));
            }

            return(RedirectToAction("Success", user));   // přesměrování na jinou stránku tak, aby nešel po F5 refreshi znovu odeslat formulář
        }