using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Kreta.Core; using Kreta.Core.Logic; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.DataAccessObjects.Csoport; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.ParameterClasses; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Framework.Util; using SDA.DataProvider; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { internal class CsoportDal : DataAccessBase, ICsoportDal { public CsoportDal(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } public CsoportDal(DalHandler handler) : base(handler) { } public List GetNemTanoraiCeluCsoportTipusList() { using (var command = new SDACommand()) { var result = new List(); command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetNemTanoraiCeluCsoportTipusList"; var ds = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } foreach (var item in ds.Tables[0].ToDaoList()) { result.Add(item); } return result; } } public DataSet GetCsoportokForDDL(OktNevelesiKategoriaEnum? feladatKategoria = null, int? tanarId = null) { var commandText = @"Select DISTINCT T_OSZTALYCSOPORT_OSSZES.ID, T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA Evfolyam, T_OSZTALYCSOPORT_OSSZES.C_NEV Nev FROM T_OSZTALYCSOPORT_OSSZES INNER JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID AND T_CSOPORT_OSSZES.C_TIPUSA<>1035 INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID " + (tanarId.HasValue ? @" INNER JOIN T_FOGLALKOZAS_OSSZES ON T_OSZTALYCSOPORT_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID " : " ") + @"WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_TANEV_OSSZES.TOROLT = 'F' and (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @OktNevKatTipus OR @OktNevKatTipus IS NULL) AND (T_TANEV_OSSZES.C_AKTIV = 'T' or T_TANEV_OSSZES.C_KOVETKEZO = 'T') " + (tanarId.HasValue ? @" AND T_CSOPORT_OSSZES.C_CSOPORTVEZETOID = :pTanarID " : " "); var param = new List(); if (feladatKategoria.HasValue) { param.Add(new CommandParameter("OktNevKatTipus", (int)feladatKategoria)); } else { param.Add(new CommandParameter("OktNevKatTipus", DBNull.Value)); } if (tanarId.HasValue) { param.Add(new CommandParameter("pTanarID", tanarId.Value)); } var ds = this.GetData(commandText, param); return ds; } public DataSet GetNapkozisCsoportokForDDL(int? tanarId = null) { var commandText = @"Select DISTINCT T_OSZTALYCSOPORT_OSSZES.ID, T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA Evfolyam, T_OSZTALYCSOPORT_OSSZES.C_NEV Nev FROM T_OSZTALYCSOPORT_OSSZES INNER JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID AND T_CSOPORT_OSSZES.C_TIPUSA=1035 INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID" + (tanarId.HasValue ? @" INNER JOIN T_FOGLALKOZAS_OSSZES ON T_OSZTALY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID " : " ") + @"WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_TANEV_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @OktNevKatTipus AND (T_TANEV_OSSZES.C_AKTIV = 'T' or T_TANEV_OSSZES.C_KOVETKEZO = 'T')" + (tanarId.HasValue ? @" AND T_FOGLALKOZAS_OSSZES.C_TANARID = :pTanarID " : " "); var param = new List { new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas) }; if (tanarId.HasValue) { param.Add(new CommandParameter("pTanarID", tanarId.Value)); } var ds = this.GetData(commandText, param); return ds; } public DataSet GetSzakmaiGyCsoportokForDDL(int? tanarId = null) { var commandText = @"Select DISTINCT T_OSZTALYCSOPORT_OSSZES.ID, T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA Evfolyam, T_OSZTALYCSOPORT_OSSZES.C_NEV Nev FROM T_OSZTALYCSOPORT_OSSZES INNER JOIN T_CSOPORT_OSSZES ON T_CSOPORT_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID AND T_CSOPORT_OSSZES.C_TIPUSA=1073 INNER JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID " + (tanarId.HasValue ? @" INNER JOIN T_FOGLALKOZAS_OSSZES ON T_OSZTALY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID " : " ") + @"WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_TANEV_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @OktNevKatTipus AND (T_TANEV_OSSZES.C_AKTIV = 'T' or T_TANEV_OSSZES.C_KOVETKEZO = 'T')" + (tanarId.HasValue ? @" AND T_FOGLALKOZAS_OSSZES.C_TANARID = :pTanarID " : " "); var param = new List { new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas) }; if (tanarId.HasValue) { param.Add(new CommandParameter("pTanarID", tanarId.Value)); } var ds = this.GetData(commandText, param); return ds; } public DataSet GetTanoranKivuliCsoportokForDDL(int tanevId, int intezmenyId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetTanoranKivuliCsoportokForDDL"; command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pIntezmenyId", intezmenyId); command.Parameters.Add("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = command; sdaDataAdapter.Fill(dataSet); } return dataSet; } } public int GetCsoportAktualisLetszam(int csopId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetCsoportAktualisLetszam"; command.Parameters.Add("pCsoportId", csopId); return (int)command.ExecuteScalar(); } } public DataSet GetOsztalybontasosCsoportok(int osztalyId, int tanevId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetOsztalybontasosCsoportok"; command.Parameters.Add("pOsztalyID", osztalyId); command.Parameters.Add("pTanevId", tanevId); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = command; sdaDataAdapter.Fill(dataSet); } return dataSet; } } /// /// If it is empty, it does not examine whether the student is in OsztalyCsoport /// /// TODO(@DevKornél): intezmenyAzonosito string concat-al foglalkozni kell, url escape minimum /// INFO @DevKornel: Mobil használja public DataSet GetOsztalyCsoportTanulok(int osztalyCsoportId, DateTime? datum, string intezmenyAzonosito, DateTime? tanevElsoNapja = null, bool? isGroupedByKilepesDatum = false) { var paramList = new List { new CommandParameter(nameof(osztalyCsoportId), osztalyCsoportId) }; bool kovetkezoTanev = false; if (tanevElsoNapja.HasValue) { kovetkezoTanev = (datum ?? DateTime.Now) < tanevElsoNapja.Value; paramList.Add(new CommandParameter(nameof(tanevElsoNapja), tanevElsoNapja)); } paramList.Add(new CommandParameter(nameof(kovetkezoTanev), kovetkezoTanev.ToBit())); if (datum.HasValue) { paramList.Add(new CommandParameter(nameof(datum), datum)); } /*TODO:Tobb Osztaly. csak a mobil kedvéért van benne tanügy*//*OM-1613*/ var commandText = new StringBuilder($@" SELECT T_TANULOCSOPORT_OSSZES.ID, TanuloId, C_BELEPESDATUM BelepesDatum, T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM KilepesDatum, TanuloNev + ' (' + REPLACE(CONVERT(nvarchar(50), ISNULL(C_SZULETESIDATUM,''),102),'.','-') + ')' AS TanuloNev ,TanuloNevElotagNelkul ,TanuloNev as TanuloNyomtatasiNev ,OCSId as OsztalyCsoportId ,OsztalyCsoportNev as OsztalyCsoportNev ,ISNULL(C_ANYJANEVE,'') as TanuloAnyjaNev ,C_SZULETESIDATUM as TanuloSzuletesiDatum ,Tanulok.C_JOGVISZONYATSZUNETELTETO as IsJogviszonySzunetelteto ,Tanulok.C_SZAKMAIGYAKORLATON as IsSzakmaiGyakorlatonLevo ,Tanulok.C_MAGANTANULO AS IsMaganTanulo ,Tanulok.C_MAGANTANULOSAGKEZDETE AS MaganTanulosagKezdetDatuma ,TanuloOsztalyString.Osztalynev AS TanuloOsztalyai ,Tanulok.C_DUALISKEPZOHELYNEVE AS DualisKepzohelyNeve ,Tanulok.C_DUALISKEPZOHELYADOSZAMA AS DualisKepzohelyAdoszama ,cs.C_SZERVEZETID AS CsoportSzervezetId FROM (SELECT MAX(tcs.C_BELEPESDATUM) AS BelepesDatum ,TCS.C_OSZTALYCSOPORTID OCSId ,ocs.C_NEV OsztalyCsoportNev ,tcs.C_TANULOID AS TanuloId ,f.C_NYOMTATASINEV AS TanuloNev ,IIF(f.C_NEVSORREND = 'T', f.C_UTONEV + ' ' + f.C_VEZETEKNEV, f.C_VEZETEKNEV + ' ' + f.C_UTONEV) AS TanuloNevElotagNelkul ,f.C_SZULETESIDATUM ,f.C_ANYJANEVE ,tanuloTanugyiAdatok.C_JOGVISZONYATSZUNETELTETO ,tanuloTanugyiAdatok.C_SZAKMAIGYAKORLATON ,tanuloTanugyiAdatok.C_MAGANTANULO ,tanuloTanugyiAdatok.C_MAGANTANULOSAGKEZDETE ,tanuloTanugyiAdatok.C_DUALISKEPZOHELYNEVE ,tanuloTanugyiAdatok.C_DUALISKEPZOHELYADOSZAMA ,ocs.C_FELADATKATEGORIAID AS OsztalyCsoportFeladatKategoriaId FROM T_TANULOCSOPORT_OSSZES tcs JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F' JOIN T_TANULO_OSSZES t ON t.ID = f.ID AND t.TOROLT = 'F' " + (datum.HasValue && !kovetkezoTanev ? "" : " LEFT") + $" JOIN [KR_{intezmenyAzonosito}_Schema].[fnGetOsztalyCsoportTanuloinakTanugyiAdatai](@{nameof(osztalyCsoportId)}, " + (!kovetkezoTanev ? datum.HasValue ? $"@{nameof(datum)}" : "default" : $"@{nameof(tanevElsoNapja)}") + $@") as tanuloTanugyiAdatok ON tanuloTanugyiAdatok.TanuloId = f.ID WHERE tcs.C_OSZTALYCSOPORTID = @{nameof(osztalyCsoportId)} AND tcs.C_BELEPESDATUM IS NOT NULL AND tcs.TOROLT = 'F'"); if (datum.HasValue && !kovetkezoTanev) { commandText.Append($@" AND (tcs.C_KILEPESDATUM IS NULL or tcs.C_KILEPESDATUM > @{nameof(datum)}) AND tcs.C_BELEPESDATUM <= @{nameof(datum)}"); } commandText.Append(@" GROUP BY "); commandText.Append((isGroupedByKilepesDatum == true ? @"tcs.C_KILEPESDATUM," : string.Empty) + $@"tcs.C_TANULOID,f.C_NYOMTATASINEV, f.C_VEZETEKNEV, f.C_UTONEV, f.C_NEVSORREND, TCS.C_OSZTALYCSOPORTID,f.C_SZULETESIDATUM,ocs.C_NEV,f.C_ANYJANEVE,tanuloTanugyiAdatok.C_JOGVISZONYATSZUNETELTETO,tanuloTanugyiAdatok.C_SZAKMAIGYAKORLATON,tanuloTanugyiAdatok.C_MAGANTANULO,tanuloTanugyiAdatok.C_MAGANTANULOSAGKEZDETE,ocs.C_FELADATKATEGORIAID,tanuloTanugyiAdatok.C_DUALISKEPZOHELYNEVE,tanuloTanugyiAdatok.C_DUALISKEPZOHELYADOSZAMA) Tanulok INNER JOIN T_TANULOCSOPORT_OSSZES ON Tanulok.OCSId = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND Tanulok.TanuloId = T_TANULOCSOPORT_OSSZES.C_TANULOID AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM = Tanulok.BelepesDatum {(datum.HasValue ? "AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM > @datum)" : string.Empty)} LEFT JOIN T_CSOPORT_OSSZES cs ON cs.Id = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND cs.TOROLT = 'F' CROSS APPLY fnGetTanuloOsztalyString(TanuloId, " + (datum.HasValue ? $"@{nameof(datum)}" : "default") + $@", Tanulok.OsztalyCsoportFeladatKategoriaId, default, @{nameof(kovetkezoTanev)}, NULL) TanuloOsztalyString ORDER BY TanuloNevElotagNelkul,C_BELEPESDATUM"); return GetData(commandText.ToString(), paramList, booleanColumns: "IsJogviszonySzunetelteto,IsSzakmaiGyakorlatonLevo,IsMaganTanulo"); } public DataSet GetOsztalyCsoportTanulokEsFelmenteseik(int osztalyCsoportId, DateTime? datum, int? tanuloId, int? tantargyId, string intezmenyAzonosito) { var paramList = new List { new CommandParameter(nameof(osztalyCsoportId), osztalyCsoportId), }; if (datum.HasValue) { paramList.Add(new CommandParameter(nameof(datum), datum)); } var commandText = new StringBuilder($@" SELECT T_TANULOCSOPORT.ID ,TanuloId ,TanuloNev as TanuloNyomtatasiNev ,ISNULL(C_ANYJANEVE,'') as TanuloAnyjaNev ,C_SZULETESIDATUM as TanuloSzuletesiDatum ,Tanulok.FelmentesId as FelmentesId ,Tanulok.FelmentesKezdeteDatum ,Tanulok.FelmentesVegeDatum ,Tanulok.C_JOGVISZONYATSZUNETELTETO as IsJogviszonySzunetelteto ,Tanulok.C_SZAKMAIGYAKORLATON as IsSzakmaiGyakorlatonLevo ,Tanulok.C_ERTEKELESMENTESITES AS IsErtekelesMentesseg ,Tanulok.C_SZOVEGESENERTEKELHETO AS IsSzovegesenErtekelheto ,Tanulok.C_ORAMENTESITES AS IsOraMentesites ,Tanulok.C_TANTARGYID AS TantargyId ,Tanulok.C_MAGANTANULO AS IsMaganTanulo ,Tanulok.C_MAGANTANULOSAGKEZDETE AS MaganTanulosagKezdetDatuma ,Tanulok.C_MAGANTANULOSAGVEGE AS MaganTanulosagVegeDatuma ,OsztalyCsoportNev as OsztalyCsoportNev ,Tanulok.C_MENTESSEGOKA AS MentessegOka FROM (SELECT MAX(tcs.C_BELEPESDATUM) AS BelepesDatum ,TCS.C_OSZTALYCSOPORTID OCSId ,tcs.C_TANULOID AS TanuloId ,f.C_NYOMTATASINEV AS TanuloNev ,f.C_SZULETESIDATUM ,f.C_ANYJANEVE ,tanuloTanugyiAdatok.C_JOGVISZONYATSZUNETELTETO ,tanuloTanugyiAdatok.C_SZAKMAIGYAKORLATON ,tanuloTanugyiAdatok.C_MAGANTANULO ,tanuloTanugyiAdatok.C_MAGANTANULOSAGKEZDETE ,tanuloTanugyiAdatok.C_MAGANTANULOSAGVEGE ,ocs.C_NEV OsztalyCsoportNev ,ocs.C_FELADATKATEGORIAID AS OsztalyCsoportFeladatKategoriaId ,tm.ID AS FelmentesId ,tm.C_KEZDETE AS FelmentesKezdeteDatum ,tm.C_VEGE AS FelmentesVegeDatum ,tm.C_ERTEKELESMENTESITES ,tm.C_SZOVEGESENERTEKELHETO ,tm.C_ORAMENTESITES ,tm.C_TANTARGYID ,tm.C_MENTESSEGOKA FROM T_TANULOCSOPORT tcs JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID JOIN T_FELHASZNALO f ON f.ID = tcs.C_TANULOID JOIN [KR_{intezmenyAzonosito}_Schema].[fnGetOsztalyCsoportTanuloinakTanugyiAdatai](@{nameof(osztalyCsoportId)}, @{nameof(datum)}) as tanuloTanugyiAdatok ON tanuloTanugyiAdatok.TanuloId = f.ID LEFT JOIN T_TANULOMENTESSEG tm ON tm.C_TANULOID = tcs.C_TANULOID AND(tm.C_KEZDETE IS NULL OR tm.C_KEZDETE <= @{nameof(datum)}) AND(tm.C_VEGE IS NULL OR tm.C_VEGE >= @{nameof(datum)})"); if (tantargyId.HasValue) { commandText.Append($@" AND tm.C_TANTARGYID = {tantargyId.Value}"); } commandText.Append($@" WHERE tcs.C_OSZTALYCSOPORTID = @{nameof(osztalyCsoportId)} AND tcs.C_BELEPESDATUM IS NOT NULL AND (tcs.C_KILEPESDATUM IS NULL or tcs.C_KILEPESDATUM > @{nameof(datum)}) AND tcs.C_BELEPESDATUM <= @{nameof(datum)}"); if (tanuloId.HasValue) { commandText.Append($@" AND tcs.C_TANULOID = {tanuloId.Value}"); } commandText.Append($@" GROUP BY tcs.C_TANULOID,f.C_NYOMTATASINEV,f.C_VEZETEKNEV,f.C_UTONEV,f.C_NEVSORREND,TCS.C_OSZTALYCSOPORTID,f.C_SZULETESIDATUM,ocs.C_NEV,f.C_ANYJANEVE,tanuloTanugyiAdatok.C_JOGVISZONYATSZUNETELTETO,tanuloTanugyiAdatok.C_SZAKMAIGYAKORLATON,tanuloTanugyiAdatok.C_MAGANTANULO,tanuloTanugyiAdatok.C_MAGANTANULOSAGKEZDETE,tanuloTanugyiAdatok.C_MAGANTANULOSAGVEGE,ocs.C_FELADATKATEGORIAID,tm.ID,tm.C_KEZDETE,tm.C_VEGE,tm.C_ERTEKELESMENTESITES,tm.C_SZOVEGESENERTEKELHETO,tm.C_ORAMENTESITES,tm.C_TANTARGYID,tm.C_MENTESSEGOKA ) Tanulok INNER JOIN T_TANULOCSOPORT ON Tanulok.OCSId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID AND Tanulok.TanuloId = T_TANULOCSOPORT.C_TANULOID AND T_TANULOCSOPORT.C_BELEPESDATUM = Tanulok.BelepesDatum AND (T_TANULOCSOPORT.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT.C_KILEPESDATUM > @{nameof(datum)}) ORDER BY TanuloNev,C_BELEPESDATUM"); return GetData(commandText.ToString(), paramList, booleanColumns: "IsJogviszonySzunetelteto,IsSzakmaiGyakorlatonLevo,IsMaganTanulo,IsErtekelesMentesseg,IsSzovegesenErtekelheto,IsOraMentesites"); } public DataSet GetTanuloSorolasData(int tanuloId, int osztalyCsoportId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetTanuloSorolasData"; command.Parameters.Add("pTanuloId", tanuloId); command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = command; sdaDataAdapter.Fill(dataSet); } return dataSet; } } public DataSet CsoportKereses(int tanevId, int intezmenyId, CsoportSearchPco pco) { using (var sdaCommand = new SDACommand()) { sdaCommand.Connection = UserContext.Instance.SDAConnection; sdaCommand.Transaction = UserContext.Instance.SDATransaction; sdaCommand.CommandType = CommandType.StoredProcedure; sdaCommand.CommandText = pco.IsFromSzervezet ? "uspCsoportKeresesForSzervezet" : "uspCsoportKereses"; SetParameters(); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = sdaCommand; sdaDataAdapter.Fill(dataSet); } SetDNAME(dataSet.Tables[0], "EvfolyamTipusaId,CsopTip,MuveszetiAgId"); SetBoolFields(dataSet.Tables[0], "Vegzos"); return dataSet; void SetParameters() { sdaCommand.Parameters.Add("pTanevId", tanevId); sdaCommand.Parameters.Add("pSearchDate", pco.SearchDate); if (!string.IsNullOrWhiteSpace(pco.CsoportNev)) { sdaCommand.Parameters.Add("pCsoportNev", pco.CsoportNev.ToLowerInvariant()); } if (pco.TeremId.HasValue) { sdaCommand.Parameters.Add("pTeremID", pco.TeremId); } if (pco.NACsoportTipus.HasValue && pco.NACsoportTipus.Value) { sdaCommand.Parameters.Add("pCsopTipID", (int)CsoportTipusEnum.na); } else if (pco.CsoportTipusId.HasValue) { sdaCommand.Parameters.Add("pCsopTipID", pco.CsoportTipusId); } if (pco.CsoportvezetoId.HasValue) { sdaCommand.Parameters.Add("pCsopvezID", pco.CsoportvezetoId); } if (pco.IsFromSzervezet) { sdaCommand.Parameters.Add("pIntezmenyId", intezmenyId); sdaCommand.Parameters.Add("pSzervezetId", pco.SzervezetId); sdaCommand.Parameters.Add("pSzervezetekHalmaza", SDADBType.Int).Value = (int)SzervezetAdatokHalmazaEnum.SzervezetEsAlSzervezetek; if (pco.TanulokszamaTol.HasValue) { sdaCommand.Parameters.Add("pTanulokszamaTol", pco.TanulokszamaTol); } if (pco.TanulokszamaIg.HasValue) { sdaCommand.Parameters.Add("pTanulokszamaIg", pco.TanulokszamaIg); } if (!string.IsNullOrWhiteSpace(pco.SzervezetNeve)) { sdaCommand.Parameters.Add("pSzervezetNev", pco.SzervezetNeve); } if (!string.IsNullOrWhiteSpace(pco.SzervezetAdoszama)) { sdaCommand.Parameters.Add("pSzervezetAdoszam", pco.SzervezetAdoszama); } } else { if (pco.NaEvfolyamTipusa.HasValue && pco.NaEvfolyamTipusa.Value) { sdaCommand.Parameters.Add("pNaEvfolyamTipusa", 1); sdaCommand.Parameters.Add("pEvfolyamID", (int)EvfolyamTipusEnum.na); } else if (pco.EvfolyamId.HasValue) { sdaCommand.Parameters.Add("pEvfolyamID", pco.EvfolyamId); } if (pco.VegzosSearch.HasValue) { if (pco.VegzosSearch == 1) { sdaCommand.Parameters.Add("pVegzosSearch", 1); } else if (pco.VegzosSearch == 0) { sdaCommand.Parameters.Add("pVegzosSearch", 2); } } if (pco.KeresesOsztalyId.HasValue) { sdaCommand.Parameters.Add("pOsztalyID", pco.KeresesOsztalyId); } if (pco.NaploMegnyitasDatum.HasValue) { sdaCommand.Parameters.Add("pNaploNyit", pco.NaploMegnyitasDatum); } if (pco.NaploLezarasDatum.HasValue) { sdaCommand.Parameters.Add("pNaploZar", pco.NaploLezarasDatum); } if (pco.FeladatEllatasiHelyId.HasValue) { sdaCommand.Parameters.Add("pFeladatEllatasiHelyID", pco.FeladatEllatasiHelyId); } if (pco.FeladatKategoriaId.IsEntityId()) { sdaCommand.Parameters.Add("pFeladatKategoriaId", pco.FeladatKategoriaId); } if (pco.SearchMuveszetiAgId.HasValue) { sdaCommand.Parameters.Add("pMuveszetiAgId", pco.SearchMuveszetiAgId); } if (pco.UresCsoport.HasValue) { sdaCommand.Parameters.Add("pUresCsoport", pco.UresCsoport); } } } } } public void SetOsztalyBontasIdToNull(int csoportId, int userId, int tanevId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspSetOsztalyBontasIdToNull"; command.Parameters.Add("pUserid", userId); command.Parameters.Add("pCsoportId", csoportId); command.Parameters.Add("pTanevId", tanevId); command.ExecuteNonQuery(); } DalHelper.Commit(); } public ICsoport Get() { return Csoport.GiveAnInstance(); } public ICsoport Get(int id) { var entity = Csoport.GiveAnInstance(); entity.LoadByID(id); return entity; } public void Delete(ICsoport dto, int intezmenyId, int tanevId, bool updateTanoraEvesSorszam = true) { var entity = dto as Csoport; entity.Importalt = false; if (GetCsoportAktualisLetszam(entity.ID) == 0) { entity.Tanulo.DeleteAll(); } entity.TanevRendje.ToList().ForEach(tr => { tr.OsztalyCsoport.Remove(entity); if (tr.OsztalyCsoport.Count == 0) { tr.Delete(); } }); entity.TanuloEsemeny.ToList().ForEach(te => { te.Tanulo.RemoveAll(); te.OsztalyCsoport.Remove(entity); if (te.OsztalyCsoport.Count == 0) { te.Delete(); } }); entity.Tanmenet.ToList().ForEach(tm => { tm.TanitasiOra.RemoveAll(); tm.Delete(); }); entity.Foglalkozasok.ToList().ForEach(fg => { fg.FoglalkozasAmiTanulo.DeleteAll(); fg.OrarendiOra.RemoveAll(); fg.TanitasiOra.RemoveAll(); fg.Delete(); }); entity.HittanAdatszolgaltatas.RemoveAll(); entity.Hetes.DeleteAll(); entity.DKT_Feladat.DeleteAll(); var oraSorszamozasHalmazDAL = DalHelper.OraSorszamozasHalmaz(); foreach (var osszerendeles in entity.OraSorszamozasHalmazOsszerendeles) { oraSorszamozasHalmazDAL.DeleteOsszerendeles(osszerendeles.ID, intezmenyId, tanevId, updateTanoraEvesSorszam: false); } entity.Delete(); DalHelper.Commit(); } public void Delete(int id, int intezmenyId, int tanevId, bool updateTanoraEvesSorszam = true) { var entity = Csoport.GiveAnInstance(); entity.LoadByID(id); Delete(entity, intezmenyId, tanevId, updateTanoraEvesSorszam); } public void Update(ICsoport dto, bool updateTanoraEvesSorszam = true) { var original = Get(dto.ID); var isOrarendUpdateneeded = (original.VegzosEvfolyam != dto.VegzosEvfolyam || original.Keresztfeleves != dto.Keresztfeleves) && dto.OrarendiOra.Count > 0; var bontasValtozott = original.OsztalyBontasId != dto.OsztalyBontasId; var entity = dto as Csoport; entity.Importalt = false; entity.FullUpdate(); if (isOrarendUpdateneeded) { DalHelper.OrarendiOra().UpdateOrarend(dto.IntezmenyId, dto.TanevId, null, null, null, dto.ID, dto.SzervezetId.IsEntityId()); } if (updateTanoraEvesSorszam && bontasValtozott) { DalHelper.TanitasiOra().UpdateTanitasiOraEvesSorszamTeljesTanev(dto.IntezmenyId, dto.TanevId); } DalHelper.Commit(); } public int Insert(ICsoport dto) { var entity = dto as Csoport; entity.Importalt = false; entity.Insert(); DalHelper.Commit(); return entity.ID; } public DataSet GetCsoportDataSet(int tanevId, int? oktNevelesiKategoriaId = null) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetCsoportDataSet"; command.Parameters.Add("pTanevId", tanevId); if (oktNevelesiKategoriaId.IsEntityId()) { command.Parameters.Add("pOktNevelesiKategoriaId", SDADBType.Int).Value = oktNevelesiKategoriaId; } else { command.Parameters.Add("pOktNevelesiKategoriaId", DBNull.Value); } var dataSet = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(dataSet); } DataTable dataTable = dataSet.Tables[0]; SetDNAME(dataTable, "TipusId"); DataTable result = SortingAndPaging(dataTable, GridParameters); return result.AsDataSet(); } } public bool IsNyariSzakmaiGyakorlatos(int tanevId, int csoportId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspIsNyariSzakmaiGyakorlatos"; command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pCsoportId", csoportId); command.Parameters.Add("pCsoportTipus", (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport); return Convert.ToBoolean(command.ExecuteScalar()); } } public DataSet GetOsszefuggoSzakGyakosCsoportok(int tanevId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetOsszefuggoSzakGyakosCsoportok"; command.Parameters.Add("pOsszefuggoSzakGyakTipus", (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport); command.Parameters.Add("pOktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas); command.Parameters.Add("pTanevId", tanevId); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = command; sdaDataAdapter.Fill(dataSet); } return dataSet; } } public DataSet GetEgyeniCsoportData(int tanuloId, int osztalyId, int selectedTanevId, IEnumerable amiEgyeniCsoportok, bool isKovTanev, DateTime? kovTanevElsoNapja) { using (var sdaCommand = new SDACommand()) { string kovTanevBelepesDatumClause; if (isKovTanev) { kovTanevBelepesDatumClause = $"C_BELEPESDATUM = @{nameof(kovTanevElsoNapja)}"; sdaCommand.Parameters.Add(nameof(kovTanevElsoNapja), SDADBType.DateTime).Value = kovTanevElsoNapja.Value; } else { kovTanevBelepesDatumClause = "C_BELEPESDATUM <= GETDATE()"; } string commandText = $@" SELECT ocs.ID AS Id ,ocs.C_NEV AS Nev ,cs.C_CSOPORTVEZETOID AS CsoportVezetoId FROM ( SELECT ID ,C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE TOROLT = 'F' AND {kovTanevBelepesDatumClause} AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM > GETDATE()) AND C_TANULOID = @pTanuloId AND C_TANEVID = @pTanevID ) as tcs INNER JOIN ( SELECT ID ,C_CSOPORTVEZETOID FROM T_CSOPORT_OSSZES WHERE TOROLT = 'F' AND C_OSZTALYBONTASID = @pOsztalyId AND C_TIPUSA IN (" + string.Join(",", amiEgyeniCsoportok) + @") AND C_ALTANEVID = @pTanevID ) cs ON tcs.C_OSZTALYCSOPORTID = cs.ID INNER JOIN ( SELECT ID ,C_NEV FROM T_OSZTALYCSOPORT_OSSZES WHERE TOROLT = 'F' AND C_TANEVID = @pTanevID ) ocs ON ocs.ID = cs.ID "; sdaCommand.Connection = UserContext.Instance.SDAConnection; sdaCommand.Transaction = UserContext.Instance.SDATransaction; sdaCommand.CommandType = CommandType.Text; sdaCommand.CommandText = commandText; sdaCommand.Parameters.Add("pTanevID", SDADBType.Int).Value = selectedTanevId; sdaCommand.Parameters.Add("pTanuloId", SDADBType.Int).Value = tanuloId; sdaCommand.Parameters.Add("pOsztalyId", SDADBType.Int).Value = osztalyId; var dataSet = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = sdaCommand; adapter.Fill(dataSet); } return dataSet; } } public bool IsEgyeniCsoportNevLetezik(int tanuloId, string csoportNev, int tanevId) { using (var command = new SDA.DataProvider.SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspIsEgyeniCsoportNevLetezik"; command.Parameters.Add("pCsoportNev", csoportNev); command.Parameters.Add("pTanevId", tanevId); return Convert.ToBoolean(command.ExecuteScalar()); } } public void UpdateTTFFoglalkozasTipusByCsoportTipus(int tanevId, int csoportId, int csoportTipusId, bool isBontott, int modifierId) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspUpdateTTFFoglalkozasTipusByCsoportTipus"; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pCsoportTipusId", SDADBType.Int).Value = csoportTipusId; command.Parameters.Add("pIsBontott", SDADBType.Boolean).Value = isBontott; command.Parameters.Add("pCsoportId", SDADBType.Int).Value = csoportId; command.Parameters.Add("pModifierId", SDADBType.Int).Value = modifierId; command.ExecuteNonQuery(); } } public DataSet GetOsztalyIdByCsoportIdAndDatum(int tanevId, int intezmenyId, int csoportId, DateTime datum) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetOsztalyIdByCsoportIdAndDatum"; command.Parameters.Add("pIntezmenyId", intezmenyId); command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pCsoportId", csoportId); command.Parameters.Add("pDatum", datum); command.Parameters.Add("pIsFromSzervezet", false); var dataSet = new DataSet(); using (var sdaDataAdapter = new SDADataAdapter()) { sdaDataAdapter.SelectCommand = command; sdaDataAdapter.Fill(dataSet); } return dataSet; } } public DataSet GetCsoportMunkarendSzama(int csoportId, bool isAktivTanev) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetCsoportTanuloinakMunkarendje"; command.Parameters.Add("pOsztalyCsoportId", csoportId); command.Parameters.Add("pIsAktivTanev", isAktivTanev); var ds = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } return ds; } } public DataSet GetCsoportTanuloiByMunkarend(int osztalycsoportId, bool hasMunkarend, bool isAktivTanev) { using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetCsoportTanuloiByMunkarend"; command.Parameters.Add("pOsztalycsoportId", osztalycsoportId); command.Parameters.Add("pHasMunkarend", hasMunkarend); command.Parameters.Add("pIsAktivTanev", isAktivTanev); var ds = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } return ds; } } } }