public async Task <IActionResult> Details(Guid?id) { var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto"); if (validateToken != null) { return(validateToken); } if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoLectura)) { return(RedirectToAction(nameof(Index))); } if (id == null) { TempData["toast"] = "Identificacor incorrecto, verifique."; return(RedirectToAction(nameof(Index))); } var usuario = await _context.Usuarios .Include(c => c.Administrador) .Include(c => c.Colaborador) .FirstOrDefaultAsync(u => u.UsuarioID == id); if (usuario == null) { TempData["toast"] = "Identificacor incorrecto, verifique."; return(RedirectToAction(nameof(Index))); } var usuarioModulos = await(from um in _context.UsuariosModulos join m in _context.Modulos on um.ModuloID equals m.ModuloID where um.UsuarioID == id && m.Activo == true && m.ModuloPadreID != Guid.Empty select um) .Include(m => m.Modulo) .OrderBy(m => m.Modulo.Descripcion) .ToListAsync(); var usuarioDetails = new UsuarioDetailsViewModelUsuario() { Activo = usuario.Activo, Administrador = usuario.Administrador, AdministradorID = usuario.AdministradorID, Colaborador = usuario.Colaborador, ColaboradorID = usuario.ColaboradorID, FechaInicio = usuario.FechaInicio, FechaTermino = usuario.FechaTermino, FechaUltimoAcceso = usuario.FechaUltimoAcceso, PermisoEscritura = permisosModulo.PermisoEscritura, UsuarioID = usuario.UsuarioID, UsuarioModulos = usuarioModulos }; return(View(usuarioDetails)); }
public async Task <IActionResult> EditPermissions(UsuarioDetailsViewModelUsuario usuarioDetailsViewModelUsuario) { var validateToken = await ValidatedToken(_configuration, _getHelper, "contacto"); if (validateToken != null) { return(validateToken); } if (!await ValidateModulePermissions(_getHelper, moduloId, eTipoPermiso.PermisoEscritura)) { return(RedirectToAction(nameof(Index))); } if (usuarioDetailsViewModelUsuario.UsuarioModulos != null) { foreach (var modulo in usuarioDetailsViewModelUsuario.UsuarioModulos) { if (modulo.UsuarioModuloID == Guid.Empty) { if (modulo.PermisoEscritura || modulo.PermisoImprimir || modulo.PermisoLectura) { _context.UsuariosModulos.Add(new UsuarioModulo { ModuloID = modulo.ModuloID, PermisoEscritura = modulo.PermisoEscritura, PermisoImprimir = modulo.PermisoImprimir, PermisoLectura = modulo.PermisoLectura, UsuarioID = usuarioDetailsViewModelUsuario.UsuarioID, UsuarioModuloID = Guid.NewGuid() }); } } else { var moduloExist = _context.UsuariosModulos.Find(modulo.UsuarioModuloID); if (moduloExist != null) { if (!modulo.PermisoEscritura && !modulo.PermisoImprimir && !modulo.PermisoLectura) { _context.Remove(moduloExist); } else { moduloExist.PermisoEscritura = modulo.PermisoEscritura; moduloExist.PermisoImprimir = modulo.PermisoImprimir; moduloExist.PermisoLectura = modulo.PermisoLectura; _context.Update(moduloExist); } } } } try { var sesiones = _context.Sesiones.Where(s => s.UsuarioID == usuarioDetailsViewModelUsuario.UsuarioID); if (sesiones != null) { string directorioSesion = _configuration.GetValue <string>("DirectorioSesion"); string rutaSesion = ""; foreach (var s in sesiones) { //_context.Remove(s); rutaSesion = $"{directorioSesion}//{s.SessionID}.config"; if (System.IO.File.Exists(rutaSesion)) { System.IO.File.Delete(rutaSesion); } } } await _context.SaveChangesAsync(); TempData["toast"] = "Permisos actualizados con éxito."; await BitacoraAsync("Permisos", usuarioDetailsViewModelUsuario.UsuarioModulos, usuarioDetailsViewModelUsuario.UsuarioID.ToString()); return(RedirectToAction(nameof(Details), new { id = usuarioDetailsViewModelUsuario.UsuarioID })); } catch (Exception ex) { string excepcion = ex.InnerException != null?ex.InnerException.Message.ToString() : ex.ToString(); TempData["toast"] = "Error al actualizar los permisos seleccionados."; await BitacoraAsync("Permisos", usuarioDetailsViewModelUsuario.UsuarioModulos, usuarioDetailsViewModelUsuario.UsuarioID.ToString(), excepcion); } } else { TempData["toast"] = "Permisos no actualizados"; } var usuario = await _context.Usuarios .Include(c => c.Administrador) .Include(c => c.Colaborador) .FirstOrDefaultAsync(u => u.UsuarioID == usuarioDetailsViewModelUsuario.UsuarioID); if (usuario == null) { TempData["toast"] = "Identificacor incorrecto, verifique."; return(RedirectToAction(nameof(Index))); } var usuarioDetails = new UsuarioDetailsViewModelUsuario() { Activo = usuario.Activo, Administrador = usuario.Administrador, AdministradorID = usuario.AdministradorID, Colaborador = usuario.Colaborador, ColaboradorID = usuario.ColaboradorID, FechaInicio = usuario.FechaInicio, FechaTermino = usuario.FechaTermino, FechaUltimoAcceso = usuario.FechaUltimoAcceso, UsuarioID = usuario.UsuarioID, UsuarioModulos = usuarioDetailsViewModelUsuario.UsuarioModulos }; return(View(usuarioDetails)); }
//Edit Permissions public async Task <IActionResult> EditPermissions(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))); } var usuario = await _context.Usuarios .Include(c => c.Administrador) .Include(c => c.Colaborador) .FirstOrDefaultAsync(u => u.UsuarioID == id); if (usuario == null) { TempData["toast"] = "Identificacor incorrecto, verifique."; return(RedirectToAction(nameof(Index))); } if (usuario.AdministradorID == "SA" || usuario.AdministradorID == "GA") { TempData["toast"] = "Usuario administrador no requiere asignación de permisos."; return(RedirectToAction(nameof(Details), new { id })); } var usuarioModulos = await(from um in _context.UsuariosModulos join m in _context.Modulos on um.ModuloID equals m.ModuloID where um.UsuarioID == id && m.Activo == true && m.ModuloPadreID != Guid.Empty select um) .Include(m => m.Modulo) .OrderBy(m => m.Modulo.Descripcion) .ToListAsync(); var modulosAsignados = usuarioModulos.Select(m => m.ModuloID); var modulosNoAsignados = await _context.Modulos .Where(m => !modulosAsignados.Contains(m.ModuloID) && m.ModuloPadreID != Guid.Empty) .ToListAsync(); if (modulosNoAsignados.Any()) { foreach (var modulo in modulosNoAsignados) { usuarioModulos.Add(new UsuarioModulo { Modulo = modulo, ModuloID = modulo.ModuloID, PermisoEscritura = false, PermisoImprimir = false, PermisoLectura = false, UsuarioID = id, UsuarioModuloID = Guid.Empty }); } } var usuarioDetails = new UsuarioDetailsViewModelUsuario() { Activo = usuario.Activo, Administrador = usuario.Administrador, AdministradorID = usuario.AdministradorID, Colaborador = usuario.Colaborador, ColaboradorID = usuario.ColaboradorID, FechaInicio = usuario.FechaInicio, FechaTermino = usuario.FechaTermino, FechaUltimoAcceso = usuario.FechaUltimoAcceso, UsuarioID = usuario.UsuarioID, UsuarioModulos = usuarioModulos.OrderBy(m => m.Modulo.Descripcion).ToList() }; return(View(usuarioDetails)); }