public ActionResult Create()
        {
            string text = db.SscisParam.Where(p => p.ParamKey.Equals(SSCISParameters.CHCIPOMAHATHTML)).Single().ParamValue;

            ViewBag.TextHelp = WebUtility.HtmlDecode(text);
            if (HttpContext.Session.GetString("role") == null)
            {
                return(View("Create_public"));
            }

            int userID = (int)HttpContext.Session.GetInt32("userId");

            if (db.TutorApplication.Where(a => a.IdUser == userID && a.IsAccepted == null).Count() > 0)
            {
                return(RedirectToAction("ApplicationPending"));
            }

            int countOfSubjects = db.EnumSubject.Count(s => s.IdParent != null && s.Lesson == true);

            MetaTutorApplication model = new MetaTutorApplication(countOfSubjects);

            SscisUser user = db.SscisUser.Find(userID);

            model.Application.IdUserNavigation = user;
            ViewBag.SubjectID    = new SelectList(db.EnumSubject.Where(s => s.Lesson != null && s.Lesson.Value).ToList(), "Id", "Code");
            ViewBag.AcceptedByID = new SelectList(db.SscisUser, "Id", "Login");
            ViewBag.UserID       = new SelectList(db.SscisUser, "Id", "Login");
            ViewBag.Degree       = new SelectList(ApplicationDegrees.Degrees);
            return(View(model));
        }
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new StatusCodeResult((int)HttpStatusCode.BadRequest));
            }
            SscisUser sSCISUser = db.SscisUser.Find(id);

            if (sSCISUser == null)
            {
                return(NotFound());
            }
            return(View(sSCISUser));
        }
