kreta/Kreta.DataAccessManual/ParameterClasses/TanuloKeresesPCO.cs
2024-03-13 00:33:46 +01:00

305 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using Kreta.Core;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
namespace Kreta.DataAccessManual.ParameterClasses
{
public class TanuloKeresesPCO
{
public string Nev { get; set; }
public DateTime? SzuletesiIdoKezdet { get; set; }
public DateTime? SzuletesiIdoVeg { get; set; }
public string AnyjaNeve { get; set; }
public string SzuletesiHely { get; set; }
public int? OsztalyId { get; set; }
public int? EvfolyamId { get; set; }
public int? Neme { get; set; }
public int? FelvetelEve { get; set; }
public bool? Vegzos { get; set; }
public bool Aktiv { get; set; }
public bool? SNI { get; set; }
public bool? BTM { get; set; }
public int? FeladatellatasiHelyId { get; set; }
public int? HatranyosHelyzetId { get; set; }
public bool Torolt { get; set; } = false;
public string OktatasiAzonosito { get; set; }
public bool? OsztalybaSoroltTantervNelkul { get; set; }
public bool? NincsNem { get; set; }
public bool? NincsSzakmaCsoport { get; set; }
public bool? NincsAnyanyelv { get; set; }
public bool? NincsAllampolgarsag { get; set; }
public bool? TanuloBelepesNelkul { get; set; }
public int? TanevId { get; set; }
public DateTime? LekerdezesNapja { get; set; }
public int? FeladatKategoriaId { get; set; }
public int? SearchMuveszetiAgId { get; set; }
public bool ForOktober { get; set; }
public bool? NincsOsztondijAlapAdat { get; set; }
public bool? NincsOsztondijUtalasAdat { get; set; }
public bool? VanKettosOsztalybesorolas { get; set; }
public bool IsFromSzervezet { get; set; }
public int? SzervezetId { get; set; }
public string SzervezetNev { get; set; }
public string SzervezetAzonosito { get; set; }
public bool IsAktivTanev { get; set; }
public int? TanterviJellegSearchId { get; set; }
public int IntezmenyId { get; set; }
/// <summary>
/// "Közös" paraméterek kifejtése
/// </summary>
/// <returns></returns>
internal List<CommandParameter> ExtractParameters(bool IsFromSzervezet = false)
{
var parameters = new List<CommandParameter>();
if (!IsFromSzervezet)
{
parameters.Add(new CommandParameter("pTorolt", Torolt ? "T" : "F"));
if (NincsNem.HasValue && NincsNem.Value)
{
parameters.Add(new CommandParameter("pNeme", NemEnum.NA));
}
else if (Neme.HasValue)
{
parameters.Add(new CommandParameter("pNeme", Neme));
}
if (SNI.HasValue)
{
string SNIValue = SNI.Value ? "T" : "F";
parameters.Add(new CommandParameter("pSNI", SNIValue));
}
if (BTM.HasValue)
{
string BTMValue = BTM.Value ? "T" : "F";
parameters.Add(new CommandParameter("pBTM", BTMValue));
}
if (HatranyosHelyzetId.HasValue)
{
parameters.Add(new CommandParameter("pHatranyosHelyzetId", HatranyosHelyzetId.Value));
}
if (OsztalybaSoroltTantervNelkul.HasValue && OsztalybaSoroltTantervNelkul.Value)
{
parameters.Add(new CommandParameter("pOsztalybaSoroltTantervNelkul", true));
}
if (Vegzos.HasValue)
{
string VegzosValue = Vegzos.Value ? "T" : "F";
parameters.Add(new CommandParameter("pVegzosEvfolyam", VegzosValue));
}
if (FeladatellatasiHelyId.HasValue)
{
parameters.Add(new CommandParameter("pFeladatellatasiHelyId", FeladatellatasiHelyId.Value));
}
if (EvfolyamId.HasValue)
{
parameters.Add(new CommandParameter("pEvfolyamTipusaId", EvfolyamId.Value));
}
if (Aktiv)
{
parameters.Add(new CommandParameter("pAktiv", true));
}
if (FeladatKategoriaId.IsEntityId())
{
parameters.Add(new CommandParameter("pFeladatKategoriaId", FeladatKategoriaId.Value));
}
if (SearchMuveszetiAgId.HasValue)
{
parameters.Add(new CommandParameter("pMuveszetiAgId", SearchMuveszetiAgId.Value));
}
if (TanterviJellegSearchId.HasValue)
{
parameters.Add(new CommandParameter("pTanterviJellegId", TanterviJellegSearchId.Value));
}
}
if (!string.IsNullOrWhiteSpace(Nev))
{
parameters.Add(new CommandParameter("pTanuloNeve", Nev));
}
if (SzuletesiIdoKezdet.HasValue)
{
parameters.Add(new CommandParameter("pSzuletesiIdoKezdet", SzuletesiIdoKezdet));
}
if (SzuletesiIdoVeg.HasValue)
{
parameters.Add(new CommandParameter("pSzuletesiIdoVeg", SzuletesiIdoVeg));
}
if (!string.IsNullOrWhiteSpace(AnyjaNeve))
{
parameters.Add(new CommandParameter("pAnyjaNeve", AnyjaNeve));
}
if (!string.IsNullOrWhiteSpace(SzuletesiHely))
{
parameters.Add(new CommandParameter("pSzuletesiHely", SzuletesiHely));
}
if (!string.IsNullOrWhiteSpace(OktatasiAzonosito))
{
parameters.Add(new CommandParameter("pOktatasiAzonosito", OktatasiAzonosito));
}
if (OsztalyId.HasValue)
{
parameters.Add(new CommandParameter("pOsztalyCsoportId", OsztalyId.Value));
}
return parameters;
}
/// <param name="parameters">Paraméterek listája.</param>
/// <param name="osztalycsoportAlias">Egy OsztalyCsoport subselect-re használt alias!</param>
/// <param name="tanuloAlias">T_TANULO_OSSZES -re használt alias, ha van.</param>
/// <param name="felhasznaloAlias">T_FELHASZNALO_OSSZES -re használt alias, ha van.</param>
internal StringBuilder ToWhereClause(IList<CommandParameter> parameters, string osztalycsoportAlias, string tanuloAlias = "T_TANULO_OSSZES", string felhasznaloAlias = "T_FELHASZNALO_OSSZES", string tanuloTanugyiadatokAlias = "tta")
{
StringBuilder whereClause = new StringBuilder();
if (FeladatKategoriaId.IsEntityId())
{
parameters.Add(new CommandParameter(nameof(FeladatKategoriaId), FeladatKategoriaId.Value));
}
else
{
parameters.Add(new CommandParameter(nameof(FeladatKategoriaId), DBNull.Value));
}
if (!string.IsNullOrWhiteSpace(Nev))
{
whereClause.Append($" AND LOWER({felhasznaloAlias}.C_NYOMTATASINEV) LIKE '%' + @{nameof(Nev)} + '%'");
parameters.Add(new CommandParameter(nameof(Nev), Nev.ToLowerInvariant()));
}
if (NincsNem.HasValue && NincsNem.Value)
{
whereClause.Append($@" AND {felhasznaloAlias}.C_NEME = :pNem");
parameters.Add(new CommandParameter("pNem", NemEnum.NA));
}
else if (Neme.HasValue)
{
whereClause.Append($@" AND {felhasznaloAlias}.C_NEME = :pNem");
parameters.Add(new CommandParameter("pNem", Neme));
}
if (SzuletesiIdoKezdet.HasValue)
{
whereClause.Append($@" AND {felhasznaloAlias}.C_SZULETESIDATUM >= :pSzuletesiDatumKezdet");
parameters.Add(new CommandParameter("pSzuletesiDatumKezdet", SzuletesiIdoKezdet));
}
if (SzuletesiIdoVeg.HasValue)
{
whereClause.Append($@" AND {felhasznaloAlias}.C_SZULETESIDATUM <= :pSzuletesiIdoVeg");
parameters.Add(new CommandParameter("pSzuletesiIdoVeg", SzuletesiIdoVeg));
}
if (!string.IsNullOrWhiteSpace(AnyjaNeve))
{
whereClause.Append($" AND LOWER({felhasznaloAlias}.C_ANYJANEVE) LIKE '%' + @{nameof(AnyjaNeve)} + '%'");
parameters.Add(new CommandParameter(nameof(AnyjaNeve), AnyjaNeve.ToLowerInvariant()));
}
if (!string.IsNullOrWhiteSpace(SzuletesiHely))
{
whereClause.Append($" AND LOWER({felhasznaloAlias}.C_SZULETESIHELY) LIKE '%' + @{nameof(SzuletesiHely)} + '%'");
parameters.Add(new CommandParameter(nameof(SzuletesiHely), SzuletesiHely.ToLowerInvariant()));
}
if (!string.IsNullOrWhiteSpace(OktatasiAzonosito))
{
whereClause.Append($" AND LOWER({felhasznaloAlias}.C_OKTATASIAZONOSITO) LIKE '' + @{nameof(OktatasiAzonosito)} + '%'");
parameters.Add(new CommandParameter(nameof(OktatasiAzonosito), OktatasiAzonosito.ToLowerInvariant()));
}
if (OsztalyId.HasValue)
{
whereClause.Append($@" AND {osztalycsoportAlias}.ID = :pOsztalyID");
parameters.Add(new CommandParameter("pOsztalyID", OsztalyId.Value));
}
if (Vegzos.HasValue)
{
whereClause.Append($@" AND {osztalycsoportAlias}.C_VEGZOSEVFOLYAM = :pVegzos");
string VegzosValue = Vegzos.Value ? "T" : "F";
parameters.Add(new CommandParameter("pVegzos", VegzosValue));
}
if (SNI.HasValue)
{
whereClause.Append($@" AND {tanuloAlias}.C_SAJATOSNEVELESU = :pSNI");
string SNIValue = SNI.Value ? "T" : "F";
parameters.Add(new CommandParameter("pSNI", SNIValue));
}
if (BTM.HasValue)
{
whereClause.Append($@" AND {tanuloAlias}.C_BTMPROBLEMAS = :pBTM");
string BTMValue = BTM.Value ? "T" : "F";
parameters.Add(new CommandParameter("pBTM", BTMValue));
}
if (FeladatellatasiHelyId.HasValue)
{
whereClause.Append($@" AND {osztalycsoportAlias}.C_FELADATELLATASIHELYID = :pFelHelyID");
parameters.Add(new CommandParameter("pFelHelyID", FeladatellatasiHelyId.Value));
}
if (HatranyosHelyzetId.HasValue)
{
whereClause.Append($@" AND {tanuloAlias}.C_HATRANYOSHELYZETU = :pHatranyosHelyzetID");
parameters.Add(new CommandParameter("pHatranyosHelyzetID", HatranyosHelyzetId.Value));
}
if (EvfolyamId.HasValue)
{
whereClause.Append($@" AND {osztalycsoportAlias}.C_EVFOLYAMTIPUSA = :pEvfolyamID");
parameters.Add(new CommandParameter("pEvfolyamID", EvfolyamId.Value));
}
if (OsztalybaSoroltTantervNelkul.HasValue && OsztalybaSoroltTantervNelkul.Value)
{
whereClause.Append($@" AND {tanuloAlias}.C_TANTERVID IS NULL AND {osztalycsoportAlias}.ID IS NOT NULL");
}
if (Aktiv)
{
whereClause.Append($@" AND {osztalycsoportAlias}.ID IS NOT NULL");
}
if (FeladatKategoriaId.IsEntityId())
{
whereClause.Append($" AND {osztalycsoportAlias}.C_FELADATKATEGORIAID = @{nameof(FeladatKategoriaId)}");
}
if (SearchMuveszetiAgId.HasValue)
{
whereClause.Append($" AND {osztalycsoportAlias}.C_MUVESZETIAGID = @{nameof(SearchMuveszetiAgId)}");
parameters.Add(new CommandParameter(nameof(SearchMuveszetiAgId), SearchMuveszetiAgId.Value));
}
if (TanterviJellegSearchId.HasValue)
{
whereClause.Append($" AND {tanuloTanugyiadatokAlias}.C_TANTERVIJELLEGID = @{nameof(TanterviJellegSearchId)}");
parameters.Add(new CommandParameter(nameof(TanterviJellegSearchId), TanterviJellegSearchId.Value));
}
return whereClause;
}
}
}