public PartialViewResult NodeDetails(string id, string nodeType)
        {
            //Thread.Sleep(1000);
            ViewBag.Subjects = JournalContext.Subjects.ToArray();
            ViewBag.Teachers = JournalContext.Teachers.ToArray();
            ViewBag.Parents = JournalContext.Parents.ToArray();
            int userId;
            int.TryParse(id, out userId);
            switch (nodeType)
            {
                case JsTreeNodeType.PupilClass:
                    var classEntity = JournalContext.Journals.First(c => c.JournalID == int.Parse(id));
                    return PartialView(@"_ClassDetails", classEntity);
                case JsTreeNodeType.Pupil:
                    var userDetails = JournalContext.Pupils.First(ud => ud.PupilID == userId);
                    return PartialView(@"_PupilDetails", userDetails);
                case JsTreeNodeType.Teacher:
                    var teacher = JournalContext.Teachers.First(t => t.TeacherID == userId);
                    return PartialView(@"_TeacherDetails", teacher);
                case JsTreeNodeType.TimetableDayOfWeek:
                    var ids = id.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries);
                    var dayOfWeek = int.Parse(ids[0]);
                    var journalId = int.Parse(ids[1]);

                    var lessonList = new List<JournalLesson>();
                    for (int order = 0; order < 8; ++order)
                    {
                        var lesson = JournalContext.JournalLessons.FirstOrDefault(l => l.Order == order && l.DayOfWeek == dayOfWeek && l.JournalID == journalId);
                        if (lesson == null)
                        {
                            lesson = new JournalLesson();
                            lesson.Order = order;
                            lesson.DayOfWeek = dayOfWeek;
                            lesson.JournalID = journalId;
                        }
                        lessonList.Add(lesson);
                    }
                    return PartialView(@"_CreateTimetable", lessonList);
                case "register_new_user":
                    var registerModel = new RegisterModel();
                    var password = GeneratePassword();
                    registerModel.Password = password;
                    registerModel.ConfirmPassword = password;
                    registerModel.UserName = GenerateUserName();
                    registerModel.DateOfBirth = DateTime.Now;
                    registerModel.SendEmail = true;
                    return PartialView(@"_Register", registerModel);
                case JsTreeNodeType.Quarters:
                    return PartialView("_Quarters", GetOrCreateQuareters().ToArray());
                case JsTreeNodeType.Schedule:
                    return PartialView("_Schedule", GetOrCreateSchedule().ToArray());
            }
            return new PartialViewResult();
        }
        public PartialViewResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    using (var db = new UsersContext())
                    {
                        if (!WebSecurity.UserExists(model.UserName))
                        {
                            var userProfile = new UserProfile();
                            userProfile.SchoolId = CurrentUser.School.SchoolId;
                            userProfile.UserName = model.UserName;
                            db.UserProfiles.InsertOnSubmit(userProfile);
                            db.SubmitChanges();

                            WebSecurity.CreateAccount(model.UserName, model.Password);
                            var newUserId = WebSecurity.GetUserId(model.UserName);

                            var userDetails = new UserDetails();
                            userDetails.GlobalProfileID = newUserId;
                            userDetails.FirstName = model.FirstName;
                            userDetails.LastName = model.LastName;
                            userDetails.PatronymicName = model.PatronymicName;
                            userDetails.DateOfBirth = model.DateOfBirth;
                            userDetails.Email = model.Email;
                            JournalContext.UserDetails.InsertOnSubmit(userDetails);
                            JournalContext.SubmitChanges();

                            if (model.SendEmail)
                            {
                                var body = string.Format("Уважаемый {0} {1} {2}!{3}Вы успешно зарегистрированы на портале \"Диалог\".{3} Логин: {4}{3} Пароль: {5}",
                                        userDetails.LastName, userDetails.FirstName, userDetails.PatronymicName,
                                        Environment.NewLine, model.UserName, model.Password);
                                EmailService.EmailSender.SendText(userDetails.Email, "Регистрация на портале \"Диалог\"", body);
                            }
                        }
                    }

                    return null;
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", AccountController.ErrorCodeToString(e.StatusCode));
                }
            }
            // If we got this far, something failed, redisplay form
            return PartialView("_Register", model);
        }
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    using (var db = new UsersContext())
                    {
                        if (!WebSecurity.UserExists(model.UserName))
                        {
                            var userProfile = new UserProfile();
                            userProfile.SchoolId = model.SchoolId;
                            userProfile.UserName = model.UserName;
                            db.UserProfiles.InsertOnSubmit(userProfile);
                            db.SubmitChanges(ConflictMode.ContinueOnConflict);
                        }
                    }
                    WebSecurity.CreateAccount(model.UserName, model.Password);
                    WebSecurity.Login(model.UserName, model.Password);

                    //return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }
            using (var db = new UsersContext())
            {
                if (!db.DatabaseExists())
                    db.CreateDatabase();
                ViewBag.Schools = db.Schools.ToList();
            }
            // If we got this far, something failed, redisplay form
            return View(model);
        }