public IActionResult Editar(CarreraViewModel carreraVM) { if (ModelState.IsValid) { try { CarrerasRepository carreraRepository = new CarrerasRepository(); var carreraResultNombre = carreraRepository.GetCarreraByNombre(carreraVM.Nombre.ToLower()); var carreraResultClave = carreraRepository.GetCarreraByClave(carreraVM.Clave); var carreraResult = carreraRepository.GetCarreraByClaveNombre(carreraVM.Clave, carreraVM.Nombre.ToLower()); //Regex regex = new Regex(@"^[a-zA-ZñÑáéíóúÁÉÍÓÚ\s 0-9 ]+$"); Regex regexClave = new Regex(@"^[a-zA-Z]+$"); Regex regexNombre = new Regex(@"^[a-zA-ZñÑáéíóúÁÉÍÓÚ\s ]+$"); bool resultadoClave = true; resultadoClave = regexClave.IsMatch(carreraVM.Clave); bool resultadoNombre = true; resultadoNombre = regexNombre.IsMatch(carreraVM.Nombre); if (!resultadoClave) { ModelState.AddModelError("", "La clave de la carrera solo acepta letras. (Máximo 2, verifique espacios)"); return(View(carreraVM)); } if (!resultadoNombre) { ModelState.AddModelError("", "No se aceptan números y caracteres especiales en el nombre (Solo: a-z, A-Z)."); return(View(carreraVM)); } //if (!resultadoClave || !resultadoNombre) //{ // ModelState.AddModelError("", "No se aceptan caracteres especiales (Solo: a-z, A-Z, 0-9)."); // return View(carreraVM); //} Regex regexNoNumStart = new Regex(@"[0-9]| $"); bool resultadoNoNumStart = false; string textoFirstChart = carreraVM.Nombre.Substring(0, 1); resultadoNoNumStart = regexNoNumStart.IsMatch(textoFirstChart); if (resultadoNoNumStart) { ModelState.AddModelError("", "No se permite iniciar con NÚMERO o con ESPACIO."); return(View(carreraVM)); } if (carreraResult == null) { if (carreraResultNombre != null) { if (carreraVM.IdCarrera != carreraResultNombre.IdCarrera) { ModelState.AddModelError("", "Ya existe una carrera con el mismo nombre (datos duplicados) "); return(View(carreraVM)); } } if (carreraResultClave != null) { if (carreraVM.IdCarrera != carreraResultClave.IdCarrera) { ModelState.AddModelError("", "Ya existe una carrera con la misma clave (datos duplicados)"); return(View(carreraVM)); } } carreraRepository.UpdateCarreraVM(carreraVM); return(RedirectToAction("Carrera", "Administrador")); } else if (carreraResult.IdCarrera == carreraVM.IdCarrera) { if (carreraResultNombre != null) { if (carreraVM.IdCarrera != carreraResultNombre.IdCarrera) { ModelState.AddModelError("", "Ya existe una carrera con el mismo nombre (datos duplicados) "); return(View(carreraVM)); } } if (carreraResultClave != null) { if (carreraVM.IdCarrera != carreraResultClave.IdCarrera) { ModelState.AddModelError("", "Ya existe una carrera con la misma clave (datos duplicados)"); return(View(carreraVM)); } } carreraResult.Clave = carreraVM.Clave; carreraResult.Nombre = carreraVM.Nombre; carreraRepository.Update(carreraResult); return(RedirectToAction("Carrera", "Administrador")); } else { ModelState.AddModelError("", "Ya existe esta carrera"); return(View(carreraVM)); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); return(View(carreraVM)); } } else { return(View(carreraVM)); } }