avansando más
This commit is contained in:
@@ -3,29 +3,40 @@ using Entidades.Admin;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Modelo;
|
||||
public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
||||
public class RepositorioGrupos : RepositorioBase<RepositorioGrupos>
|
||||
{
|
||||
|
||||
public IQueryable<Permiso> ListarPermisosDeGrupo(string grupo) {
|
||||
public IQueryable<Grupo> ListarTodosLosGrupos()
|
||||
{
|
||||
var con = Context;
|
||||
return con.Grupos.Where(x=>x.Nombre == grupo).SelectMany(x => x.Idpermisos);
|
||||
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
|
||||
return con.Grupos.Where(x => x.Nombre == grupo).SelectMany(x => x.Idpermisos);
|
||||
}
|
||||
|
||||
public IQueryable<GrupoAdmin> ObtenerGruposPorDni(long Dni) {
|
||||
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{
|
||||
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){
|
||||
public bool CheckGrupos(string token, string grupo)
|
||||
{
|
||||
var con = Context;
|
||||
Cliente? cli = con.Clientes.Include(x=>x.Idgrupos).FirstOrDefault(x=>x.Token == token);
|
||||
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);
|
||||
Grupo? gru = con.Grupos.FirstOrDefault(x => x.Nombre == grupo);
|
||||
if (gru == null) return false;
|
||||
|
||||
if (cli.Idgrupos.Contains(gru)) return true;
|
||||
@@ -33,4 +44,4 @@ public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
||||
return false;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
namespace Modelo;
|
||||
public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
|
||||
{
|
||||
public object? ListarPermisos(string email)
|
||||
public IQueryable<Grupo>? ListarPermisos(string email)
|
||||
{
|
||||
var con = Context;
|
||||
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
|
||||
@@ -21,31 +21,20 @@ public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
|
||||
|
||||
public bool CheckPermisos(string token, int idpermiso)
|
||||
{
|
||||
// Aca tengo que modificar esto para que haga una busqueda de profundidad para los permisos
|
||||
//WIP Aca tengo que modificar esto para que haga una busqueda de profundidad para los permisos
|
||||
//
|
||||
var con = Context;
|
||||
bool tienePermiso = false;
|
||||
|
||||
//checkeo que el token corresponda a un usuario
|
||||
Cliente? cli = con.Clientes.FirstOrDefault(x => x.Token == token);
|
||||
if (cli == null || cli.Dni == 0) return false;
|
||||
|
||||
// obtengo una lista de los permisos
|
||||
var permisos = con.Clientes
|
||||
.Where(x => x.Dni == cli.Dni)
|
||||
.SelectMany(x => x.Idgrupos)
|
||||
.SelectMany(x => x.Idpermisos)
|
||||
.Distinct();
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//Esto esta comentado porque antes pasaba el string del path de la url, es una mala idea a muchos niveles
|
||||
// abajo un comentario viejo mio
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//me inspiré y hice un regex pero si eliminaba los primeros 8(?) caracteres del string era lo mismo
|
||||
//Match match = Regex.Match(path, @"^/accion/(\d+)$");
|
||||
//int.TryParse(match.Groups[1].Value, out int idpermiso);
|
||||
/////////////////////////////////////////////////////////////////
|
||||
|
||||
Parallel.ForEach(permisos, (x, i) =>
|
||||
{
|
||||
if (x.Id == idpermiso)
|
||||
|
||||
Reference in New Issue
Block a user