Files
AlquilaFacil/Aspnet/Controllers/GruposController.cs
2025-05-29 21:34:42 -03:00

85 lines
3.8 KiB
C#

using Microsoft.AspNetCore.Mvc;
using Modelo;
using AlquilaFacil.Builder;
using Entidades;
using Entidades.Dto;
namespace AlquilaFacil.Controllers;
[ApiController]
public class GruposController : ControllerBase
{
[HttpGet("api/admin/grupos")]
public IActionResult ObtenerGrupos([FromHeader(Name = "Auth")] string Auth)
{
var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 18) || RepositorioPermisos.Singleton.CheckPermisos(Auth, 9);
if (ret == false) return BadRequest(new { message = "No tiene permiso para ver todos los grupos" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" });
var grupos = RepositorioGrupos.Singleton.ListarTodosLosGrupos()
.Select(g => new GrupoDtoBuilder()
.ConNombre(g.Nombre)
.ConIdGrupo(g.Id)
.ConHabilitado(g.Habilitado ?? false)
.ConGruposIncluidos(new HashSet<string>(g.IdGrupoHijos
.Select(id => id.Nombre ?? "")))
.ConPermisos(g.Idpermisos.Select(p => new PermisoDtoBuilder()
.ConId(p.Id)
.ConDescripcion(p.Descripcion)
.Build())
.ToList())
.Build())
.ToList();
return Ok(grupos);
}
[HttpPatch("/api/grupo")]
public IActionResult PatchGrupo([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" });
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 > 12)
{
return BadRequest(new { message = "El nombre del grupo no puede superar los 12 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" });
}
[HttpDelete("/api/grupo")]
public IActionResult DeleteGrupo([FromHeader(Name = "Auth")] string Auth, [FromQuery] int id)
{
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 (id <= 0) return BadRequest(new { message = "El ID del grupo debe ser mayor que cero" });
var (ret2, estado) = RepositorioGrupos.Singleton.ToggleGrupo(id, cli);
return ret2
? Ok(new { message = (estado ? "Grupo habilitado exitosamente" : "Grupo deshabilitado exitosamente") })
: BadRequest(new { message = "No se pudo cambiar el estado del grupo" });
}
}