public async Task<ActionResult> EditarCentroTerapeutico(CENTROTERAPEUTICOMODEL _model) { try { if (ModelState.IsValid) { var _updateCT = new CENTROTERAPEUTICO(); _updateCT = await _context.CENTROTERAPEUTICOes.FindAsync(_model.ID); _updateCT.NOMBRE = _model.NOMBRE; _updateCT.DESCRIPCION = _model.DESCRIPCION; _updateCT.IDCIUDADOPERACION = _model.IDCIUDADOPERACION; ; // si existe la clave en el contexto // si el nombre está repetido if (_context.CENTROTERAPEUTICOes.FirstOrDefault(c => c.NOMBRE == _model.NOMBRE && c.ID != _model.ID) != null) { ModelState.AddModelError(string.Empty, "El nombre de este CT ya existe para otro registro"); ViewBag.CityID = new SelectList(_context.CITies, "ID", "Ciudad"); return View(_model); } else { // se procede a guardar en la base de datos _context.Entry(_updateCT).State = EntityState.Modified; await _context.SaveChangesAsync(); return RedirectToAction("CentrosTerapeuticos", "Configuraciones"); } } }catch(DbUpdateConcurrencyException ex) { var vEntry = ex.Entries.Single(); var vClientValue = (CENTROTERAPEUTICO)vEntry.Entity; var vDataBaseEntry = vEntry.GetDatabaseValues(); if(vDataBaseEntry == null) { ModelState.AddModelError(string.Empty, "Imposible hacer cambios, el CENTRO TERAPEUTICO ha sido eliminado por otro usuario"); }else { var vDatabaseValues = (CENTROTERAPEUTICO)vDataBaseEntry.ToObject(); if(vDatabaseValues.NOMBRE != vClientValue.NOMBRE) ModelState.AddModelError("NOMBRE", "VALOR ACTUAL: " + vDatabaseValues.NOMBRE); if(vDatabaseValues.DESCRIPCION != vClientValue.DESCRIPCION) ModelState.AddModelError("DESCRIPCION", "VALOR ACTUAL: " + String.Format("{0:C}", vDatabaseValues.DESCRIPCION)); if(vDatabaseValues.IDCIUDADOPERACION != vClientValue.IDCIUDADOPERACION) ModelState.AddModelError("IDCIUDADOPERACION", "VALOR ACTUAL: "+ _context.CITies.Find(vDatabaseValues.IDCIUDADOPERACION).NAME); ModelState.AddModelError(string.Empty, "El registro que intenta modificar, fue modificado por otro usuario después " +"que se tuvo un valor original. La operación de Edición fue cancelada. Si deseas seguir intentado, guarda e cambio de nuevo, sino " +" haz clic en la lista de todos los registros"); } } catch(RetryLimitExceededException /* dex */ ) { // log ModelState.AddModelError(string.Empty, "No se pueden guardar los cambios, si el problema persiste, por favor contacar a los administradores del sistema"); } // se redirige a la misma página, con el detalle de sus errores _model.COUNTRIES = _context.COUNTRies; return View(_model); }
public async Task<ActionResult> NuevoCentroTerapeutico(CENTROTERAPEUTICOMODEL _model) { if (ModelState.IsValid) { var _newCT = new CENTROTERAPEUTICO { ID = _model.ID, NOMBRE = _model.NOMBRE, DESCRIPCION = _model.DESCRIPCION, IDCIUDADOPERACION = _model.IDCIUDADOPERACION }; // si existe la clave en el contexto if (_context.CENTROTERAPEUTICOes.Find(_model.ID) != null) { ModelState.AddModelError(string.Empty, "Esta clave ya ha sido asignada a otro CT"); ViewBag.CityID = new SelectList(_context.CITies, "ID", "Ciudad"); return View(_model); } // si el nombre está repetido else if (_context.CENTROTERAPEUTICOes.FirstOrDefault(c => c.NOMBRE == _model.NOMBRE) != null) { ModelState.AddModelError(string.Empty, "El nombre de este CT ya existe para otro registro"); ViewBag.CityID = new SelectList(_context.CITies, "ID", "Ciudad"); return View(_model); } else { // se procede a guardar en la base de datos _context.CENTROTERAPEUTICOes.Add(_newCT); await _context.SaveChangesAsync(); return RedirectToAction("CentrosTerapeuticos", "Configuraciones"); } } // se redirige a la misma página, con el detalle de sus errores _model.COUNTRIES = _context.COUNTRies; return View(_model); }