using Microsoft.AspNetCore.Mvc; using Modelo; using Entidades; using Entidades.Dto; using AlquilaFacil.Builder; namespace AlquilaFacil.Controllers; [ApiController] public class PermisoController : ControllerBase { [HttpPost("api/permisos")] public IActionResult CrearPermiso([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 (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, 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(); } [HttpGet("/api/permisos/todos")] public IActionResult ObtenerTodosLosPermisos([FromHeader(Name = "Auth")] string Auth) { var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 18); if (ret == false) return BadRequest(new { message = "No tiene permiso para ver Todos los permisos" }); var permisos = RepositorioPermisos.Singleton.ListarPermisos(); var perms = permisos.Select(permiso => new PermisoDtoBuilder() .ConId(permiso.Id) .ConDescripcion(permiso.Descripcion) .Build()); return Ok(perms); } }