From 0036f48d192a4e1364cc2f5696244d2f5795e72f Mon Sep 17 00:00:00 2001 From: fede Date: Mon, 31 Mar 2025 23:27:25 -0300 Subject: [PATCH] =?UTF-8?q?primeros=20pasos=20en=20a=C3=B1adir=20las=20cos?= =?UTF-8?q?as=20que=20pide=20el=20profe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aspnet/Builder/PermisoBuilder.cs | 9 ++++++++ Aspnet/Controllers/AccionesController.cs | 8 ++++--- Aspnet/Controllers/GruposController.cs | 14 ++++++++++++ Aspnet/Controllers/PermisoController.cs | 23 ++++++++++++++++++++ Entidades/Dto/GrupoYPermisoDto.cs | 14 ++++++++++++ Front/src/paginas/AdminGrupos.svelte | 6 +++++ Front/src/paginas/AdministrarPermisos.svelte | 1 + Modelo/RepositorioPermisos.cs | 2 +- 8 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 Aspnet/Builder/PermisoBuilder.cs create mode 100644 Aspnet/Controllers/GruposController.cs create mode 100644 Aspnet/Controllers/PermisoController.cs create mode 100644 Entidades/Dto/GrupoYPermisoDto.cs create mode 100644 Front/src/paginas/AdminGrupos.svelte create mode 100644 Front/src/paginas/AdministrarPermisos.svelte diff --git a/Aspnet/Builder/PermisoBuilder.cs b/Aspnet/Builder/PermisoBuilder.cs new file mode 100644 index 0000000..ca30788 --- /dev/null +++ b/Aspnet/Builder/PermisoBuilder.cs @@ -0,0 +1,9 @@ +using Entidades; +public class PermisoBuilder : Builder +{ + public PermisoBuilder SetDescripcion(string desc) + { + data.Descripcion = desc; + return this; + } +} diff --git a/Aspnet/Controllers/AccionesController.cs b/Aspnet/Controllers/AccionesController.cs index ea3dff9..568ccae 100644 --- a/Aspnet/Controllers/AccionesController.cs +++ b/Aspnet/Controllers/AccionesController.cs @@ -24,9 +24,11 @@ public class AccionesController : ControllerBase return Ok(Permisos); } + [HttpPost("api/acciones/grupo")] - public IActionResult ListarAccionesPorGrupo([FromHeader(Name = "Auth")] string Auth, - [FromBody] AccionesPorGrupoDto req) { + public IActionResult ListarAccionesPorGrupo([FromHeader(Name = "Auth")] string Auth, + [FromBody] AccionesPorGrupoDto req) + { if (string.IsNullOrEmpty(Auth)) return BadRequest(); bool esValido = RepositorioUsuarios.Singleton.CheckToken(req.Email, Auth); if (esValido == false) return BadRequest(esValido); @@ -63,7 +65,7 @@ public class AccionesController : ControllerBase var per = new Permiso { Descripcion = req.Descripcion, - } + }; var ret2 = RepositorioPermisos.Singleton.CrearPermiso(per); return ret2 ? Ok(new { message = "se creo correctamente" }) : BadRequest(new { message = "No se pudo crear el permiso" }); } diff --git a/Aspnet/Controllers/GruposController.cs b/Aspnet/Controllers/GruposController.cs new file mode 100644 index 0000000..3208dea --- /dev/null +++ b/Aspnet/Controllers/GruposController.cs @@ -0,0 +1,14 @@ +using Microsoft.AspNetCore.Mvc; +using Modelo; +namespace AlquilaFacil.Controllers; + +[ApiController] +public class GruposController : ControllerBase +{ + [HttpPost("api/admin/grupos")] + public IActionResult ObtenerGrupos([FromHeader(Name = "Auth")] string Auth) + {//WIP + + + } +} diff --git a/Aspnet/Controllers/PermisoController.cs b/Aspnet/Controllers/PermisoController.cs new file mode 100644 index 0000000..e502aa1 --- /dev/null +++ b/Aspnet/Controllers/PermisoController.cs @@ -0,0 +1,23 @@ +using Microsoft.AspNetCore.Mvc; +using Modelo; +namespace AlquilaFacil.Controllers; + +[ApiController] +public class PermisoController : ControllerBase +{ + [HttpPost("api/admin/grupos")] + public IActionResult CrearPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm) + { + //WIP + var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17); + + if (String.IsNullOrWhiteSpace(perm.Descripcion)) return BadRequest(new { message = "No puede tener una descripcion vacia" }); + if (perm.Descripcion.Length > 25) return BadRequest(new { message = "la descripcion no puede tener más de 25 caractéres" }); + + var permiso = new PermisoBuilder().SetDescripcion(perm.Descripcion).Build(); + + var ret = RepositorioPermisos.Singleton.CrearPermiso(permiso); + + return ret ? Ok() : BadRequest(); + } +} diff --git a/Entidades/Dto/GrupoYPermisoDto.cs b/Entidades/Dto/GrupoYPermisoDto.cs new file mode 100644 index 0000000..4017198 --- /dev/null +++ b/Entidades/Dto/GrupoYPermisoDto.cs @@ -0,0 +1,14 @@ +public class GrupoDto +{ + public int idgrupo { get; set; } + public string Nombre { get; set; } = ""; + public HashSet GruposIncluidos { get; set; } = []; + public List Permisos { get; set; } = []; + +} + +public class PermisoDto +{ + public int Id { get; set; } + public string Descripcion { get; set; } = ""; +} diff --git a/Front/src/paginas/AdminGrupos.svelte b/Front/src/paginas/AdminGrupos.svelte new file mode 100644 index 0000000..8a651db --- /dev/null +++ b/Front/src/paginas/AdminGrupos.svelte @@ -0,0 +1,6 @@ + + + +
diff --git a/Front/src/paginas/AdministrarPermisos.svelte b/Front/src/paginas/AdministrarPermisos.svelte new file mode 100644 index 0000000..7c94f5c --- /dev/null +++ b/Front/src/paginas/AdministrarPermisos.svelte @@ -0,0 +1 @@ +//WIP diff --git a/Modelo/RepositorioPermisos.cs b/Modelo/RepositorioPermisos.cs index f2d457a..bb0ffa8 100644 --- a/Modelo/RepositorioPermisos.cs +++ b/Modelo/RepositorioPermisos.cs @@ -36,7 +36,7 @@ public class RepositorioPermisos : RepositorioBase .SelectMany(x => x.Idgrupos) .SelectMany(x => x.Idpermisos) .Distinct(); - + ///////////////////////////////////////////////////////////////// //Esto esta comentado porque antes pasaba el string del path de la url, es una mala idea a muchos niveles // abajo un comentario viejo mio