añadido endpoint para crear permisos

This commit is contained in:
2025-03-14 02:33:59 -03:00
parent 878583664e
commit b3ffa657f5
3 changed files with 68 additions and 18 deletions

View File

@@ -1,20 +1,20 @@
using System.ComponentModel.DataAnnotations;
using Entidades.Dto; using Entidades.Dto;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Modelo; using Modelo;
using System.Text.Json; using Entidades;
namespace AlquilaFacil.Controllers; namespace AlquilaFacil.Controllers;
[ApiController] [ApiController]
public class AccionesController: ControllerBase { public class AccionesController : ControllerBase
{
[HttpGet("api/acciones")] [HttpGet("api/acciones")]
public IActionResult ListarAccionesPorUsuario([FromHeader(Name ="Email")] string Email, [FromHeader(Name = "Auth")] string Auth) { public IActionResult ListarAccionesPorUsuario([FromHeader(Name = "Email")] string Email, [FromHeader(Name = "Auth")] string Auth)
{
if (Email == "" || Email == null) return BadRequest(); if (Email == "" || Email == null) return BadRequest();
if (Auth == "") return Unauthorized(new { esValido = false}); if (Auth == "") return Unauthorized(new { esValido = false });
bool esValido = RepositorioUsuarios.Singleton.CheckToken(Email, Auth); bool esValido = RepositorioUsuarios.Singleton.CheckToken(Email, Auth);
if (!esValido) return Unauthorized(); if (!esValido) return Unauthorized();
@@ -37,4 +37,34 @@ public class AccionesController: ControllerBase {
var permisos = RepositorioGrupos.Singleton.ListarPermisosDeGrupo(req.Grupo); var permisos = RepositorioGrupos.Singleton.ListarPermisosDeGrupo(req.Grupo);
return Ok(permisos); return Ok(permisos);
} }
}
[HttpPost("api/acciones/crear")]
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))
{
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" });
}
}

View File

@@ -0,0 +1,5 @@
namespace Entidades.Dto;
public class CrearAccionesDto
{
public string Descripcion { get; set; } = "";
}

View File

@@ -3,21 +3,26 @@ using Entidades;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace Modelo; namespace Modelo;
public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> { public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
public object? ListarPermisos(string email) { {
public object? ListarPermisos(string email)
{
var con = Context; var con = Context;
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email); Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
if (cli == null) return null; if (cli == null) return null;
var list = con.Clientes var list = con.Clientes
.Where(c => c.Dni == cli.Dni) .Where(c => c.Dni == cli.Dni)
.SelectMany(c => c.Idgrupos) .SelectMany(c => c.Idgrupos)
.Include(x=> x.Idpermisos); .Include(x => x.Idpermisos);
return list; return list;
} }
public bool CheckPermisos(string token, int idpermiso){ public bool CheckPermisos(string token, int idpermiso)
{
// Aca tengo que modificar esto para que haga una busqueda de profundidad para los permisos
//
var con = Context; var con = Context;
bool tienePermiso = false; bool tienePermiso = false;
@@ -41,12 +46,22 @@ public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
//int.TryParse(match.Groups[1].Value, out int idpermiso); //int.TryParse(match.Groups[1].Value, out int idpermiso);
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
Parallel.ForEach(permisos, (x, i) =>{ Parallel.ForEach(permisos, (x, i) =>
if (x.Id == idpermiso) { {
if (x.Id == idpermiso)
{
tienePermiso = true; tienePermiso = true;
} }
}); });
return tienePermiso; return tienePermiso;
} }
}
public bool CrearPermiso(Permiso per)
{
var con = Context;
per.Id = con.Permisos.Any() ? con.Permisos.Max(x => x.Id) + 1 : 1;
con.Permisos.Add(per);
return Guardar(con);
}
}