コード例 #1
0
        public ActionResult Create(UD_Granit.ViewModels.Speciality.Create viewModel)
        {
            if (!RightsManager.Speciality.Control(Session.GetUser()))
                throw new HttpException(404, "Not found");

            try
            {
                if (ModelState.IsValid)
                {
                    if (db.Specialities.Find(viewModel.Speciality.Number) == null)
                    {
                        db.Specialities.Add(viewModel.Speciality);
                        db.SaveChanges();
                    }
                    else
                    {
                        ViewData.NotificationAdd(new NotificationManager.Notify() { Message = "Специальность с таким номером уже существует.", Type = NotificationManager.Notify.NotifyType.Error });
                        return View(viewModel);
                    }
                }

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ViewData.NotificationAdd(new NotificationManager.Notify() { Message = ex.Message, Type = NotificationManager.Notify.NotifyType.Error });
                return View();
            }
        }
コード例 #2
0
        public ActionResult Login(UD_Granit.ViewModels.Account.Login viewModel)
        {
            if (Session.GetUser() != null)
                throw new HttpException(404, "Not found");

            var q = from u in db.Users where ((u.Email == viewModel.Email) && (u.Password == viewModel.Password)) select u;
            if (q.Count() != 0)
            {
                User currentUser = q.First();
                if (currentUser is Administrator)
                {
                    (currentUser as Administrator).LastIP = Request.GetUserIp();
                    db.Entry(currentUser).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }
                Session.SetUser(currentUser);
                return RedirectToAction("Index", "Home");
            }

            ViewData.NotificationAdd(new NotificationManager.Notify() { Type = NotificationManager.Notify.NotifyType.Error, Message = "Пользователь с такой комбинацией электронного почтового ящика и пароля не найден в системе. Пожалуйста, проверьте достоверность введённых данных." });
            return View();
        }
コード例 #3
0
        public ActionResult Edit(UD_Granit.ViewModels.Speciality.Edit viewModel)
        {
            if (!RightsManager.Speciality.Control(Session.GetUser()))
                throw new HttpException(404, "Not found");

            try
            {
                if (ModelState.IsValid)
                {
                    db.Entry<Speciality>(viewModel.Speciality).State = System.Data.Entity.EntityState.Modified;
                    db.SaveChanges();
                }

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ViewData.NotificationAdd(new NotificationManager.Notify() { Message = ex.Message, Type = NotificationManager.Notify.NotifyType.Error });
                return View();
            }
        }
