diff --git a/Aspnet/Builder/DtoBuilder/GrupoyPermisoDtoBuilder.cs b/Aspnet/Builder/DtoBuilder/GrupoyPermisoDtoBuilder.cs index a7e3df4..ad02d72 100644 --- a/Aspnet/Builder/DtoBuilder/GrupoyPermisoDtoBuilder.cs +++ b/Aspnet/Builder/DtoBuilder/GrupoyPermisoDtoBuilder.cs @@ -9,6 +9,12 @@ public class GrupoDtoBuilder : Builder return this; } + public GrupoDtoBuilder ConHabilitado(bool habilitado) + { + data.Habilitado = habilitado; + return this; + } + public GrupoDtoBuilder ConIdGrupo(int id) { data.idgrupo = id; diff --git a/Aspnet/Controllers/GruposController.cs b/Aspnet/Controllers/GruposController.cs index 0d54433..2a14a1c 100644 --- a/Aspnet/Controllers/GruposController.cs +++ b/Aspnet/Controllers/GruposController.cs @@ -21,6 +21,7 @@ public class GruposController : ControllerBase .Select(g => new GrupoDtoBuilder() .ConNombre(g.Nombre) .ConIdGrupo(g.Id) + .ConHabilitado(g.Habilitado ?? false) .ConGruposIncluidos(new HashSet(g.IdGrupoHijos .Select(id => id.Nombre ?? ""))) .ConPermisos(g.Idpermisos.Select(p => new PermisoDtoBuilder() @@ -64,4 +65,20 @@ public class GruposController : ControllerBase bool ret2 = RepositorioGrupos.Singleton.AddGrupo(grupo, cli); return ret2 ? Ok(new { message = "Se Añadio el grupo" }) : BadRequest(new { message = "Fallo al añadirse el grupo" }); } + + [HttpDelete("/api/grupo")] + public IActionResult DeleteGrupo([FromHeader(Name = "Auth")] string Auth, [FromQuery] int id) + { + var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 18); + if (ret == false) return BadRequest(new { message = "No tiene permiso para Gestionar grupos" }); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" }); + + if (id <= 0) return BadRequest(new { message = "El ID del grupo debe ser mayor que cero" }); + var (ret2, estado) = RepositorioGrupos.Singleton.ToggleGrupo(id, cli); + return ret2 + ? Ok(new { message = (estado ? "Grupo habilitado exitosamente" : "Grupo deshabilitado exitosamente") }) + : BadRequest(new { message = "No se pudo cambiar el estado del grupo" }); + } } diff --git a/Entidades/Dto/GrupoYPermisoDto.cs b/Entidades/Dto/GrupoYPermisoDto.cs index 2764cca..6d4155b 100644 --- a/Entidades/Dto/GrupoYPermisoDto.cs +++ b/Entidades/Dto/GrupoYPermisoDto.cs @@ -3,6 +3,7 @@ public class GrupoDto { public int idgrupo { get; set; } public string Nombre { get; set; } = ""; + public bool Habilitado { get; set; } = false; public HashSet GruposIncluidos { get; set; } = []; public List Permisos { get; set; } = []; diff --git a/Front/src/paginas/AdminGrupos.svelte b/Front/src/paginas/AdminGrupos.svelte index dedbfbb..dc58059 100644 --- a/Front/src/paginas/AdminGrupos.svelte +++ b/Front/src/paginas/AdminGrupos.svelte @@ -109,10 +109,28 @@ modaldat = "Fallo al hacer la request"; } } + + async function togglegrupo(grupo: GrupoDto) { + try { + const req = await fetch($urlG + "/api/grupo?id=" + grupo.idgrupo, { + method: "DELETE", + headers: { + Auth: token, + }, + }); + if (req.ok) { + grupo.habilitado = !grupo.habilitado; + } + modaldat = (await req.json()).message; + ObtenerGrupos(); + } catch { + modaldat = "Fallo al hacer la request"; + } + } {#if modaldat != ""} - + !!(modaldat = "")} /> {/if} {#if showModal} @@ -157,6 +175,14 @@ aria-controls={grupo.idgrupo} > {grupo.nombre} + + {grupo.habilitado + ? "Habilitado" + : "Desabilitado"} +
@@ -202,6 +228,14 @@ onclick={() => setModalEditar(grupo)} >Editar +
diff --git a/Front/src/paginas/GestionPemisos.svelte b/Front/src/paginas/GestionPemisos.svelte index 88283e8..5d636d7 100644 --- a/Front/src/paginas/GestionPemisos.svelte +++ b/Front/src/paginas/GestionPemisos.svelte @@ -108,7 +108,7 @@ {#if modaldat != ""} - + !!(modaldat = "")} /> {/if} diff --git a/Front/src/types.d.ts b/Front/src/types.d.ts index 26a28de..1e4c9d1 100644 --- a/Front/src/types.d.ts +++ b/Front/src/types.d.ts @@ -223,6 +223,7 @@ export type PatchPropiedad = { export type GrupoDto = { idgrupo:number, nombre:string, + habilitado:boolean gruposIncluidos:string[], permisos:PermisoDto[] } diff --git a/Modelo/RepositorioGrupos.cs b/Modelo/RepositorioGrupos.cs index 2e3ba7b..5d1ceb5 100644 --- a/Modelo/RepositorioGrupos.cs +++ b/Modelo/RepositorioGrupos.cs @@ -49,6 +49,19 @@ public class RepositorioGrupos : RepositorioBase } + public (bool, bool) ToggleGrupo(int id, Cliente cli) + { + var con = Context; + var grupo = con.Grupos.FirstOrDefault(x => x.Id == id); + if (grupo == null) return (false, false); + if (grupo.Habilitado == null) grupo.Habilitado = false; + + grupo.Habilitado = !grupo.Habilitado; + + GenerarLog(con, cli.Dni, $"Se dio de {(grupo.Habilitado == true ? "alta" : "baja")} el grupo: {id}"); + return (Guardar(con), grupo.Habilitado ?? false); + } + public IQueryable ListarTodosLosGrupos() { var con = Context;