277 lines
11 KiB
C#
277 lines
11 KiB
C#
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);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|