예제 #1
0
        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);
        }
예제 #2
0
        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);
        }