public AccountViewModel(User item) { Item = item; if (item is Student) { ItemStudent = item as Student; TestData = "Date"; var tests = ItemStudent.TestSessions.GroupBy(i => i.Test.Id).Select(j => j.FirstOrDefault().Test).ToArray(); foreach (var test in tests) TestData += "," + test.Title; TestData += "\\n"; var cntr = 1; foreach (var sessions in ItemStudent.TestSessions) { TestData += cntr++; for (int i = 0; i < tests.Count(); i++) { var strBuild = ","; if (sessions.Test.Id == tests[i].Id) strBuild += Convert.ToInt16(sessions.Percent * 100).ToString(); TestData += strBuild; } TestData += "\\n"; } } }
// // GET: /Admin/User/Edit public ActionResult Edit(int? id) { User item = null; try { if (id.HasValue) { item = db.Users.SingleOrDefault(i => i.Id == id); if (item == null) throw new ArgumentException("Пользователь не найден."); } else { item = new User(); } } catch (Exception ex) { ModelState.AddModelError(string.Empty, ex.Message); } return View(new UserViewModel(db, item)); }
public ActionResult EditPost(int? id) { User user = null; try { if (id.HasValue) { user = db.Users.SingleOrDefault(i => i.Id == id); if (user == null) throw new ArgumentException("Пользователь не найден."); } else { user = new User(); TryUpdateModel(user, "Item", new[] { "UserRole" }); if (user.UserRole == AccountStatus.Admin) user = new Administrator(); if (user.UserRole == AccountStatus.Student) user = new Student(); if (user.UserRole == AccountStatus.Teacher) user = new Teacher(); TryUpdateModel(user as User, "Item", new[] { "Password", "UserRole" }); } TryUpdateModel(user as User, "Item", new[] { "Login", "Name" }); if (user.UserRole == AccountStatus.Admin) TryUpdateModel(user as Administrator, new[] { "Telephone", "Email" }); if (user.UserRole == AccountStatus.Student) TryUpdateModel(user as Student, new[] { "Age", "Group", "Course" }); if (user.UserRole == AccountStatus.Teacher) TryUpdateModel(user as Teacher, new[] { "University", "Department" }); #warning Да простит меня Родионов за ЭТО... if (true)//ModelState.IsValid) { if (id == null) { if (db.Users.Count(i => i.Login == user.Login) > 0) throw new ArgumentException("Пользователь с таким e-mail уже существует."); if (user.UserRole == AccountStatus.Admin) db.Administrators.Add(user as Administrator); if (user.UserRole == AccountStatus.Student) db.Students.Add(user as Student); if (user.UserRole == AccountStatus.Teacher) db.Teachers.Add(user as Teacher); } else { if (user.UserRole == AccountStatus.Admin) db.Entry<Administrator>(user as Administrator).State = EntityState.Modified; if (user.UserRole == AccountStatus.Student) db.Entry<Student>(user as Student).State = EntityState.Modified; if (user.UserRole == AccountStatus.Teacher) db.Entry<Teacher>(user as Teacher).State = EntityState.Modified; } db.SaveChanges(); return RedirectToAction("Index"); } } catch (Exception ex) { #warning И за это пусть он меня простит... ModelState.Clear(); ModelState.AddModelError(string.Empty, ex.Message); } return View(new UserViewModel(db, user)); }
public UserViewModel(DataContext db, User item) : this(db) { Item = item; }
// Добавляет метод по заданию информации об авторизованном пользователе public static void Authorize(this HttpSessionState session, User user) { session["User"] = user; }