Exemple #3
0
        /// <summary>
        /// SSO Authentification
        /// https://proxyauth.zcu.cz/testauth
        /// </summary>
        /// <returns>HomePage</returns>
        public ActionResult Index()
        {
            //Main proxy https://proxyauth.zcu.cz/testauth/
            //Backup https://fkmagion.zcu.cz/testauth/
            //Zajistit na entry se dostat jenom z proxyauth.zcu.cz (147.228.4.80)
            var PROXY_IP    = "147.228.4.80";
            var headerValue = Request.Headers[WEB_AUTH_USER];
            var ip          = HttpContext.Connection.RemoteIpAddress.ToString();

            if (headerValue.Any() == false || ip != PROXY_IP)
            {
                return(RedirectToAction("Info", "Entry"));
            }
            string username   = Request.Headers[USERNAME_KEY];
            string firstName  = Request.Headers[FIRST_NAME];
            string secondName = Request.Headers[SECOND_NAME];
            string email      = Request.Headers[EMAIL_KEY].ToString();

            //find user if already in database
            var count = db.SscisUser.Count(usr => usr.Login.Equals(username, StringComparison.OrdinalIgnoreCase));

            if (count < 1)
            {
                SscisUser user = new SscisUser();
                user.Created          = DateTime.Now;
                user.Activated        = DateTime.Now;
                user.Login            = username;
                user.IsActive         = true;
                user.Email            = email;
                user.IdRoleNavigation = db.EnumRole.Where(r => r.Role.Equals(AuthorizationRoles.User, StringComparison.OrdinalIgnoreCase)).Single();
                user.Firstname        = firstName;
                user.Lastname         = secondName;
                db.SscisUser.Add(user);
                db.SaveChanges();
            }

            //start session
            int sessionId = new SSCISSessionManager().SessionStart(username, HttpContext);

            ViewBag.SessionId = sessionId;
            SscisSession session = db.SscisSession.Find(sessionId);

            ViewBag.RedirectUrl = HttpContext.Request.Query["redirect"].ToString();
            ViewBag.UserId      = session.IdUser;
            ViewBag.Hash        = session.Hash;
            ViewBag.Role        = session.IdUserNavigation.IdRoleNavigation.Role;
            ViewBag.Login       = session.IdUserNavigation.Login;

            return(View("Logged"));
        }
        public ActionResult Profil()
        {
            int?id = (int)HttpContext.Session.GetInt32("userId");

            if (id == null)
            {
                return(new StatusCodeResult((int)HttpStatusCode.BadRequest));
            }
            SscisUser sSCISUser = db.SscisUser.Find(id);

            if (sSCISUser == null)
            {
                return(NotFound());
            }
            return(View("Details", sSCISUser));
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new StatusCodeResult((int)HttpStatusCode.BadRequest));
            }
            SscisUser sSCISUser = db.SscisUser.Find(id);

            if (sSCISUser == null)
            {
                return(NotFound());
            }

            ViewBag.IdRole        = new SelectList(db.EnumRole, "Id", "Role", sSCISUser.IdRole);
            ViewBag.ActivatedByID = new SelectList(db.SscisUser, "Id", "Login", sSCISUser.IsActivatedBy);

            List <Approval>    approvals = db.Approval.Where(a => a.IdTutor == sSCISUser.Id).ToList();
            List <EnumSubject> subjects  = db.EnumSubject.Where(s => s.IdParent == null && s.Lesson == false).ToList();

            EditUser editUser = new EditUser();

            editUser.User  = sSCISUser;
            editUser.Roles = db.EnumRole.ToList();
            List <MetaApproval> metaApprovals = new List <MetaApproval>();

            foreach (EnumSubject enumSubject in subjects)
            {
                MetaApproval metaApproval = new MetaApproval();
                foreach (Approval approval in approvals)
                {
                    if (approval.IdSubject == enumSubject.Id)
                    {
                        metaApproval.EnumSubject = enumSubject;
                        metaApproval.Approved    = true;
                    }
                }
                if (metaApproval.EnumSubject == null)
                {
                    metaApproval.EnumSubject = enumSubject;
                    metaApproval.Approved    = false;
                }
                metaApprovals.Add(metaApproval);
            }
            editUser.Approvals = metaApprovals;

            return(View(editUser));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            int       authorID          = (int)HttpContext.Session.GetInt32("userId");
            SscisUser currentLoggedUser = db.SscisUser.Find((int)authorID);
            SscisUser sSCISUser         = db.SscisUser.Find(id);

            try
            {
                //remove sessions
                db.SscisSession.RemoveRange(db.SscisSession.Where(s => s.IdUser == id));
                //remove approvals
                db.Approval.RemoveRange(db.Approval.Where(s => s.IdTutor == id));

                //edit news, dont want to delete them
                List <SscisContent> userContent = db.SscisContent.Where(a => a.IdAuthor == id || a.IdEditedBy == id).ToList();
                foreach (SscisContent content in userContent)
                {
                    if (content.IdAuthor == id)
                    {
                        content.IdAuthorNavigation = currentLoggedUser;
                    }
                    if (content.IdEditedBy == id)
                    {
                        content.IdEditedByNavigation = currentLoggedUser;
                    }
                }

                //edit feedbacks if inserted nonanonymous
                List <Participation> userParticipation = db.Participation.Where(a => a.IdUser == id).ToList();
                foreach (Participation participation in userParticipation)
                {
                    participation.IdUserNavigation = null;
                }

                //set user events to cancelled
                List <Event> userEvent = db.Event.Where(a => a.IdTutor == id || a.IdApplicant == id).ToList();
                foreach (Event sscisEvent in userEvent)
                {
                    if (sscisEvent.IdTutor == id)
                    {
                        sscisEvent.IdTutorNavigation  = currentLoggedUser;
                        sscisEvent.CancelationComment = "Tutor fired!";
                    }
                    if (sscisEvent.IdApplicant == id)
                    {
                        sscisEvent.CancelationComment    = "ToS violation!";
                        sscisEvent.IdApplicantNavigation = null;
                    }
                    sscisEvent.IsCancelled = true;
                }

                //delete tutor applications
                List <TutorApplication> userAplication = db.TutorApplication.Where(a => a.IdUser == id).ToList();
                foreach (TutorApplication tutorApplication in userAplication)
                {
                    db.TutorApplicationSubject.RemoveRange(db.TutorApplicationSubject.Where(a => a.IdApplication == tutorApplication.Id));
                    db.TutorApplication.Remove(tutorApplication);
                }

                db.SscisUser.Remove(sSCISUser);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                return(View("DeleteFailed"));
            }
        }
        public ActionResult Edit(EditUser editUser)
        {
            if (ModelState.IsValid)
            {
                editUser.User.IdRoleNavigation = db.EnumRole.Find(editUser.User.IdRole);
                db.Entry(editUser.User).State  = EntityState.Modified;
                if (editUser.User.IdRoleNavigation.Role.Equals("USER"))
                {
                    List <Approval> userApproval = db.Approval.Where(a => a.IdTutor == editUser.User.Id).ToList();
                    foreach (Approval approval in userApproval)
                    {
                        db.Approval.Remove(approval);
                    }

                    List <Event> userEvent = db.Event.Where(a => a.IdTutor == editUser.User.Id).ToList();
                    foreach (Event sscisEvent in userEvent)
                    {
                        int       authorID          = (int)HttpContext.Session.GetInt32("userId");
                        SscisUser currentLoggedUser = db.SscisUser.Find((int)authorID);
                        sscisEvent.IdTutorNavigation  = currentLoggedUser;
                        sscisEvent.CancelationComment = "Tutor fired!";
                        sscisEvent.IsCancelled        = true;
                    }
                }
                else if (editUser.User.IdRoleNavigation.Role.Equals("ADMIN"))
                {
                    List <Approval> userApproval = db.Approval.Where(a => a.IdTutor == editUser.User.Id).ToList();
                    foreach (Approval approval in userApproval)
                    {
                        db.Approval.Remove(approval);
                    }
                    List <EnumSubject> subjects = db.EnumSubject.Where(s => s.IdParent == null && s.Lesson == false).ToList();
                    foreach (EnumSubject subject in subjects)
                    {
                        Approval newApproval = new Approval();
                        newApproval.IdSubject           = subject.Id;
                        newApproval.IdSubjectNavigation = db.EnumSubject.Find(subject.Id);
                        newApproval.IdTutor             = editUser.User.Id;
                        newApproval.IdTutorNavigation   = db.SscisUser.Find(editUser.User.Id);
                        db.Approval.Add(newApproval);
                        db.SaveChanges();
                    }
                }
                else
                {
                    foreach (MetaApproval app in editUser.Approvals)
                    {
                        if (app.Approved == true)
                        {
                            List <Approval> tmp = db.Approval.Where(a => a.IdTutor == editUser.User.Id && a.IdSubject == app.EnumSubject.Id).ToList();
                            if (tmp.Count == 0)
                            {
                                Approval newApproval = new Approval();
                                newApproval.IdSubject           = app.EnumSubject.Id;
                                newApproval.IdSubjectNavigation = db.EnumSubject.Find(app.EnumSubject.Id);
                                newApproval.IdTutor             = editUser.User.Id;
                                newApproval.IdTutorNavigation   = db.SscisUser.Find(editUser.User.Id);
                                db.Approval.Add(newApproval);
                                db.SaveChanges();
                            }
                        }
                        else
                        {
                            List <Approval> tmp = db.Approval.Where(a => a.IdTutor == editUser.User.Id && a.IdSubject == app.EnumSubject.Id).ToList();
                            foreach (Approval app2 in tmp)
                            {
                                db.Approval.Remove(app2);
                            }
                        }
                    }
                }
                editUser.Approvals            = null;
                db.Entry(editUser.User).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            ViewBag.RoleID        = new SelectList(db.EnumRole, "Id", "Role", editUser.User.IdRole);
            ViewBag.ActivatedByID = new SelectList(db.SscisUser, "Id", "Login", editUser.User.IsActivatedBy);
            return(View(editUser.User));
        }