public async Task <ActionResult> Edit(int id) { var user = await userManager.FindByNameAsync(User.Identity.Name); var encuestadorControl = new EncuestadorController(db, userManager, _env); var respRelacionado = await encuestadorControl.GetResponsablesbyIdParent(user.IDDependencia, 1, 3); var formalizacion = await db.Formalization.Where(n => n.Id == id && respRelacionado.Contains(n.IdResponsable)).FirstOrDefaultAsync(); if (formalizacion == null) { return(NotFound()); } var permisoCancelar = User.HasClaim(c => (c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/Formalizacion.Cancelar" && c.Value == "1")); if (formalizacion.Estado != Formalization.ESTADO_BORRADOR && !permisoCancelar) { return(RedirectToAction("Details", new { id = formalizacion.Id })); } string error = (string)HttpContext.Session.GetComplex <string>("error"); if (error != "") { ViewBag.error = error; HttpContext.Session.Remove("error"); } ViewBag.Coordinaciones = new SelectList(await db.Responsable.Where(n => n.Nombre.StartsWith("[CDR]")).OrderBy(n => n.Nombre).ToListAsync(), "Id", "Nombre", formalizacion.IdResponsable); var estados = new Dictionary <int, string> { { Formalization.ESTADO_BORRADOR, "Borrador" }, { Formalization.ESTADO_COMPLETO, "Completo" }, { Formalization.ESTADO_CANCELADO, "Cancelado" }, { Formalization.ESTADO_IMPRESO, "Impreso" }, { Formalization.ESTADO_CARNET_VIGENTE, "Carnet vigente" } }; ViewBag.Estados = new SelectList(estados, "Key", "Value", formalizacion.Estado); ViewBag.Formalizacion = formalizacion; var postModel = new FormalizacionPostModel() { Id = formalizacion.Id, AreaPesca = formalizacion.AreaPesca, ArtesPesca = formalizacion.ArtesPesca, Cedula = formalizacion.Cedula, Estado = formalizacion.Estado, IdResponsable = formalizacion.IdResponsable, Name = formalizacion.Name, NombreAsociacion = formalizacion.NombreAsociacion }; return(View(postModel)); }
public async Task <ActionResult> Edit(FormalizacionPostModel formalizacion) { var original = await db.Formalization.FindAsync(formalizacion.Id); if (original == null) { ModelState.AddModelError(string.Empty, "Formalización no registrada."); } if (ModelState.IsValid) { var permisoEditar = User.HasClaim(c => (c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/Formalizacion.Editar" && c.Value == "1")); if (permisoEditar) { original.Name = formalizacion.Name; original.Cedula = formalizacion.Cedula; original.NombreAsociacion = formalizacion.NombreAsociacion; original.AreaPesca = formalizacion.AreaPesca; original.ArtesPesca = formalizacion.ArtesPesca; } if (formalizacion.Estado > 0) { original.Estado = formalizacion.Estado; } if (formalizacion.IdResponsable > 0) { original.IdResponsable = formalizacion.IdResponsable; } var anterior = await db.Formalization.AsNoTracking().Where(n => n.Id == formalizacion.Id).FirstOrDefaultAsync(); var user = await userManager.FindByNameAsync(User.Identity.Name); original.LastEditDate = DateTime.Now; original.LastEditByUser = user; db.Entry(original).State = EntityState.Modified; await db.SaveChangesAsync(); var log = new Logger(db); var registro = new RegistroLog { Usuario = User.Identity.Name, Accion = "Edit", Modelo = "Formalization", ValAnterior = anterior, ValNuevo = original }; await log.Registrar(registro, typeof(Formalization), formalizacion.Id); HttpContext.Session.SetComplex("error", "Los datos fueron actualizados correctamente."); return(RedirectToAction("Edit", new { id = formalizacion.Id })); } ViewBag.Coordinaciones = new SelectList(await db.Responsable.Where(n => n.Nombre.StartsWith("[CDR]")).OrderBy(n => n.Nombre).ToListAsync(), "Id", "Nombre", formalizacion.IdResponsable); var estados = new Dictionary <int, string> { { Formalization.ESTADO_BORRADOR, "Borrador" }, { Formalization.ESTADO_COMPLETO, "Completo" }, { Formalization.ESTADO_CANCELADO, "Cancelado" }, { Formalization.ESTADO_IMPRESO, "Impreso" }, { Formalization.ESTADO_CARNET_VIGENTE, "Carnet vigente" } }; ViewBag.Estados = new SelectList(estados, "Key", "Value", formalizacion.Estado); ViewBag.Formalizacion = formalizacion; var postModel = new FormalizacionPostModel() { Id = formalizacion.Id, AreaPesca = formalizacion.AreaPesca, ArtesPesca = formalizacion.ArtesPesca, Cedula = formalizacion.Cedula, Estado = formalizacion.Estado, IdResponsable = formalizacion.IdResponsable, Name = formalizacion.Name, NombreAsociacion = formalizacion.NombreAsociacion }; return(View(postModel)); }