public async Task <IActionResult> Delete(Guid?id) { var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto"); if (validateToken != null) { return(validateToken); } if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura)) { return(RedirectToAction(nameof(Index))); } if (id == null) { TempData["toast"] = "Identificador incorrecto."; return(RedirectToAction(nameof(Index))); } var usuario = await _getHelper.GetUsuarioByIdAsync((Guid)id); if (usuario == null) { TempData["toast"] = "Usuario inexistente (identificador incorrecto)."; return(RedirectToAction(nameof(Index))); } var sesiones = await _context.Sesiones.Where(s => s.UsuarioID == (Guid)id).ToListAsync(); if (sesiones != null) { string rutaSesion = ""; string directorio = _configuration.GetValue <string>("DirectorioSesion"); foreach (var sesion in sesiones) { _context.Remove(sesion); rutaSesion = $"{directorio}//{sesion.SessionID}.config"; if (System.IO.File.Exists(rutaSesion)) { System.IO.File.Delete(rutaSesion); } } } var usuariosModulos = await _context.UsuariosModulos.Where(u => u.UsuarioID == (Guid)id).ToListAsync(); if (usuariosModulos != null) { foreach (var item in usuariosModulos) { _context.Remove(item); } } try { _context.Usuarios.Remove(usuario); await _context.SaveChangesAsync(); await BitacoraAsync("Baja", usuario); TempData["toast"] = "Los datos del usuario fueron eliminados correctamente."; } catch (Exception ex) { string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString(); TempData["toast"] = "Los datos del usuario no pueden ser eliminados por la integridad de la información."; await BitacoraAsync("Baja", usuario, excepcion); } return(RedirectToAction(nameof(Index))); }