From 543bc9e5a60f768af0259d2341e1bb3c0456f4ff Mon Sep 17 00:00:00 2001 From: fede Date: Mon, 21 Apr 2025 16:01:15 -0300 Subject: [PATCH] =?UTF-8?q?A=C3=B1adido=20soporte=20para=20crear=20grupos?= =?UTF-8?q?=20nuevos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aspnet/Controllers/GruposController.cs | 20 ++- Front/public/plus.svg | 20 +++ Front/src/Componentes/BotonEsquina.svelte | 41 ++++++ Front/src/Componentes/ModalAñadirGrupo.svelte | 133 ++++++++++++++++++ Front/src/paginas/AdminGrupos.svelte | 35 +++++ Modelo/RepositorioGrupos.cs | 15 ++ 6 files changed, 263 insertions(+), 1 deletion(-) create mode 100644 Front/public/plus.svg create mode 100644 Front/src/Componentes/BotonEsquina.svelte create mode 100644 Front/src/Componentes/ModalAñadirGrupo.svelte diff --git a/Aspnet/Controllers/GruposController.cs b/Aspnet/Controllers/GruposController.cs index d8569ff..3521b96 100644 --- a/Aspnet/Controllers/GruposController.cs +++ b/Aspnet/Controllers/GruposController.cs @@ -41,8 +41,26 @@ public class GruposController : ControllerBase Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" }); - Console.WriteLine(grupo.GruposIncluidos.Count); + bool ret2 = RepositorioGrupos.Singleton.PatchGrupo(grupo, cli); return ret2 ? Ok(new { message = "Se Modifico el grupo" }) : BadRequest(new { message = "Fallo al editar el grupo" }); } + + [HttpPost("/api/grupo")] + public IActionResult PostGrupo([FromHeader(Name = "Auth")] string Auth, GrupoDto grupo) + { + 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 (grupo.Nombre.Length > 25) + { + return BadRequest(new { message = "El nombre del grupo no puede superar los 25 caracteres" }); + } + + 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" }); + } } diff --git a/Front/public/plus.svg b/Front/public/plus.svg new file mode 100644 index 0000000..c0ae662 --- /dev/null +++ b/Front/public/plus.svg @@ -0,0 +1,20 @@ + + + + + diff --git a/Front/src/Componentes/BotonEsquina.svelte b/Front/src/Componentes/BotonEsquina.svelte new file mode 100644 index 0000000..550a2f8 --- /dev/null +++ b/Front/src/Componentes/BotonEsquina.svelte @@ -0,0 +1,41 @@ + + + + + diff --git a/Front/src/Componentes/ModalAñadirGrupo.svelte b/Front/src/Componentes/ModalAñadirGrupo.svelte new file mode 100644 index 0000000..91c7680 --- /dev/null +++ b/Front/src/Componentes/ModalAñadirGrupo.svelte @@ -0,0 +1,133 @@ + + + diff --git a/Front/src/paginas/AdminGrupos.svelte b/Front/src/paginas/AdminGrupos.svelte index 23fd4ce..dedbfbb 100644 --- a/Front/src/paginas/AdminGrupos.svelte +++ b/Front/src/paginas/AdminGrupos.svelte @@ -6,11 +6,15 @@ import ModalEstatico from "../Componentes/ModalEstatico.svelte"; import ModalEditarGrupo from "../Componentes/ModalEditarGrupo.svelte"; import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte"; + import BotonEsquina from "../Componentes/BotonEsquina.svelte"; + import ModalAadirGrupo from "../Componentes/ModalAñadirGrupo.svelte"; const token: string = sessionStorage.getItem("token") || ""; let grupos: GrupoDto[] = $state([]); let modaldat: string = $state(""); + let showmodaladd = $state(false); + onMount(() => { ObtenerGrupos(); obtenerPermisos(); @@ -84,6 +88,27 @@ modaldat = "Fallo Al intentar hacer la request"; } } + + async function submitGrupo(a: GrupoDto) { + let b = a; + try { + let req = await fetch($urlG + "/api/grupo", { + method: "POST", + headers: { + Auth: token, + "Content-Type": "application/json", + }, + body: JSON.stringify(b), + }); + const resp = await req.json(); + modaldat = resp.message; + if (req.ok) { + ObtenerGrupos(); + } + } catch { + modaldat = "Fallo al hacer la request"; + } + } {#if modaldat != ""} @@ -102,6 +127,7 @@
+ {#if grupos.length == 0}
@@ -109,6 +135,15 @@
{:else} + (showmodaladd = true)} /> + {#if showmodaladd} + (showmodaladd = false)} + {grupos} + {permisos} + onSubmit={submitGrupo} + /> + {/if} {#each grupos as grupo}
diff --git a/Modelo/RepositorioGrupos.cs b/Modelo/RepositorioGrupos.cs index 6c8d42f..2e3ba7b 100644 --- a/Modelo/RepositorioGrupos.cs +++ b/Modelo/RepositorioGrupos.cs @@ -6,6 +6,21 @@ using Microsoft.EntityFrameworkCore; namespace Modelo; public class RepositorioGrupos : RepositorioBase { + public bool AddGrupo(GrupoDto grupo, Cliente cli) + { + var con = Context; + + var g = new Grupo + { + Id = con.Grupos.Max(x => x.Id) + 1, + Nombre = grupo.Nombre, + IdGrupoHijos = con.Grupos.Where(x => grupo.GruposIncluidos.Contains(x.Nombre)).ToList(), + Idpermisos = con.Permisos.Where(x => grupo.Permisos.Select(x => x.Id).Contains(x.Id)).ToList(), + }; + con.Grupos.Add(g); + GenerarLog(con, cli.Dni, $"Alta Grupo: {g.Nombre}"); + return Guardar(con); + } public bool PatchGrupo(GrupoDto grupo, Cliente cli) { var con = Context;