コード例 #4
0
        public ActionResult Edit(UD_Granit.ViewModels.Dissertation.Edit viewModel)
        {
            try
            {
                Dissertation currentDissertation = viewModel.Dissertation;
                currentDissertation.Speciality = db.Specialities.Find(viewModel.Speciality);

                Dissertation baseDissertation = db.Dissertations.Find(currentDissertation.Id);

                baseDissertation.Title = currentDissertation.Title;
                baseDissertation.Publications = currentDissertation.Publications;
                baseDissertation.Administrative_Use = currentDissertation.Administrative_Use;
                baseDissertation.Date_Preliminary_Defense = currentDissertation.Date_Preliminary_Defense;
                baseDissertation.Date_Sending = currentDissertation.Date_Sending;
                baseDissertation.Defensed = currentDissertation.Defensed;
                baseDissertation.References = currentDissertation.References;

                baseDissertation.Speciality = currentDissertation.Speciality;
                baseDissertation.Applicant = db.Applicants.Find(Session.GetUser().Id);

                if (viewModel.File_Abstract != null)
                {
                    System.IO.File.Delete(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Abstract" + baseDissertation.File_Abstract)));
                    baseDissertation.File_Abstract = Path.GetExtension(viewModel.File_Abstract.FileName);
                    viewModel.File_Abstract.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Abstract" + baseDissertation.File_Abstract)));
                }
                if (viewModel.File_Text != null)
                {
                    System.IO.File.Delete(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Text" + baseDissertation.File_Text)));
                    baseDissertation.File_Text = Path.GetExtension(viewModel.File_Text.FileName);
                    viewModel.File_Text.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Text" + baseDissertation.File_Text)));
                }
                if (viewModel.File_Summary != null)
                {
                    System.IO.File.Delete(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Summary" + baseDissertation.File_Summary)));
                    baseDissertation.File_Summary = Path.GetExtension(viewModel.File_Summary.FileName);
                    viewModel.File_Summary.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Summary" + baseDissertation.File_Summary)));
                }

                db.Entry<Dissertation>(baseDissertation).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();

                return RedirectToAction("Details", new { id = currentDissertation.Id });
            }
            catch (Exception ex)
            {
                ViewData["Speciality"] = db.Specialities.Select(s => new SelectListItem { Text = s.Number + " " + s.Name, Value = s.Number });
                ViewData.NotificationAdd(new NotificationManager.Notify() { Type = NotificationManager.Notify.NotifyType.Error, Message = ex.Message });
                return View(viewModel);
            }
        }
コード例 #5
0
        public ActionResult Create(UD_Granit.ViewModels.Dissertation.Create viewModel)
        {
            Applicant currentUser = Session.GetUser() as Applicant;

            if (currentUser == null)
                throw new HttpException(404, "Not found");

            if (db.Dissertations.Where(d => d.Applicant.Id == currentUser.Id).Count() != 0)
                throw new HttpException(404, "Not found");

            Dissertation currentDissertation = viewModel.Dissertation;
            currentDissertation.Type = (currentUser is ApplicantCandidate) ? DissertationType.Candidate : DissertationType.Doctor;
            currentDissertation.Applicant = db.Applicants.Find(currentUser.Id);
            currentDissertation.File_Abstract = Path.GetExtension(viewModel.File_Abstract.FileName);
            currentDissertation.File_Text = Path.GetExtension(viewModel.File_Text.FileName);
            currentDissertation.File_Summary = Path.GetExtension(viewModel.File_Summary.FileName);
            currentDissertation.Defensed = false;
            currentDissertation.Speciality = db.Specialities.Find(viewModel.Speciality);

            db.Dissertations.Add(currentDissertation);
            db.SaveChanges();

            viewModel.File_Abstract.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Abstract" + currentDissertation.File_Abstract)));
            viewModel.File_Text.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Text" + currentDissertation.File_Text)));
            viewModel.File_Summary.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", currentDissertation.Id + "_Summary" + currentDissertation.File_Summary)));

            return RedirectToAction("Details", new { id = currentDissertation.Id });
        }
コード例 #6
0
        public ActionResult Create(UD_Granit.ViewModels.Session.Create viewModel)
        {
            if (!RightsManager.Session.Create(Session.GetUser()))
                throw new HttpException(404, "Not found");

            Dissertation currentDissertation = db.Dissertations.Find(viewModel.Dissertation_Id);
            if (currentDissertation == null)
                throw new HttpException(404, "Not found");

            try
            {
                Session currentSession = viewModel.Session;
                currentSession.Dissertation = db.Dissertations.Find(viewModel.Dissertation_Id);
                currentSession.Was = false;

                if (viewModel.MembersCount > 0)
                {
                    currentSession.Members = new List<Member>();
                    for (int i = 0; i < viewModel.MembersCount; i++)
                    {
                        try
                        {
                            Member currentMember = db.Members.Find(Convert.ToInt32(Request.Form[string.Format("Member{0}", i)]));
                            if (currentMember != null)
                                currentSession.Members.Add(currentMember);
                        }
                        catch { }
                    }
                }

                switch (viewModel.SessionType)
                {
                    case "Consideration":
                        currentSession = new SessionConsideration() { Dissertation = currentSession.Dissertation, Date = currentSession.Date, Was = currentSession.Was, Members = currentSession.Members };
                        db.SessionsСonsideration.Add(currentSession as SessionConsideration);
                        break;
                    case "Defence":
                        currentSession = new SessionDefence() { Dissertation = currentSession.Dissertation, Date = currentSession.Date, Was = currentSession.Was, Members = currentSession.Members };
                        db.SessionsDefence.Add(currentSession as SessionDefence);
                        break;
                }
                db.SaveChanges();

                return RedirectToAction("Details", new { id = currentSession.Id });
            }
            catch (Exception ex)
            {
                viewModel.Dissertation_Title = currentDissertation.Title;
                viewModel.MemberList = new List<SelectListItem>();

                viewModel.MemberList.Add(new SelectListItem() { Text = "== Выберите члена совета из списка ==", Value = "-1", Selected = true });
                foreach (var member in db.Members)
                {
                    viewModel.MemberList.Add(new SelectListItem() { Text = member.GetFullName(), Value = member.Id.ToString() });
                }

                ViewData.NotificationAdd(new NotificationManager.Notify() { Type = NotificationManager.Notify.NotifyType.Error, Message = ex.Message });
                return View(viewModel);
            }
        }
コード例 #7
0
        public ActionResult Edit(UD_Granit.ViewModels.Council.Edit viewModel)
        {
            User currentUser = Session.GetUser();

            if (currentUser == null)
                throw new HttpException(404, "Not found");

            if (!RightsManager.Council.Edit(currentUser))
                throw new HttpException(404, "Not found");

            try
            {
                viewModel.CanDefineRoles = (db.Members.Count() >= 3);
                viewModel.CanDefineChairman = RightsManager.Council.ChangeChairman(currentUser);

                viewModel.Chairman = (viewModel.CanDefineChairman) ? viewModel.Chairman : db.Members.Where(m => m.Position == MemberPosition.Chairman).FirstOrDefault().Id;

                if(((viewModel.Chairman == viewModel.ViceChairman) && (viewModel.Chairman != 0)) ||
                    ((viewModel.Chairman == viewModel.Secretary) && (viewModel.Chairman != 0)) ||
                    ((viewModel.Secretary == viewModel.ViceChairman) && (viewModel.Secretary != 0)))
                {
                    throw new Exception("Член совета не может иметь две роли одновременно. Пожалуйста, измените свой выбор.");
                }

                // Удаление старых руководителей
                var chairman = (viewModel.CanDefineChairman) ? db.Members.Where(m => (m.Position == MemberPosition.Chairman)).FirstOrDefault() : null;
                var viceCharman = db.Members.Where(m => (m.Position == MemberPosition.ViceChairman)).FirstOrDefault();
                var secretary = db.Members.Where(m => (m.Position == MemberPosition.Secretary)).FirstOrDefault();

                if ((chairman != null) && (viewModel.CanDefineChairman))
                    chairman.Position = MemberPosition.Member;
                if (viceCharman != null)
                    viceCharman.Position = MemberPosition.Member;
                if (secretary != null)
                    secretary.Position = MemberPosition.Member;

                db.Configuration.ValidateOnSaveEnabled = false;
                db.SaveChanges();
                db.Configuration.ValidateOnSaveEnabled = true;

                // Добавление новых руководителей
                chairman = (viewModel.CanDefineChairman) ? db.Members.Find(viewModel.Chairman) : null;
                viceCharman = db.Members.Find(viewModel.ViceChairman);
                secretary = db.Members.Find(viewModel.Secretary);

                if ((chairman != null) && (viewModel.CanDefineChairman))
                    chairman.Position = MemberPosition.Chairman;
                if (viceCharman != null)
                    viceCharman.Position = MemberPosition.ViceChairman;
                if (secretary != null)
                    secretary.Position = MemberPosition.Secretary;

                db.Configuration.ValidateOnSaveEnabled = false;
                db.SaveChanges();
                db.Configuration.ValidateOnSaveEnabled = true;


                if (currentUser is Member)
                    Session.SetUser(db.Members.Find(currentUser.Id));

                if (db.Council.Count() == 0)
                {
                    db.Council.Add(viewModel.Council);
                }
                else
                {
                    viewModel.Council.Id = 1;
                    db.Entry(viewModel.Council).State = System.Data.Entity.EntityState.Modified;
                }
                db.SaveChanges();
                HttpContext.Application["Name"] = viewModel.Council.Number;

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                viewModel.Members = new List<SelectListItem>();
                viewModel.Members.Add(new SelectListItem() { Text = "== Выберите члена совета из списка ==", Value = "0" });
                foreach (var currentMember in db.Members)
                    viewModel.Members.Add(new SelectListItem() { Text = currentMember.GetFullName(), Value = currentMember.Id.ToString() });

                ViewData.NotificationAdd(new NotificationManager.Notify() { Type = NotificationManager.Notify.NotifyType.Error, Message = ex.Message });
                return View(viewModel);
            }
        }
コード例 #8
0
        public ActionResult RegisterAdministrator(UD_Granit.ViewModels.Account.RegisterAdministrator viewModel)
        {
            if (!RightsManager.Account.RegisterAdministrator(Session.GetUser()))
                throw new HttpException(404, "Not found");

            var q = from u in db.Users where u.Email == viewModel.User.Email select u;
            if (q.Count() > 0)
            {
                ViewData.NotificationAdd(new NotificationManager.Notify() { Type = NotificationManager.Notify.NotifyType.Error, Message = "Пользователь с таким электронным почтовым ящиком уже зарегистрирован. Пожалуйста, выберите другой email." });
                return View();
            }
            else
            {
                Administrator currentUser = viewModel.User;
                currentUser.RegistrationDate = DateTime.Now;

                db.Administrators.Add(currentUser);
                db.SaveChanges();

                return RedirectToAction("Details", new { id = currentUser.Id });
            }
        }