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; } /// /// "Közös" paraméterek kifejtése /// /// internal List ExtractParameters(bool IsFromSzervezet = false) { var parameters = new List(); 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éterek listája. /// Egy OsztalyCsoport subselect-re használt alias! /// T_TANULO_OSSZES -re használt alias, ha van. /// T_FELHASZNALO_OSSZES -re használt alias, ha van. internal StringBuilder ToWhereClause(IList 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; } } }