Files
AlquilaFacil/Modelo/RepositorioGrupos.cs
fede ffb860688d analizado que necesito hacer de aca en adelante
- [ ] una pagina de grupo default
- [ ] los permisos resuelvan los de subgrupos
2025-04-21 01:09:53 -03:00

76 lines
2.2 KiB
C#

using Entidades;
using Entidades.Admin;
using Entidades.Dto;
using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioGrupos : RepositorioBase<RepositorioGrupos>
{
public bool PatchGrupo(GrupoDto grupo, Cliente cli)
{
var con = Context;
var g = con.Grupos
.Include(x => x.IdGrupoHijos)
.Include(x => x.Idpermisos).FirstOrDefault(x => x.Id == grupo.idgrupo);
if (g == null)
{
return false;
}
var listg = grupo.GruposIncluidos.ToList();
if (grupo.GruposIncluidos != null)
{
g.IdGrupoHijos = con.Grupos.Where(x => listg.Contains(x.Nombre)).ToList();
}
if (grupo.Permisos != null)
{
g.Idpermisos = con.Permisos.Where(x => grupo.Permisos.Select(p => p.Id).Contains(x.Id)).ToList();
}
GenerarLog(con, cli.Dni, "Patch Grupo");
return Guardar(con);
}
public IQueryable<Grupo> ListarTodosLosGrupos()
{
var con = Context;
var grupos = con.Grupos.Include(x => x.IdGrupoHijos).ThenInclude(x => x.Idpermisos).Include(x => x.Idpermisos);
return grupos;
}
public IQueryable<Permiso> ListarPermisosDeGrupo(string grupo)
{
var con = Context; //WIP Revisar esto. revisado necesito hacer una pagina de grupo default y que los permisos resuelvan los de subgrupos
return con.Grupos.Where(x => x.Nombre == grupo).SelectMany(x => x.Idpermisos);
}
public IQueryable<GrupoAdmin> ObtenerGruposPorDni(long Dni)
{
var con = Context;
var grupos = con.Clientes.Where(x => x.Dni == Dni).SelectMany(x => x.Idgrupos)
.Select(x => new GrupoAdmin
{
Id = x.Id,
Descripcion = x.Nombre,
});
return grupos;
}
public bool CheckGrupos(string token, string grupo)
{
var con = Context;
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(x => x.Token == token);
if (cli == null) return false;
Grupo? gru = con.Grupos.FirstOrDefault(x => x.Nombre == grupo);
if (gru == null) return false;
if (cli.Idgrupos.Contains(gru)) return true;
return false;
}
}