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)); } }
public IActionResult EditarCarrera(DACarrerasViewModel vm) { //ViewBag.Admin = 1; if (ModelState.IsValid) { //try //{ CarrerasRepository carreraRepos = new CarrerasRepository(); var ResultNombre = carreraRepos.GetCarreraByNombre(vm.Nombre); var ResultClave = carreraRepos.GetCarreraByClave(vm.Clave); var ResultClaveCarrera = carreraRepos.GetCarreraByClaveNombre(vm.Clave, vm.Nombre); Regex regClave = new Regex(@"^[a-zA-Z]+$"); Regex regNombre = new Regex(@"^[a-zA-ZñÑáéíóúÁÉÍÓÚ\s ]{6,}$"); bool resultClave = true; resultClave = regClave.IsMatch(vm.Clave); bool resultNombre = true; resultNombre = regNombre.IsMatch(vm.Nombre); if (!resultClave) { ModelState.AddModelError("", "La clave solo acepta 2 letras sin espacios ni caracteres especiales."); return(View(vm)); } if (!resultNombre) { ModelState.AddModelError("", "El nombre debe contener 6 o más caracteres, no puede contener números y/o caracteres especiales."); return(View(vm)); } Regex regexNumInicio = new Regex(@"[0-9]| $"); string expresion = vm.Nombre.Substring(0, 1); bool resultadoRegexNum = regexNumInicio.IsMatch(expresion); if (resultadoRegexNum) { ModelState.AddModelError("", "El nombre de la carrera no puede iniciar con un numero."); return(View(vm)); } if (ResultClaveCarrera == null) { if (ResultNombre != null) { ModelState.AddModelError("", "Ya existe una carrera con el mismo nombre."); if (carreraRepos.GetCarreraByNombre(vm.Nombre).Estatus == false) { ViewBag.Recuperacion = true; ViewBag.IdEncRec = carreraRepos.GetCarreraByNombre(vm.Nombre).Id; } return(View(vm)); } //if (ResultClave != null) //{ // ModelState.AddModelError("", "Ya existe una carrera con la misma clave."); // if (carreraRepos.GetCarreraByNombre(vm.Nombre).Estatus == false) // { // ViewBag.Recuperacion = true; // ViewBag.IdEncRec = carreraRepos.GetCarreraByClave(vm.Clave).Id; // } // return View(vm); //} carreraRepos.Update(vm); return(RedirectToAction("Index")); } else if (ResultClaveCarrera.Id == vm.Id) { if (ResultNombre != null) { if (vm.Id != ResultNombre.Id) { ModelState.AddModelError("", "Ya existe una carrera con el mismo nombre."); return(View(vm)); } } if (ResultClave != null) { if (vm.Id != ResultClave.Id) { ModelState.AddModelError("", "Ya existe una carrera con la misma clave. 2"); return(View(vm)); } } ResultClaveCarrera.Clave = vm.Clave; ResultClaveCarrera.Nombre = vm.Nombre; carreraRepos.Update(ResultClaveCarrera); return(RedirectToAction("Index")); } else { ModelState.AddModelError("", "Ya existe esta carrera."); return(View(vm)); } //} //catch (Exception ex) //{ // ModelState.AddModelError("", ex.Message); // return View(vm); //} } else { return(View(vm)); } }