This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,277 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Helpers
{
public static class AuthorizationHelper
{
public static class OrarendiOra
{
public static bool TanuloHasAccess(IConnectionType connectionType, int orarendiOraId, DateTime oraDatuma)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var orarendiOra = h.OrarendiOra().Get(orarendiOraId);
return OsztalyCsoport.TanuloHasAccess(h, connectionType.FelhasznaloId, orarendiOra.OsztalyCsoportId, oraDatuma);
});
}
}
public static class TanitasiOra
{
public static bool TanuloHasAccess(IConnectionType connectionType, int tanitasiOraId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var tanitasiOra = h.TanitasiOra().Get(tanitasiOraId);
return OsztalyCsoport.TanuloHasAccess(h, connectionType.FelhasznaloId, tanitasiOra.OsztalyCsoportId, tanitasiOra.Datum);
});
}
}
public static class NemKotottMunkaido
{
public static bool TanarHasAccess(IConnectionType connectionType, int nemKotottMunkaidoId)
{
var nemKotottMunkaido = new NemKotottMunkaidoHelper(connectionType).GetNemKotottMunkaidoById(nemKotottMunkaidoId);
return (nemKotottMunkaido.TanarId == connectionType.FelhasznaloId) || (nemKotottMunkaido.TulajId == connectionType.FelhasznaloId);
}
}
public static class OsztalyCsoport
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int osztalyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var osztaly = h.Osztaly().Get(osztalyId);
return (osztaly.OsztalyFonokId == connectionType.FelhasznaloId) || (osztaly.OfoHelyettesId == connectionType.FelhasznaloId);
});
}
public static bool CsoportvezetoHasAccess(IConnectionType connectionType, int csoportId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var csoport = h.Csoport().Get(csoportId);
return csoport.CsoportVezetoId == connectionType.FelhasznaloId;
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int osztalyCsoportId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, lehetTtf, null);
return kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable().Any(x => x.Field<int>("ID") == osztalyCsoportId);
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int osztalyCsoportId, int tantargyId)
{
return Dal.CustomConnection.Run(connectionType, h => TanarHasAccess(h, connectionType.FelhasznaloId, osztalyCsoportId, tantargyId, connectionType.TanevId));
}
internal static bool TanarHasAccess(IDalHandler dal, int tanarId, int osztalyCsoportId, int tantargyId, int tanevId)
{
var foglalkozasok = dal.Foglalkozas().GetFoglalkozasok(tanarId, tanevId);
return foglalkozasok.Tables[0].AsEnumerable().Any(x => x.Field<int>("OsztalyCsoportID") == osztalyCsoportId && x.Field<int>("TantargyID") == tantargyId);
}
internal static bool TanuloHasAccess(IDalHandler dal, int tanuloId, int osztalyCsoportId, DateTime datum)
{
return dal.OsztalyCsoport().IsTanuloOsztalyCsoportTagja(tanuloId, osztalyCsoportId, datum);
}
}
public static class Tanulo
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int tanuloId)
{
return Dal.CustomConnection.Run(connectionType, h => OsztalyfonokHasAccess(h, connectionType, tanuloId));
}
internal static bool OsztalyfonokHasAccess(IDalHandler h, IConnectionType connectionType, int tanuloId)
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var osztalyokOsztalyfonokAlapjan = h.OsztalyCsoport().GetOsztalyokOsztalyfonokAlapjan(connectionType.FelhasznaloId, connectionType.IntezmenyId, connectionType.TanevId);
foreach (var row in osztalyokOsztalyfonokAlapjan.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
return false;
}
public static bool TanarHasAccess(IConnectionType connectionType, int tanuloId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h => TanarHasAccess(h, connectionType, tanuloId, lehetTtf));
}
internal static bool TanarHasAccess(IDalHandler h, IConnectionType connectionType, int tanuloId, bool lehetTtf)
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, lehetTtf, null);
foreach (var row in kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
return false;
}
public static bool TanarHasAccess(IConnectionType connectionType, List<int> tanuloIdList, int osztalyCsoportId, bool lehetTtf)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
if (OsztalyCsoport.TanarHasAccess(connectionType, osztalyCsoportId, lehetTtf))
{
var osztalyCsoportTanuloi = h.Tanulo().GetOsztalyCsoportMindenkoriTanuloi(osztalyCsoportId);
var osztalyCsoportTanuloiIdList = osztalyCsoportTanuloi.Tables[0].AsEnumerable().Select(t => t.Field<int>("ID"));
return tanuloIdList.All(tanuloId => osztalyCsoportTanuloiIdList.Contains(tanuloId));
}
return false;
});
}
public static bool TanarHasAccess(IConnectionType connectionType, int tanuloId, int tantargyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var tanuloOsztalyCsoportjai = h.OsztalyCsoport().GetTanuloMindenkoriOsztalyCsoportjai(tanuloId);
var kapcsolodoOsztalyCsoportok = h.OsztalyCsoport().GetKapcsolodoOsztalyCsoportokByTanarId(connectionType.FelhasznaloId, true, true, false, null);
foreach (var row in kapcsolodoOsztalyCsoportok.Tables[0].AsEnumerable())
{
if (tanuloOsztalyCsoportjai.Contains(row.Field<int>("ID")))
{
return true;
}
}
var foglalkozasok = h.Foglalkozas().GetFoglalkozasok(connectionType.FelhasznaloId, connectionType.TanevId);
foreach (var row in foglalkozasok.Tables[0].AsEnumerable())
{
if (row.Field<int>("TantargyID") == tantargyId && tanuloOsztalyCsoportjai.Contains(row.Field<int>("OsztalyCsoportID")))
{
return true;
}
}
return false;
});
}
}
public static class Ertekeles
{
public static bool TanarHasAccess(IConnectionType connectionType, int ertekelesId)
{
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(ertekelesId);
if (tanuloErtekelesCo != null && !tanuloErtekelesCo.IsMagatartasSzorgalom && tanuloErtekelesCo.ErtekeloId == connectionType.FelhasznaloId)
{
return true;
}
return false;
}
}
public static class MagatartasSzorgalom
{
public static bool TanarHasAccess(IConnectionType connectionType, int magatartasSzorgalomId)
{
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(magatartasSzorgalomId);
if (tanuloErtekelesCo != null && tanuloErtekelesCo.IsMagatartasSzorgalom && tanuloErtekelesCo.ErtekeloId == connectionType.FelhasznaloId)
{
return true;
}
return false;
}
}
public static class Mulasztas
{
public static bool TanarHasAccess(IConnectionType connectionType, int mulasztasId)
{
var oraTanuloiId = new MulasztasHelper(connectionType).GetOraTanuloId(mulasztasId);
return Tanulo.TanarHasAccess(connectionType, oraTanuloiId, false);
}
}
public static class Igazolas
{
public static bool TanarHasAccess(IConnectionType connectionType, int igazolasId)
{
var igazolas = new IgazolasHelper(connectionType).GetIgazolasCoById(igazolasId);
if (igazolas.RogzitoId == connectionType.FelhasznaloId)
{
return true;
}
return Tanulo.TanarHasAccess(connectionType, igazolas.TanuloId, false);
}
}
public static class KozossegiSzolgalat
{
public static bool TanarHasAccess(IConnectionType connectionType, int kozossegiSzolgalatId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var kozossegiSzolgalat = h.TanuloKozossegiSzolgalat().Get(kozossegiSzolgalatId);
if (kozossegiSzolgalat.FeljegyzoId == connectionType.FelhasznaloId)
{
return true;
}
return Tanulo.TanarHasAccess(h, connectionType, kozossegiSzolgalat.TanuloId, false);
});
}
}
public static class ErettsegiEredmeny
{
public static bool OsztalyfonokHasAccess(IConnectionType connectionType, int erettsegiEredmenyId)
{
return Dal.CustomConnection.Run(connectionType, h =>
{
var erettsegiEredmeny = h.ErettsegiEredmeny().Get(erettsegiEredmenyId);
return Tanulo.OsztalyfonokHasAccess(h, connectionType, erettsegiEredmeny.TanuloId);
});
}
}
}
}