diff --git a/Aspnet/Builder/PermisoBuilder.cs b/Aspnet/Builder/PermisoBuilder.cs index ca30788..c6753d3 100644 --- a/Aspnet/Builder/PermisoBuilder.cs +++ b/Aspnet/Builder/PermisoBuilder.cs @@ -6,4 +6,10 @@ public class PermisoBuilder : Builder data.Descripcion = desc; return this; } + + public PermisoBuilder SetID(int id) + { + data.Id = id; + return this; + } } diff --git a/Aspnet/Controllers/AccionesController.cs b/Aspnet/Controllers/AccionesController.cs index 6372798..8c4b9a9 100644 --- a/Aspnet/Controllers/AccionesController.cs +++ b/Aspnet/Controllers/AccionesController.cs @@ -39,34 +39,35 @@ public class AccionesController : ControllerBase var permisos = RepositorioGrupos.Singleton.ListarPermisosDeGrupo(req.Grupo); return Ok(permisos); } - - [HttpPost("api/acciones/crear")] //creo que es codido duplicado - public IActionResult CrearAcciones([FromHeader(Name = "Auth")] string Auth, - [FromBody] CrearAccionesDto req) - { - if (string.IsNullOrEmpty(Auth)) return BadRequest(); - - Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); - if (cli == null) return Unauthorized(); - - var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); //wip lo voy a usar para crear el permiso que va - if (ret == false) return Unauthorized(); - - if (string.IsNullOrWhiteSpace(req.Descripcion)) + /* + [HttpPost("api/acciones/crear")] //creo que es codido duplicado + public IActionResult CrearAcciones([FromHeader(Name = "Auth")] string Auth, + [FromBody] CrearAccionesDto req) { - return BadRequest(new { message = "La descripción no puede estar vacía" }); + if (string.IsNullOrEmpty(Auth)) return BadRequest(); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return Unauthorized(); + + var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); //wip lo voy a usar para crear el permiso que va + if (ret == false) return Unauthorized(); + + if (string.IsNullOrWhiteSpace(req.Descripcion)) + { + return BadRequest(new { message = "La descripción no puede estar vacía" }); + } + + if (req.Descripcion.Length > 25) + { + return BadRequest(new { message = "La descripción no puede ser mayor a 25 caracteres" }); + } + + 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" }); } - - if (req.Descripcion.Length > 25) - { - return BadRequest(new { message = "La descripción no puede ser mayor a 25 caracteres" }); - } - - 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/PermisoController.cs b/Aspnet/Controllers/PermisoController.cs index f83b1fa..42c61eb 100644 --- a/Aspnet/Controllers/PermisoController.cs +++ b/Aspnet/Controllers/PermisoController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Modelo; +using Entidades; using Entidades.Dto; using AlquilaFacil.Builder; namespace AlquilaFacil.Controllers; @@ -7,18 +8,40 @@ namespace AlquilaFacil.Controllers; [ApiController] public class PermisoController : ControllerBase { - [HttpPost("api/admin/grupos")] + [HttpPost("api/permisos")] public IActionResult CrearPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm) { - //WIP var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17); + if (ret1 == false) return BadRequest(new { message = "No tienes permiso para esto" }); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" }); 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); + var ret = RepositorioPermisos.Singleton.CrearPermiso(permiso, cli); + + return ret ? Ok() : BadRequest(); + } + [HttpPatch("api/permisos")] + public IActionResult PatchPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm) + { + var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17); + if (ret1 == false) return BadRequest(new { message = "No tienes permiso para esto" }); + + Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" }); + + if (perm.Id <= 0) return BadRequest(new { message = "No puede haber una id 0 o menor" }); + 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).SetID(perm.Id).Build(); + + var ret = RepositorioPermisos.Singleton.PatchPermiso(permiso, cli); return ret ? Ok() : BadRequest(); } diff --git a/Front/src/paginas/GestionPemisos.svelte b/Front/src/paginas/GestionPemisos.svelte index a1a4779..88283e8 100644 --- a/Front/src/paginas/GestionPemisos.svelte +++ b/Front/src/paginas/GestionPemisos.svelte @@ -8,6 +8,8 @@ import BotonEsquina from "../Componentes/BotonEsquina.svelte"; import ModalEditarPermiso from "../Componentes/ModalEditarPermiso.svelte"; import Login from "./login.svelte"; + import { Modal } from "@sveltestrap/sveltestrap"; + import ModalLogs from "../Componentes/ModalLogs.svelte"; const token: string = sessionStorage.getItem("token") || ""; @@ -60,12 +62,48 @@ } } - function NuevoPermiso(a: PermisoDto): void { - throw new Error("Function not implemented.WIP"); + async function NuevoPermiso(a: PermisoDto) { + let b = a; + try { + const req = await fetch($urlG + "/api/permisos", { + method: "POST", + headers: { + Auth: token, + "Content-Type": "application/json", + }, + body: JSON.stringify(b), + }); + if (req.ok) { + obtenerPermisos(); + return; + } + modaldat = "Hubieron problemas creando el permiso"; + return; + } catch { + modaldat = "Fallo al hacer la request"; + } } - function PatchPermiso(): void { - throw new Error("Function not implemented.WIP"); + async function PatchPermiso(a: PermisoDto) { + let b = a; + try { + const req = await fetch($urlG + "/api/permisos", { + method: "PATCH", + headers: { + Auth: token, + "Content-Type": "application/json", + }, + body: JSON.stringify(b), + }); + if (req.ok) { + obtenerPermisos(); + return; + } + modaldat = "Hubieron problemas editando el permiso"; + return; + } catch { + modaldat = "Fallo al hacer la request"; + } } diff --git a/Modelo/RepositorioPermisos.cs b/Modelo/RepositorioPermisos.cs index 68a7e69..1b91a0c 100644 --- a/Modelo/RepositorioPermisos.cs +++ b/Modelo/RepositorioPermisos.cs @@ -51,11 +51,24 @@ public class RepositorioPermisos : RepositorioBase return tienePermiso; } - public bool CrearPermiso(Permiso per) + public bool CrearPermiso(Permiso per, Cliente cli) { var con = Context; per.Id = con.Permisos.Any() ? con.Permisos.Max(x => x.Id) + 1 : 1; con.Permisos.Add(per); + GenerarLog(con, cli.Dni, $"Creado Permiso {per.Descripcion}"); return Guardar(con); } + public bool PatchPermiso(Permiso per, Cliente cli) + { + var con = Context; + var perm = con.Permisos.FirstOrDefault(x => x.Id == per.Id); + if (perm == null) return false; + + perm.Descripcion = per.Descripcion; + + GenerarLog(con, cli.Dni, $"Editado Permiso {per.Id}"); + return Guardar(con); + + } }