public ActionResult AddEmployee(Employees e) { //name_employee if (string.IsNullOrEmpty(e.name_employee)) { ModelState.AddModelError("name_employee", "Заполните данное поле(серверная валидация)"); } else if (e.name_employee.Length > 50) { ModelState.AddModelError("name_employee", "Превышана максимальнаая длина в 50 символов(серверная валидация)"); } //email_employee if (string.IsNullOrEmpty(e.email_employee)) { ModelState.AddModelError("email_employee", "Заполните данное поле(серверная валидация)"); } else if (e.email_employee.Length > 50) { ModelState.AddModelError("email_employee", "Превышана максимальнаая длина в 50 символов(серверная валидация)"); } else { //проверка введенного имейла на правильность string emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; Regex regex = new Regex(emailRegex); if (!regex.IsMatch(e.email_employee)) { ModelState.AddModelError("email_employee", "Введите правильный имейл(серверная валидация)"); } else if (db.Employees.FirstOrDefault(emp => emp.email_employee == e.email_employee) != null) //если сотрудник с таким имейлом уже если в БД { ModelState.AddModelError("email_employee", "Работник с таким имейлом уже существует(серверная валидация)"); } } //birthdate_employee if (e.birthdate_employee > DateTime.Today) { ModelState.AddModelError("birthdate_employee", "Невозможная дата рождения(серверная валидация)"); } //salary_employee if (e.salary_employee < 0) { ModelState.AddModelError("salary_employee", "Зарплата не может быть отрицательной(серверная валидация)"); } if (ModelState.IsValid) //если ошибок нет, то добавляем нового сотрудника в БД { try { db.Employees.Add(e); db.SaveChanges(); return RedirectToAction("ShowDepartment", "Home", new { department_id = e.department_id_fk }); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //если ошибки есть, возвращаем страницу на редактирование return View(e); }
public ActionResult EditEmployee(Employees e) { //name_employee if (string.IsNullOrEmpty(e.name_employee)) { ModelState.AddModelError("name_employee", "Заполните данное поле(серверная валидация)"); } else if (e.name_employee.Length > 50) { ModelState.AddModelError("name_employee", "Превышана максимальнаая длина в 50 символов(серверная валидация)"); } //email_employee if (string.IsNullOrEmpty(e.email_employee)) { ModelState.AddModelError("email_employee", "Заполните данное поле(серверная валидация)"); } else if (e.email_employee.Length > 50) { ModelState.AddModelError("email_employee", "Превышана максимальнаая длина в 50 символов(серверная валидация)"); } else { string emailRegex = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"; Regex regex = new Regex(emailRegex); if (!regex.IsMatch(e.email_employee)) { ModelState.AddModelError("email_employee", "Введите правильный имейл(серверная валидация)"); } else { //считаем количество сотрудников с заданным имейлом var c = db.Employees.Count(emp => emp.email_employee == e.email_employee && emp.id_employee != e.id_employee); if (c > 0) //если есть хоть один сотрудник, то имейл занят { ModelState.AddModelError("email_employee", "Работник с данным имейлом уже существует(серверная валидация)"); } } } //birthdate_employee if (e.birthdate_employee > DateTime.Today) { ModelState.AddModelError("birthdate_employee", "Невозможная дата рождения(серверная валидация)"); } //salary_employee if (e.salary_employee < 0) { ModelState.AddModelError("salary_employee", "Зарплата не может быть отрицательной(серверная валидация)"); } if (ModelState.IsValid) //если все ОК, то делаем update заданной записи { try { Employees emp = new Employees { id_employee = e.id_employee }; db.Employees.Attach(emp); emp.name_employee = e.name_employee; emp.email_employee = e.email_employee; emp.birthdate_employee = e.birthdate_employee; emp.salary_employee = e.salary_employee; emp.department_id_fk = e.department_id_fk; db.SaveChanges(); return RedirectToAction("ShowDepartment", "Home", new { department_id = e.department_id_fk }); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); } } //если есть ошибки, то возвращаем страницу на редактирование return View(e); }