using System; using System.Collections.Generic; using System.Data; using System.Text; using Kreta.Core; using Kreta.Core.Logic; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Model.TantargyFelosztas; using Kreta.DataAccessManual.ParameterClasses; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Framework; using Kreta.Framework.Entities; using Kreta.Framework.Util; using SDA.DataProvider; using SDA.Kreta.Entities; namespace Kreta.DataAccessManual { internal class TantargyFelosztasDAL : DataAccessBase, ITantargyFelosztasDal { public TantargyFelosztasDAL(DalHandler handler) : base(handler) { } public TantargyFelosztasDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters) { } //A felosztasID azért kell, mert létező tantárgyfelosztás ellenőrzésénél innen tudjuk, hogy ha létezik ugyanilyen felosztás, az ugyanez-e. public DataSet GetTantargyFelosztasokKereses(int? tanarId = null, int? csoportId = null, List tantargyIds = null, int? targyKatId = null, int? foglalkozasTipusId = null, int? tanevId = null, int? evfolyamId = null, int? feladatKategoriaId = null, int? feladatellatasihelyId = null, int? felosztasId = null, double? oraszam = null, bool? isImportalt = null, bool osztalybontasokkal = false, bool kapcsolodoCsoportokkal = false, List osztalyCsoportIds = null, int? oktatasiNevelesiFeladatId = null, bool isFromSzervezet = false) { var commandText = new StringBuilder(@"SELECT [T_FOGLALKOZAS_OSSZES].ID as ID ,T_TANTARGY_OSSZES.ID TantargyID ,T_TANTARGY_OSSZES.C_NEV as Tantargy ,[C_FOGLALKOZASTIPUSA] as FoglalkozasTipusa ,[C_ORASZAM] as Oraszam ,T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA as EvfolyamTipus ,T_OSZTALYCSOPORT_OSSZES.C_NEV as OsztalyCsoport ,T_OSZTALYCSOPORT_OSSZES.ID as OsztalyCsoportID ,T_TANEV_OSSZES.C_NEV as Tanev ,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV as Tanar ,T_FELHASZNALO_OSSZES.C_SZULETESIDATUM as TanarSzuletesiIdo ,IIF(T_FELHASZNALO_OSSZES.C_NEVSORREND = 'T', T_FELHASZNALO_OSSZES.C_UTONEV + ' ' + T_FELHASZNALO_OSSZES.C_VEZETEKNEV ,T_FELHASZNALO_OSSZES.C_VEZETEKNEV + ' ' + T_FELHASZNALO_OSSZES.C_UTONEV) as TanarElotagNelkul ,T_FOGLALKOZAS_OSSZES.C_IMPORTALT as IsImportalt ,csoport.IsOsztalyBontottCsoport ,csoport.OsztalyBontottCsoportNev ,CASE WHEN osztaly.ID is null THEN 'False' ELSE 'True' END AS IsOsztaly ,C_ISOSSZEVONTORA as OsszevontOra ,C_ISNEMZETISEGI as NemzetisegiOra ,C_MEGBIZASIORASZAM as MegbizasiOraszam ,C_TULORASZAM as TuloraSzam FROM [T_FOGLALKOZAS_OSSZES]"); var parameters = new List(); if (feladatellatasihelyId.HasValue) { commandText.Append(@" inner join T_OSZTALYCSOPORT_OSSZES on (T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID) AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID) left join (select OsztalyCsoport.ID from t_osztaly_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = t_osztaly_OSSZES.ID where T_OSZTALY_OSSZES.TOROLT = 'F') osztaly on osztaly.id = T_OSZTALYCSOPORT_OSSZES.ID left join (select t_csoport_OSSZES.ID,t_Osztalycsoport_OSSZES.C_nev OsztalyBontottCsoportNev, CASE WHEN t_csoport_OSSZES.c_osztalybontasid is null THEN 'False' ELSE 'True' END AS IsOsztalyBontottCsoport from t_csoport_OSSZES inner join t_Osztalycsoport_OSSZES on t_Osztalycsoport_OSSZES.ID = t_csoport_OSSZES.c_osztalybontasid AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID) where t_Osztalycsoport_OSSZES.Torolt = 'F' and t_csoport_OSSZES.Torolt = 'F') csoport on csoport.id = T_OSZTALYCSOPORT_OSSZES.ID"); parameters.Add(new CommandParameter("pFeladatellatasihelyID", feladatellatasihelyId.Value)); } else { commandText.Append(@" inner join T_OSZTALYCSOPORT_OSSZES on T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID left join (select OsztalyCsoport.ID from t_osztaly_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = t_osztaly_OSSZES.ID where T_OSZTALY_OSSZES.TOROLT = 'F') osztaly on osztaly.id = T_OSZTALYCSOPORT_OSSZES.ID left join (select t_csoport_OSSZES.ID,t_Osztalycsoport_OSSZES.C_nev OsztalyBontottCsoportNev, CASE WHEN t_csoport_OSSZES.c_osztalybontasid is null THEN 'False' ELSE 'True' END AS IsOsztalyBontottCsoport from t_csoport_OSSZES inner join t_Osztalycsoport_OSSZES on t_Osztalycsoport_OSSZES.ID = t_csoport_OSSZES.c_osztalybontasid where t_Osztalycsoport_OSSZES.Torolt = 'F' and t_csoport_OSSZES.Torolt = 'F') csoport on csoport.id = T_OSZTALYCSOPORT_OSSZES.ID"); } if (oktatasiNevelesiFeladatId.HasValue) { commandText.Append(@" inner join T_FELADATELLATASIHELY_OSSZES on T_FELADATELLATASIHELY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID"); } commandText.Append(@" inner join T_TANTARGY_OSSZES on T_FOGLALKOZAS_OSSZES.C_TANTARGYID=T_TANTARGY_OSSZES.ID inner join T_TANEV_OSSZES on T_FOGLALKOZAS_OSSZES.C_TANEVID=T_TANEV_OSSZES.id inner join T_FELHASZNALO_OSSZES on T_FOGLALKOZAS_OSSZES.C_TANARID=T_FELHASZNALO_OSSZES.ID WHERE T_FOGLALKOZAS_OSSZES.TOROLT= 'F' AND T_TANTARGY_OSSZES.TOROLT='F' AND T_OSZTALYCSOPORT_OSSZES.TOROLT='F' AND T_TANEV_OSSZES.TOROLT='F' AND T_FELHASZNALO_OSSZES.TOROLT='F'"); if (felosztasId.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.ID <> :pFelosztasID"); parameters.Add(new CommandParameter("pFelosztasID", felosztasId.Value)); } if (tanarId.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_TANARID = :pTanarId"); parameters.Add(new CommandParameter("pTanarId", tanarId.Value)); } if (csoportId.HasValue) { commandText.Append(@" AND (T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID = :pCsoportID"); if (osztalybontasokkal) { // kiválasztott osztályhoz tartozó bontások csoportjai commandText.Append(@" OR T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID IN (SELECT cs.ID FROM T_CSOPORT_OSSZES cs WHERE cs.C_OSZTALYBONTASID = :pCsoportID AND cs.TOROLT = 'F')"); } if (kapcsolodoCsoportokkal) { // minden olyan csoport, ahova legaláb egy tanuló be van sorolva commandText.Append(@" OR T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(:pCsoportID))"); } commandText.Append(")"); parameters.Add(new CommandParameter("pCsoportID", csoportId.Value)); } if (osztalyCsoportIds?.Count > 0) { string osztalyCsoportIdsString = string.Join(",", osztalyCsoportIds); commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID IN (SELECT value FROM STRING_SPLIT(:pOsztalyCsoportIdsString, ','))"); parameters.Add(new CommandParameter("pOsztalyCsoportIdsString", osztalyCsoportIdsString)); } if (tantargyIds?.Count > 0) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_TANTARGYID IN (SELECT value FROM STRING_SPLIT(:pTantargyIds, ','))"); parameters.Add(new CommandParameter("pTantargyIds", SqlLogic.ParseListToParameter(tantargyIds))); } if (oraszam.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_ORASZAM = :pOraszam"); parameters.Add(new CommandParameter("pOraszam", oraszam.Value, SDADBType.Double)); } if (targyKatId.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_TARGYKATEGORIA = :pTargyKategoria"); parameters.Add(new CommandParameter("pTargyKategoria", targyKatId.Value)); } if (foglalkozasTipusId.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_FOGLALKOZASTIPUSA = :pFoglalkozasTipus"); parameters.Add(new CommandParameter("pFoglalkozasTipus", foglalkozasTipusId.Value)); } if (tanevId.IsEntityId()) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_TANEVID = :pTanevID"); parameters.Add(new CommandParameter("pTanevID", tanevId.Value)); } if (evfolyamId.HasValue) { commandText.Append(@" AND T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = :pEvfolyamID"); parameters.Add(new CommandParameter("pEvfolyamID", evfolyamId.Value)); } if (isImportalt.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_IMPORTALT = :pIsImportalt"); parameters.Add(new CommandParameter("pIsImportalt", isImportalt.Value ? "T" : "F")); } if (feladatellatasihelyId.HasValue) { commandText.Append(@" AND T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID"); } if (feladatKategoriaId.IsEntityId()) { commandText.Append(@" AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = :pFeladatKategoriaId"); parameters.Add(new CommandParameter("pFeladatKategoriaId", feladatKategoriaId.Value)); } if (oktatasiNevelesiFeladatId.HasValue) { commandText.Append(@" AND T_FELADATELLATASIHELY_OSSZES.C_OKTATASINEVELESIFELADATTIPUS = :pOktatasiNevelesiFeladatId"); parameters.Add(new CommandParameter("pOktatasiNevelesiFeladatId", oktatasiNevelesiFeladatId.Value)); } if (isFromSzervezet) { commandText.Append(@" AND C_FOGLALKOZASTIPUSA = :pDualisFoglalkozasTipusId"); parameters.Add(new CommandParameter("pDualisFoglalkozasTipusId", (int)FoglalkozasTipusEnum.dualis_foglalkozas)); } else { commandText.Append(@" AND C_FOGLALKOZASTIPUSA <> :pDualisFoglalkozasTipusId"); parameters.Add(new CommandParameter("pDualisFoglalkozasTipusId", (int)FoglalkozasTipusEnum.dualis_foglalkozas)); } DataSet ds = GetData(commandText.ToString(), parameters, "FoglalkozasTipusa,EvfolyamTipus", booleanColumns: "OsszevontOra,NemzetisegiOra"); GetOraszamSUM(ds, commandText.ToString(), parameters); return ds; } public void GetOraszamSUM(DataSet ds, string commandText, List commandParameters) { DataTable dt = ds.Tables[0]; dt.ExtendedProperties["Oraszam_SUM"] = 0; if (dt.Rows.Count > 0) { using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.Text; command.CommandText = $"SELECT SUM(Oraszam) AS Oraszam_SUM FROM ({commandText}) AS query"; foreach (CommandParameter parameter in commandParameters) { command.Parameters.Add(parameter.Name, parameter.Value); } DataTable sumDt = new DataTable(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(sumDt); } if (sumDt.Rows.Count == 1) { dt.ExtendedProperties["Oraszam_SUM"] = sumDt.Rows[0]["Oraszam_SUM"]; } } } } public DataSet GetTTFToExport(int tanevId) { return GetTTFToExport(tanevId, null, null, null, null, null, null, null, null, null, null, false, false, false); } public DataSet GetTTFToExport(int tanevId, int? tanarId, int? csoportId, int? tantargyId, int? targyKatId, int? foglalkozasTipusId, int? feladatKategoriaId, int? feladatellatasiHelyId, int? evfolyamId, double? oraszam, bool? isImportalt, bool osztalybontasokkal, bool kapcsolodoCsoportokkal, bool isFromSzervezet) { var parameters = new List { new CommandParameter("pTanevId", tanevId) }; var commandText = new StringBuilder($@" SELECT Adat.Tantargy Tantargy ,SUM(Adat.Oraszam) Oraszam ,Adat.Osztaly Osztaly ,Adat.Tanar Tanar ,Adat.TanarSzuletesiIdo TanarSzuletesiIdo ,Adat.CsoportNev CsoportNev ,Adat.IsOsszevontOra IsOsszevontOra ,Adat.IsNemzetisegiOra IsNemzetisegiOra ,Adat.MegbizasiOraszam MegbizasiOraszam ,Adat.Tuloraszam Tuloraszam FROM (SELECT tantargy.C_NEV Tantargy ,foglalkozas.C_ORASZAM Oraszam ,CASE WHEN osztaly.ID IS NOT NULL THEN osztaly.OsztalyNev ELSE csoport.OsztalyBontottCsoportNev END Osztaly ,felhasznalo .C_NYOMTATASINEV Tanar ,felhasznalo .C_SZULETESIDATUM TanarSzuletesiIdo ,csoport.CsoportNev CsoportNev ,foglalkozas.C_ISOSSZEVONTORA IsOsszevontOra ,foglalkozas.C_ISNEMZETISEGI IsNemzetisegiOra ,foglalkozas.C_MEGBIZASIORASZAM MegbizasiOraszam ,foglalkozas.C_TULORASZAM Tuloraszam FROM T_FOGLALKOZAS_OSSZES foglalkozas INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = foglalkozas.C_TANTARGYID AND tantargy.TOROLT = 'F' LEFT JOIN (SELECT osztalyCsoport.ID ID ,osztalyCsoport.C_NEV OsztalyNev FROM T_OSZTALY_OSSZES osztaly INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.TOROLT = 'F' AND osztalyCsoport.ID = osztaly.ID WHERE osztaly.TOROLT = 'F' " + (feladatKategoriaId.IsEntityId() ? @" AND osztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus" : string.Empty) + (feladatellatasiHelyId.HasValue ? @" AND osztalyCsoport.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID" : string.Empty) + @" ) osztaly ON osztaly.ID = foglalkozas.C_OSZTALYCSOPORTID LEFT JOIN (SELECT osztalyCsoport.ID ID ,osztalyCsoport.C_NEV CsoportNev ,bontas.C_NEV OsztalyBontottCsoportNev FROM T_CSOPORT_OSSZES csoport INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON osztalyCsoport.ID = csoport.ID AND osztalyCsoport.TOROLT = 'F' " + (feladatKategoriaId.IsEntityId() ? @" AND osztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus" : string.Empty) + (feladatellatasiHelyId.HasValue ? @" AND osztalyCsoport.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID" : string.Empty) + @" LEFT JOIN T_OSZTALYCSOPORT_OSSZES bontas ON bontas.ID = csoport.C_OSZTALYBONTASID " + (feladatKategoriaId.IsEntityId() ? @" AND bontas.C_FELADATKATEGORIAID = @OktNevKatTipus" : string.Empty) + (feladatellatasiHelyId.HasValue ? @" AND bontas.C_FELADATELLATASIHELYID = :pFeladatellatasihelyID" : string.Empty) + @" WHERE csoport.TOROLT = 'F' " + (isFromSzervezet ? "AND csoport.C_TIPUSA = :pDualisKepzesiCsoportId" : "AND csoport.C_TIPUSA <> :pDualisKepzesiCsoportId") + @") csoport ON csoport.ID = foglalkozas.C_OSZTALYCSOPORTID INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON felhasznalo.ID = foglalkozas.C_TANARID AND felhasznalo.TOROLT = 'F' WHERE foglalkozas.C_TANEVID = :pTanevId AND foglalkozas.TOROLT = 'F' " + (csoportId.HasValue ? "AND (foglalkozas.C_OSZTALYCSOPORTID = :pCsoportID" + (osztalybontasokkal ? @" OR foglalkozas.C_OSZTALYCSOPORTID IN (SELECT cs.ID FROM T_CSOPORT_OSSZES cs WHERE cs.C_OSZTALYBONTASID = :pCsoportID AND cs.TOROLT = 'F')" : string.Empty) + (kapcsolodoCsoportokkal ? " OR foglalkozas.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(:pCsoportID))" : string.Empty) + ")" : string.Empty) + (tantargyId.HasValue ? " AND foglalkozas.C_TANTARGYID = :pTantargyId" : string.Empty) + (tanarId.HasValue ? " AND foglalkozas.C_TANARID = :pTanarId" : string.Empty) + (oraszam.HasValue ? " AND foglalkozas.C_ORASZAM = :pOraszam" : string.Empty) + (isFromSzervezet ? " AND foglalkozas.C_FOGLALKOZASTIPUSA = :pDualisFoglalkozasTipusId " : " AND foglalkozas.C_FOGLALKOZASTIPUSA <> :pDualisFoglalkozasTipusId ") + @") Adat GROUP BY Adat.Tantargy ,Adat.Osztaly ,Adat.Tanar ,Adat.TanarSzuletesiIdo ,Adat.CsoportNev ,Adat.IsOsszevontOra ,Adat.IsNemzetisegiOra ,Adat.MegbizasiOraszam ,Adat.Tuloraszam ORDER BY Adat.Tanar ,Adat.TanarSzuletesiIdo"); if (feladatellatasiHelyId.HasValue) { parameters.Add(new CommandParameter("pFeladatellatasihelyID", feladatellatasiHelyId.Value)); } if (csoportId.HasValue) { parameters.Add(new CommandParameter("pCsoportID", csoportId.Value)); } if (tantargyId.HasValue) { parameters.Add(new CommandParameter("pTantargyId", tantargyId.Value)); } if (tanarId.HasValue) { parameters.Add(new CommandParameter("pTanarId", tanarId.Value)); } if (oraszam.HasValue) { parameters.Add(new CommandParameter("pOraszam", oraszam.Value, SDADBType.Double)); } if (feladatKategoriaId.IsEntityId()) { parameters.Add(new CommandParameter("OktNevKatTipus", feladatKategoriaId)); } parameters.Add(new CommandParameter("pDualisKepzesiCsoportId", (int)CsoportTipusEnum.dualis_kepzesi_csoport)); parameters.Add(new CommandParameter("pDualisFoglalkozasTipusId", (int)FoglalkozasTipusEnum.dualis_foglalkozas)); return GetData(commandText.ToString(), parameters); } /// TODO(@DevKornél): schema string concat-al foglalkozni kell, url escape minimum public DataSet GetFormazottTTFExport(int intezmenyId, int tanevId, int formatMode, string azonosito) { var parameters = new List { new CommandParameter("intezmenyId", intezmenyId), new CommandParameter("tanevId", tanevId), new CommandParameter("formatMode", formatMode) ,new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas) }; var ds = new DataSet(); var commandText = $@" SELECT DISTINCT Tanar.C_NYOMTATASINEV + ISNULL(' - ' + Tanar.C_OKTATASIAZONOSITO, '') AS TanarNeve ,MunkakorDictionaries.C_NAME AS Munkakor ,CONCAT( IIF(mk.C_FOGLALKOZTATASTIPUS IS NULL, N'Teljes munkaidős', FoglalkoztatasDictionaries.C_NAME), N'', IIF(mk.C_MUNKAIDOKEDVEZMENYOKA IS NOT NULL AND mk.C_MUNKAIDOKEDVEZMENYOKA <> 6763, N', ' + MunkaidokedvezmenyokaDictionaries.C_NAME, N''), N'', IIF(mk.C_VEZETOIORASZAMOK IS NOT NULL AND mk.C_VEZETOIORASZAMOK <> 6571, ', ' + VezetoiOraszamOkaDictionaries.C_NAME, N''), N'', IIF(mk.C_BESOROLASIFOKOZAT IS NOT NULL AND mk.C_BESOROLASIFOKOZAT <> 3040, ', ' + KepesitesDictionaries.C_NAME, N'') ) AS PedagogusAdatok ,[KR_{azonosito}_Schema].fnGetDokumentumPedagogusOraszam(Tanar.ID, @formatMode) AS PedagogusMunkaideje ,Tantargy.C_NEV AS TantargyNev ,mk.C_MUNKAIDOKEDVEZMENYORASZAM AS PedagogusOrakedvezmenye ,';' + STUFF( (SELECT DISTINCT CAST(TTF0.ID AS nvarchar(max)) + ';' FROM T_FOGLALKOZAS_OSSZES TTF0 WHERE C_INTEZMENYID = @intezmenyId AND TTF0.C_TANARID = Tanar.ID AND TTF0.C_TANTARGYID = Tantargy.ID AND TTF0.C_TANEVID = @tanevId AND TTF0.TOROLT = 'F' FOR XML PATH ('')), 1, 1, '') AS TTFIds FROM T_FELHASZNALO_OSSZES Tanar INNER JOIN T_MUNKAUGYIADATOK_OSSZES mk ON mk.C_ALKALMAZOTTID = Tanar.ID AND mk.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MunkakorDictionaries ON MunkakorDictionaries.ID = mk.C_MUNKAKORTIPUSA AND MunkakorDictionaries.C_TANEVID = @tanevId AND MunkakorDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND MunkakorDictionaries.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FoglalkoztatasDictionaries ON FoglalkoztatasDictionaries.ID = mk.C_FOGLALKOZTATASTIPUS AND FoglalkoztatasDictionaries.C_TANEVID = @tanevId AND FoglalkoztatasDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND FoglalkoztatasDictionaries.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MunkaidokedvezmenyokaDictionaries ON MunkaidokedvezmenyokaDictionaries.ID = mk.C_MUNKAIDOKEDVEZMENYOKA AND MunkaidokedvezmenyokaDictionaries.C_TANEVID = @tanevId AND MunkaidokedvezmenyokaDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND MunkaidokedvezmenyokaDictionaries.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES VezetoiOraszamOkaDictionaries ON VezetoiOraszamOkaDictionaries.ID = mk.C_VEZETOIORASZAMOK AND VezetoiOraszamOkaDictionaries.C_TANEVID = @tanevId AND VezetoiOraszamOkaDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND VezetoiOraszamOkaDictionaries.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES KepesitesDictionaries ON KepesitesDictionaries.ID = mk.C_BESOROLASIFOKOZAT AND KepesitesDictionaries.C_TANEVID = @tanevId AND KepesitesDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND KepesitesDictionaries.TOROLT = 'F' INNER JOIN T_FOGLALKOZAS_OSSZES TTF ON TTF.C_TANARID = Tanar.ID AND TTF.C_TANEVID = Tanar.C_TANEVID AND TTF.C_INTEZMENYID = Tanar.C_INTEZMENYID AND TTF.TOROLT = 'F' INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = TTF.C_TANTARGYID AND Tantargy.C_TANEVID = TTF.C_TANEVID AND Tantargy.C_INTEZMENYID = TTF.C_INTEZMENYID AND Tantargy.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID = TTF.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TTF.C_TANEVID AND OsztalyCsoport.ID = TTF.C_OSZTALYCSOPORTID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus WHERE Tanar.C_TANEVID = @tanevId AND Tanar.C_INTEZMENYID = @intezmenyId AND Tanar.TOROLT = 'F'"; ds.Tables.Add(GetData(commandText, parameters).Tables[0].Copy()); commandText = @" SELECT DISTINCT Tanar.C_NYOMTATASINEV + ISNULL(' - ' + Tanar.C_OKTATASIAZONOSITO, '') AS TanarNeve ,MunkakorDictionaries.C_NAME AS Munakakor ,Tantargy.C_NEV AS TantargyNev ,TTF.C_ORASZAM AS Oraszam ,OsztalyCsoport.C_NEV AS OsztalyCsoportNev FROM T_FELHASZNALO_OSSZES Tanar INNER JOIN T_MUNKAUGYIADATOK_OSSZES MunkaugyiAdatok ON MunkaugyiAdatok.C_ALKALMAZOTTID = Tanar.ID AND MunkaugyiAdatok.C_INTEZMENYID = Tanar.C_INTEZMENYID AND MunkaugyiAdatok.C_TANEVID = Tanar.C_TANEVID AND MunkaugyiAdatok.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES MunkakorDictionaries ON MunkakorDictionaries.ID = MunkaugyiAdatok.C_MUNKAKORTIPUSA AND MunkakorDictionaries.C_INTEZMENYID = Tanar.C_INTEZMENYID AND MunkakorDictionaries.C_TANEVID = Tanar.C_TANEVID AND MunkakorDictionaries.TOROLT = 'F' INNER JOIN T_FOGLALKOZAS_OSSZES TTF ON TTF.C_TANARID = Tanar.ID AND TTF.C_INTEZMENYID = Tanar.C_INTEZMENYID AND TTF.C_TANEVID = Tanar.C_TANEVID AND TTF.TOROLT = 'F' INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = TTF.C_TANTARGYID AND Tantargy.C_INTEZMENYID = TTF.C_INTEZMENYID AND Tantargy.C_TANEVID = TTF.C_TANEVID AND Tantargy.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TTF.C_OSZTALYCSOPORTID AND OsztalyCsoport.C_INTEZMENYID = TTF.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TTF.C_TANEVID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus WHERE Tanar.C_INTEZMENYID = @intezmenyId AND Tanar.C_TANEVID = @tanevId AND Tanar.TOROLT = 'F'"; var ds0 = GetData(commandText, parameters); ds0.Tables[0].TableName = "1"; ds.Tables.Add(ds0.Tables[0].Copy()); commandText = @" SELECT OsztalyCsoport.C_NEV AS OsztalyNev FROM T_OSZTALYCSOPORT_OSSZES OsztalyCsoport INNER JOIN T_OSZTALY_OSSZES o ON o.ID = OsztalyCsoport.ID AND o.TOROLT = 'F' WHERE OsztalyCsoport.C_TANEVID = @tanevId AND OsztalyCsoport.C_INTEZMENYID = @intezmenyId AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus ORDER BY OsztalyCsoport.C_NEV ,OsztalyCsoport.C_EVFOLYAMTIPUSA"; var ds1 = GetData(commandText, parameters); ds1.Tables[0].TableName = "2"; ds.Tables.Add(ds1.Tables[0].Copy()); commandText = @" SELECT Csoport.C_NEV AS CsoportNev ,KapcsolodoOsztaly.C_NEV AS KapcsolodoOsztalyNeve FROM T_OSZTALYCSOPORT_OSSZES Csoport INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = Csoport.ID AND cs.TOROLT = 'F' LEFT JOIN ( SELECT ocs.C_NEV ,ocs.ID FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F' WHERE ocs.C_INTEZMENYID = @intezmenyId AND ocs.C_TANEVID = @tanevId AND ocs.TOROLT = 'F' AND ocs.C_FELADATKATEGORIAID = @OktNevKatTipus) KapcsolodoOsztaly ON KapcsolodoOsztaly.ID = cs.C_OSZTALYBONTASID WHERE Csoport.C_TANEVID = @tanevId AND Csoport.C_INTEZMENYID = @intezmenyId AND Csoport.TOROLT = 'F' AND Csoport.C_FELADATKATEGORIAID = @OktNevKatTipus ORDER BY Csoport.C_NEV ,Csoport.C_EVFOLYAMTIPUSA"; var ds2 = GetData(commandText, parameters); ds2.Tables[0].TableName = "3"; ds.Tables.Add(ds2.Tables[0].Copy()); return ds; } public DataSet GetTanoranKivuliFoglalkozasokToExport(int tanev) { var parameters = new List { new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas) }; var commanText = @"SELECT T_TANTARGY.C_NEV as Tantargy ,[C_ORASZAM] as Oraszam ,CASE WHEN osztaly.ID is not null THEN osztaly.OsztalyNev ELSE csoport.OsztalyBontottCsoportNev END AS Osztaly ,T_FELHASZNALO.C_NYOMTATASINEV as Tanar, csoport.CsoportNev FROM [T_FOGLALKOZAS_OSSZES] inner join T_TANTARGY_OSSZES on T_FOGLALKOZAS.C_TANTARGYID=T_TANTARGY.ID left join (select T_OSZTALYCSOPORT.ID, T_OSZTALYCSOPORT.C_NEV OsztalyNev from t_osztaly_OSSZES inner join T_OSZTALYCSOPORT_OSSZES ON t_osztaly.id = T_OSZTALYCSOPORT.ID AND T_OSZTALYCSOPORT.C_FELADATKATEGORIAID = @OktNevKatTipus ) osztaly on T_FOGLALKOZAS.C_OSZTALYCSOPORTID=osztaly.ID left join (select t_csoport.ID, csoport.c_nev CsoportNev, bontas.C_nev OsztalyBontottCsoportNev from t_csoport_osszes inner join T_OSZTALYCSOPORT_OSSZES csoport ON t_csoport.id = csoport.ID left join t_Osztalycsoport_OSSZES bontas on bontas.ID = t_csoport.c_osztalybontasid) AND bontas.C_FELADATKATEGORIAID = @OktNevKatTipus csoport on csoport.id = T_FOGLALKOZAS.C_OSZTALYCSOPORTID inner join T_FELHASZNALO on T_FOGLALKOZAS.C_TANARID=T_FELHASZNALO.ID WHERE T_FOGLALKOZAS.C_FOGLALKOZASTIPUSA not in (1368,1339)"; return GetData(commanText, parameters); } public void DeleteAllTargyFelosztas(int tanevId) { using (SDACommand command = UserContext.Instance.SDAConnection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("tanevId", tanevId); command.CommandText = "sp_DeleteAllTTF"; command.ExecuteNonQuery(); } DalHelper.Commit(); } public DataSet GetTantargyFelosztasAdatok(int felosztasId) { var parameters = new List() { new CommandParameter("pFelosztasID", felosztasId) }; var commandText = @" SELECT T_FOGLALKOZAS_OSSZES.C_ORASZAM AS Oraszam ,T_FOGLALKOZAS_OSSZES.C_FOGLALKOZASTIPUSA AS FoglalkozasTipusa ,T_TANEV_OSSZES.C_NEV AS Tanev ,T_TANTARGY_OSSZES.C_NEV AS Tantargy ,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS MunkavallaloNev ,T_MUNKAUGYIADATOK_OSSZES.C_MUNKAKORTIPUSA AS MunkakorTipus ,T_MUKODESIHELY_OSSZES.C_NEV AS FeladatellatasiHelyNev ,T_OSZTALYCSOPORT_OSSZES.C_NEV AS OsztalyCsoportNev ,T_FOGLALKOZAS_OSSZES.C_ISOSSZEVONTORA AS OsszevontOra ,T_FOGLALKOZAS_OSSZES.C_ISNEMZETISEGI AS NemzetisegiOra ,T_FOGLALKOZAS_OSSZES.C_MEGBIZASIORASZAM AS MegbizasiOraszam ,T_FOGLALKOZAS_OSSZES.C_TULORASZAM AS TuloraSzam FROM [T_FOGLALKOZAS_OSSZES] INNER JOIN T_FELHASZNALO_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANARID=T_FELHASZNALO_OSSZES.ID AND T_FELHASZNALO_OSSZES.TOROLT = 'F' INNER JOIN T_TANTARGY_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANTARGYID=T_TANTARGY_OSSZES.ID AND T_TANTARGY_OSSZES.TOROLT = 'F' INNER JOIN T_ALKALMAZOTT_OSSZES ON T_FELHASZNALO_OSSZES.ID=T_ALKALMAZOTT_OSSZES.ID AND T_ALKALMAZOTT_OSSZES.TOROLT = 'F' INNER JOIN T_MUNKAUGYIADATOK_OSSZES ON T_MUNKAUGYIADATOK_OSSZES.C_ALKALMAZOTTID = T_ALKALMAZOTT_OSSZES.ID AND T_MUNKAUGYIADATOK_OSSZES.TOROLT = 'F' LEFT JOIN T_FELADATELLATASIHELY_OSSZES ON T_MUNKAUGYIADATOK_OSSZES.C_FELADATELLATASIHELYID=T_FELADATELLATASIHELY_OSSZES.ID AND T_FELADATELLATASIHELY_OSSZES.TOROLT = 'F' LEFT JOIN T_MUKODESIHELY_OSSZES ON T_FELADATELLATASIHELY_OSSZES.C_MUKODESIHELYID = T_MUKODESIHELY_OSSZES.ID AND T_MUKODESIHELY_OSSZES.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' INNER JOIN T_TANEV_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANEVID=T_TANEV_OSSZES.id AND T_TANEV_OSSZES.TOROLT = 'F' WHERE T_FOGLALKOZAS_OSSZES.TOROLT='F' AND T_FOGLALKOZAS_OSSZES.ID = :pFelosztasID"; var ds = GetData(commandText, parameters, booleanColumns: "OsszevontOra,NemzetisegiOra"); return ds; } public DataSet GetTantargyFoglalkozasai(int tantargyId, int tanevId) { List paramList = new List { new CommandParameter("pTantargyID", tantargyId), new CommandParameter("pTanevId", tanevId) }; string CommandText = @" select T_FOGLALKOZAS_OSSZES.ID AS ID, T_FOGLALKOZAS_OSSZES.C_ORASZAM AS Oraszam, T_FOGLALKOZAS_OSSZES.C_FOGLALKOZASTIPUSA AS Tipus, T_FELHASZNALO_OSSZES.C_NYOMTATASINEV AS Tanar, T_OSZTALYCSOPORT_OSSZES.C_NEV AS OsztalyCsoport from T_FOGLALKOZAS_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID INNER JOIN T_FELHASZNALO_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANARID =T_FELHASZNALO_OSSZES.ID WHERE T_FOGLALKOZAS_OSSZES.TOROLT='F' AND T_FOGLALKOZAS_OSSZES.C_TANTARGYID=:pTantargyID AND T_FOGLALKOZAS_OSSZES.C_TANEVID = :pTanevId "; DataSet ds = GetData(CommandText, paramList, "Tipus"); return ds; } public DataSet GetFoglalkozasok(List csoportTipusok, int? tanarId = null) { string csoportTipusList = string.Join(", ", csoportTipusok); var commandText = new StringBuilder(@" SELECT [T_FOGLALKOZAS_OSSZES].ID as ID ,T_TANTARGY_OSSZES.C_NEV as Tantargy ,T_OSZTALYCSOPORT_OSSZES.C_NEV as OsztalyCsoportNev ,CASE WHEN osztaly.ID is not null or (osztaly.ID is null and csoport.C_TIPUSA in (:pCsoportTipusList)) THEN 'T' ELSE 'F' END AS IsOsztalyOrOsztalyJelleguCsoport FROM [T_FOGLALKOZAS_OSSZES] INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID=T_OSZTALYCSOPORT_OSSZES.ID AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @OktNevKatTipus LEFT JOIN (SELECT * FROM t_osztaly_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = t_osztaly_OSSZES.ID AND OsztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus WHERE T_OSZTALY_OSSZES.TOROLT = 'F') osztaly ON osztaly.ID = T_OSZTALYCSOPORT_OSSZES.ID LEFT JOIN (SELECT t_csoport_OSSZES.ID, C_TIPUSA FROM t_csoport_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = t_csoport_OSSZES.ID AND OsztalyCsoport.C_FELADATKATEGORIAID = @OktNevKatTipus ) csoport ON csoport.id = T_OSZTALYCSOPORT_OSSZES.ID INNER JOIN T_TANTARGY_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANTARGYID=T_TANTARGY_OSSZES.ID INNER JOIN T_FELHASZNALO_OSSZES ON T_FOGLALKOZAS_OSSZES.C_TANARID=T_FELHASZNALO_OSSZES.ID WHERE T_FOGLALKOZAS_OSSZES.TOROLT = 'F' AND T_TANTARGY_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @OktNevKatTipus AND T_FELHASZNALO_OSSZES.TOROLT = 'F' "); var parameters = new List { new CommandParameter("pCsoportTipusList", csoportTipusList) ,new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas) }; if (tanarId.HasValue) { commandText.Append(@" AND T_FOGLALKOZAS_OSSZES.C_TANARID = :pTanarId"); parameters.Add(new CommandParameter("pTanarId", tanarId.Value)); } DataSet ds = GetData(commandText.ToString(), parameters); return ds; } public DataSet GetFoglalkozasok(int tanevId, int? tanarId = null, int? osztalyId = null, bool? isOsszefuggoSzakGyak = null, bool filterNincsBeloleOra = false, bool isKapcsolodoCsoportok = false) { var commandText = new StringBuilder($@" SELECT Foglalkozas.ID ID ,Tantargy.C_NEV Tantargy ,OsztalyCsoport.C_NEV OsztalyCsoportNev ,Foglalkozas.C_OSZTALYCSOPORTID AS OsztalyCsoportId ,(CASE WHEN Osztaly.ID IS NOT NULL OR (Osztaly.ID IS NULL AND Csoport.Tipus IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))) THEN 'T' ELSE 'F' END) IsOsztalyOrOsztalyJelleguCsoport ,Foglalkozas.C_ORASZAM AS Oraszam FROM T_FOGLALKOZAS_OSSZES Foglalkozas INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON Foglalkozas.C_OSZTALYCSOPORTID = OsztalyCsoport.ID LEFT JOIN (SELECT T_OSZTALY_OSSZES.* FROM T_OSZTALY_OSSZES INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = T_OSZTALY_OSSZES.ID WHERE T_OSZTALY_OSSZES.TOROLT = 'F') Osztaly ON Osztaly.ID = OsztalyCsoport.ID LEFT JOIN (SELECT Csoport.ID ID ,OsztalyCsoport.C_NEV OsztalyBontottCsoportNev ,Csoport.C_TIPUSA Tipus FROM T_CSOPORT_OSSZES Csoport INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON ( (Csoport.C_OSZTALYBONTASID IS NOT NULL AND OsztalyCsoport.ID = Csoport.C_OSZTALYBONTASID) OR (Csoport.C_OSZTALYBONTASID IS NULL AND Csoport.Id = OsztalyCsoport.ID)) WHERE OsztalyCsoport.Torolt = 'F' AND Csoport.Torolt = 'F') Csoport ON Csoport.ID = OsztalyCsoport.ID INNER JOIN T_FELHASZNALO_OSSZES Felhasznalo ON Felhasznalo.ID = Foglalkozas.C_TANARID INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.ID = Foglalkozas.C_TANTARGYID {(osztalyId.IsEntityId() && isKapcsolodoCsoportok ? "INNER JOIN fnGetKapcsolodoOsztalycsoportok(:pOsztalyId) KapcsOcs ON KapcsOcs.ID = Foglalkozas.C_OSZTALYCSOPORTID" : string.Empty)} WHERE Foglalkozas.TOROLT = 'F' AND OsztalyCsoport.TOROLT = 'F' AND Felhasznalo.C_TANEVID = @pTanevId AND Felhasznalo.TOROLT = 'F' AND Tantargy.TOROLT = 'F' "); var parameters = new List { new CommandParameter("pTanevId", tanevId) }; if (tanarId.IsEntityId()) { commandText.Append(@" AND Foglalkozas.C_TANARID = :pTanarId"); parameters.Add(new CommandParameter("pTanarId", tanarId.Value)); } if (osztalyId.IsEntityId()) { if (!isKapcsolodoCsoportok) { commandText.Append(@" AND Foglalkozas.C_OSZTALYCSOPORTID = :pOsztalyId"); } parameters.Add(new CommandParameter("pOsztalyId", osztalyId.Value)); } if (isOsszefuggoSzakGyak == true) { commandText.Append(@" AND Csoport.Tipus = :pSzakmaiGyakorlatiCsoportTipus"); parameters.Add(new CommandParameter("pSzakmaiGyakorlatiCsoportTipus", (int)CsoportTipusEnum.OsszefuggoSzakmaiGyakorlatiCsoport)); } if (filterNincsBeloleOra) { commandText.Append(@" AND Tantargy.C_ISNINCSBELOLEORA = 'F'"); } DataSet ds = GetData(commandText.ToString(), parameters); return ds; } public int? TantargyFelosztasLetezik(int tanarId, int osztalyCsoportId, int tantargyId, int? ttfId, int tanevId) { using (SDACommand command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; StringBuilder commandText = new StringBuilder(@"SELECT ID FROM T_FOGLALKOZAS_OSSZES WHERE C_TANTARGYID = :pTantargyId AND C_OSZTALYCSOPORTID = :pOsztalyCsoportId AND C_TANARID = :pTanarId AND TOROLT = 'F' AND C_TANEVID = :pTanevId"); if (ttfId.IsEntityId()) { commandText.AppendFormat(" AND ID <> :pTtfId"); command.Parameters.Add("pTtfId", ttfId.Value); } command.Parameters.Add("pTantargyId", tantargyId); command.Parameters.Add("pTanarId", tanarId); command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId); command.Parameters.Add("pTanevId", tanevId); command.CommandText = commandText.ToString(); var result = command.ExecuteScalar(); if (result == null) { return null; } return int.Parse(result.ToString()); } } public DataSet GetFoglalkozasokForDDL(int tanarId, int tanevId) { var pList = new List { new CommandParameter("pTanarId", tanarId), new CommandParameter("pTanevId", tanevId) }; var command = @"SELECT f.ID ,(ocs.C_NEV + ' - ' + t.C_NEV) AS Nev FROM T_FOGLALKOZAS_OSSZES f INNER JOIN T_TANTARGY_OSSZES t on t.ID = f.C_TANTARGYID AND t.TOROLT = 'F' AND t.C_TANEVID = f.C_TANEVID INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID = f.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = f.C_TANEVID AND ocs.TOROLT = 'F' WHERE f.TOROLT = 'F' AND f.C_TANARID = :pTanarId AND f.C_TANEVID = :pTanevId AND NOT EXISTS( SELECT * FROM T_TANMENET_OSSZES tm WHERE tm.TOROLT = 'F' AND tm.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID AND tm.C_TANTARGYID = f.C_TANTARGYID AND tm.C_FELTOLTOID = f.C_TANARID AND tm.C_TANEVID = f.C_TANEVID )"; return GetData(command, pList); } public (int id, bool removeFromOrarendOra) CreateOrUpdateFelosztas(TantargyFelosztasDM dm, int intezmenyId, bool isForceInsert = false) { var letezoTtfId = isForceInsert ? null : TantargyFelosztasLetezik(dm.TanarId, dm.OsztalyCsoportId, dm.TantargyId, dm.Id, dm.TanevId); var foglalkozasDal = DalHelper.Foglalkozas(); var entity = foglalkozasDal.Get() as Foglalkozas; if (letezoTtfId.HasValue) { entity = foglalkozasDal.Get(letezoTtfId.Value) as Foglalkozas; entity.Importalt = false; if (dm.Id != 0 && dm.Id != null) { var deletableEntity = foglalkozasDal.Get(dm.Id.Value); CoreDelete(deletableEntity); } } else { if (dm.Id != 0 && dm.Id != null) { entity = foglalkozasDal.Get((int)dm.Id) as Foglalkozas; entity.Importalt = false; } } if (!dm.FoglalkozasTipusa.HasValue || (entity.ID.IsEntityId() && entity.OsztalyCsoportId != dm.OsztalyCsoportId)) { var foglalkozasTipusa = (int)FoglalkozasTipusEnum.na; var osztalyCsoportDal = DalHelper.OsztalyCsoport(); var csoportTipus = osztalyCsoportDal.GetCsoportTipusByOsztalyCsoportId(dm.OsztalyCsoportId, intezmenyId); if (csoportTipus.HasValue) { var isBontott = osztalyCsoportDal.GetIsOsztalyCsoportBontott(dm.OsztalyCsoportId); var foglalkozasTipus = foglalkozasDal.GetFoglalkozasTipusByOsztalyCsoportTipus(csoportTipus.Value, isBontott); if (foglalkozasTipus.HasValue) { foglalkozasTipusa = foglalkozasTipus.Value; } } dm.FoglalkozasTipusa = foglalkozasTipusa; } var removeFromOrarendOra = false; if (entity.ID.IsEntityId()) { if ((entity.OsztalyCsoportId != dm.OsztalyCsoportId) || (entity.TantargyId != dm.TantargyId) || (entity.TanarId != dm.TanarId)) { removeFromOrarendOra = true; } } entity.Oraszam = dm.Oraszam; entity.OsztalyCsoportId = dm.OsztalyCsoportId; entity.TanevId = dm.TanevId; entity.TantargyId = dm.TantargyId; entity.FoglalkozasTipusa = dm.FoglalkozasTipusa.Value; entity.TanarId = dm.TanarId; entity.IsOsszevontOra = dm.OsszevontOra; entity.IsNemzetisegi = dm.NemzetisegiOra; entity.MegbizasiOraszam = dm.MegbizasiOraszam; entity.TuloraSzam = dm.TuloraSzam; if ((dm.Id == null || dm.Id == 0) && entity.ID <= 0) { entity.Insert(); } var tanar = DalHelper.Alkalmazott().Get(dm.TanarId) as Alkalmazott; entity.Nev = $"{entity.Tantargy.Nev} - {entity.OsztalyCsoport.Nev} - {tanar.NyomtatasiNev}"; entity.OsztalyCsoport.Importalt = false; entity.OsztalyCsoport.Update(); entity.Tantargy.Importalt = false; entity.Tantargy.Update(); entity.FullUpdate(); DalHelper.Commit(); return (entity.ID, removeFromOrarendOra); } public void Delete(IFoglalkozas entity) { CoreDelete(entity); DalHelper.Commit(); } private void CoreDelete(IFoglalkozas entity) { var foglalkozas = entity as Foglalkozas; if (entity.OrarendiOra.Count > 0) { foglalkozas.OrarendiOra.RemoveAll(); } if (entity.TanitasiOra.Count > 0) { foglalkozas.TanitasiOra.RemoveAll(); } if (entity.FoglalkozasAmiTanulo.Count > 0) { foglalkozas.FoglalkozasAmiTanulo.DeleteAll(); } foglalkozas.Importalt = false; foglalkozas.Delete(); } public void TantargyfelosztasVisszamenolegesModositas(int intezmenyId, int tanevId, int felhasznaloId, TantargyFelosztasVisszamenolegesPCO ttf) { using (SDACommand command = UserContext.Instance.SDAConnection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("pIntezmenyId", intezmenyId); command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pUserId", felhasznaloId); command.Parameters.Add("pEredetiTanarId", ttf.EredetiTanarId); command.Parameters.Add("pEredetiTantargyId", ttf.EredetiTantargyId); command.Parameters.Add("pEredetiOsztalyCsoportId", ttf.EredetiOsztalyCsoportId); command.Parameters.Add("pModosultTanarId", ttf.ModosultTanarId); command.Parameters.Add("pModosultTantargyId", ttf.ModosultTantargyId); command.Parameters.Add("pModosultOsztalyCsoportId", ttf.ModosultOsztalyCsoportId); command.CommandText = "sp_UpdateTantargyfelosztasVisszamenoleges"; command.ExecuteNonQuery(); DalHelper.Commit(); } } public DataSet GetEgyszerAdhatoErtekelesekTanatargyfelosztasModositasAlapjan(int intezmenyId, int tanevId, TantargyFelosztasVisszamenolegesPCO ttf) { var ds = new DataSet(); using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetEgyszerAdhatoErtekelesekTantargyfelosztasModositasAlapjan"; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pOldTantargyId", SDADBType.Int).Value = ttf.EredetiTantargyId; command.Parameters.Add("pOldOsztalyCsoportId", SDADBType.Int).Value = ttf.EredetiOsztalyCsoportId; command.Parameters.Add("pNewTantargyId", SDADBType.Int).Value = ttf.ModosultTantargyId; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } } public void UpdateOrarendiOraAfterTantargyfelosztasUpdate(int intezmenyId, int tanevId, int felhasznaloId, TantargyFelosztasVisszamenolegesPCO ttf) { using (SDACommand command = UserContext.Instance.SDAConnection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("pIntezmenyId", intezmenyId); command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pUserId", felhasznaloId); command.Parameters.Add("pEredetiTanarId", ttf.EredetiTanarId); command.Parameters.Add("pEredetiTantargyId", ttf.EredetiTantargyId); command.Parameters.Add("pEredetiOsztalyCsoportId", ttf.EredetiOsztalyCsoportId); command.Parameters.Add("pModosultTanarId", ttf.ModosultTanarId); command.Parameters.Add("pModosultTantargyId", ttf.ModosultTantargyId); command.Parameters.Add("pModosultOsztalyCsoportId", ttf.ModosultOsztalyCsoportId); command.CommandText = "uspUpdateOrarendiOraAfterTantargyfelosztasUpdate"; command.ExecuteNonQuery(); DalHelper.Commit(); } } public void RemoveOrarendiOraTTFRelation(int intezmenyId, int tanevId, int ttfId) { string commandText = @" UPDATE T_ORARENDIORA_OSSZES SET C_FOGLALKOZASID = NULL WHERE C_INTEZMENYID = :pIntezmenyId AND C_TANEVID = :pTanevId AND TOROLT = 'F' AND C_FOGLALKOZASID = :pTTFId "; using (SDACommand command = DAUtil.CreateCommand(commandText)) { command.Parameters.Add("pIntezmenyId", SDADBType.Int).Value = intezmenyId; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pTTFId", SDADBType.Int).Value = ttfId; command.ExecuteNonQuery(); DalHelper.Commit(); } } public DataSet TantargyfelosztasbanValtozoOrarendiOrak(int intezmenyId, int tanevId, TantargyFelosztasVisszamenolegesPCO ttf) { var parameters = new List { new CommandParameter("pIntezmenyId", intezmenyId), new CommandParameter("pTanevId", tanevId), new CommandParameter("pTanarId", ttf.EredetiTanarId), new CommandParameter("pTantargyId", ttf.EredetiTantargyId), new CommandParameter("pOsztalyCsoportId", ttf.EredetiOsztalyCsoportId) }; var commandText = @" SELECT DISTINCT o.ID, hr.C_NAME AS Hetirend, hn.C_NAME AS Nap, o.C_ORASZAM AS Ora, o.C_ORAERVENYESSEGKEZDETE AS ErvenyessegKezdete, o.C_ORAERVENYESSEGVEGE AS ErvenyessegVege FROM T_ORARENDIORA_OSSZES o INNER JOIN T_DICTIONARYITEMBASE_OSSZES hr ON o.C_HETIREND = hr.ID AND hr.TOROLT = 'F' AND hr.C_TANEVID = o.C_TANEVID INNER JOIN T_DICTIONARYITEMBASE_OSSZES hn ON o.C_HETNAPJA = hn.ID AND hn.TOROLT = 'F' AND hn.C_TANEVID = o.C_TANEVID WHERE o.C_INTEZMENYID = :pIntezmenyId AND o.C_TANEVID = :pTanevId AND o.C_TANTARGYID = :pTantargyId AND o.C_OSZTALYCSOPORTID = :pOsztalyCsoportId AND o.C_TANARID = :pTanarId AND o.TOROLT = 'F' "; DataSet ds = GetData(commandText, parameters); return ds; } public void FizikaiTorlesTantargyfelosztas(int intezmenyId, int tanevId, int userId) { using (SDACommand command = UserContext.Instance.SDAConnection.CreateCommand()) { command.CommandType = CommandType.StoredProcedure; command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.Parameters.Add("pIntezmenyId", intezmenyId); command.Parameters.Add("pTanevId", tanevId); command.Parameters.Add("pUserId", userId); command.CommandText = "sp_FizikaiTorlesTantargyfelosztas"; command.ExecuteNonQuery(); DalHelper.Commit(); } } public DataSet GetFoglalkozasById(int TTFId) { var parameters = new List { new CommandParameter("pTTFId", TTFId) }; var commandText = @" SELECT fogl.C_OSZTALYCSOPORTID OsztalyCsoportId ,fogl.C_TANTARGYID TantargyId ,fogl.C_TANARID TanarId FROM T_FOGLALKOZAS_OSSZES fogl WHERE fogl.TOROLT = 'F' AND fogl.ID = :pTTFId "; DataSet ds = GetData(commandText, parameters); return ds; } public DataSet GetFoglalkozasDataById(int TTFId) { var parameters = new List { new CommandParameter("pTTFId", TTFId) }; const string commandText = @" SELECT DISTINCT fogl.C_OSZTALYCSOPORTID OsztalyCsoportId ,ISNULL(cs.C_TIPUSA,1034) CsoportTipusId ,fogl.C_TANTARGYID TantargyId ,fogl.C_ISNEMZETISEGI NemzetisegiOra ,fogl.C_TULORASZAM TuloraSzam FROM T_FOGLALKOZAS_OSSZES fogl LEFT JOIN T_CSOPORT_OSSZES cs on cs.ID = fogl.C_OSZTALYCSOPORTID and cs.TOROLT = 'F' AND cs.C_ALTANEVID = fogl.C_TANEVID INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = fogl.C_OSZTALYCSOPORTID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.C_TANEVID = fogl.C_TANEVID WHERE fogl.TOROLT = 'F' and fogl.C_OSZTALYCSOPORTID IS NOT NULL AND fogl.ID = :pTTFId "; DataSet ds = GetData(commandText, parameters, booleanColumns: "NemzetisegiOra"); return ds; } public DataSet GetTantargyFelosztasKapcsolatai(int TTFId, int tanevId) { var parameters = new List { new CommandParameter("pTTFId", TTFId), new CommandParameter("pTanevId", tanevId) }; const string commandText = @" SELECT ( SELECT COUNT(1) FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = fogl.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F' AND tcs.C_TANEVID =:pTanevId ) AS DiakokSzama, ( SELECT COUNT(1) FROM T_TANITASIORA_OSSZES tno WHERE tno.C_OSZTALYCSOPORTID = fogl.C_OSZTALYCSOPORTID AND tno.C_TANTARGYID = fogl.C_TANTARGYID AND tno.C_TANARID = fogl.C_TANARID AND tno.TOROLT = 'F' AND tno.C_TANEVID =:pTanevId ) AS TanorakSzama, ( SELECT COUNT(1) FROM T_TANULOERTEKELES_OSSZES te WHERE te.C_OSZTALYCSOPORTID = fogl.C_OSZTALYCSOPORTID AND te.C_TANTARGYID = fogl.C_TANTARGYID AND te.C_ERTEKELOID = fogl.C_TANARID AND te.TOROLT = 'F' AND te.C_TANEVID =:pTanevId ) AS ErtekelesekSzama, ( SELECT COUNT(1) FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES tno ON tm.C_TANITASIORAKID = tno.ID AND tno.TOROLT = 'F' AND tno.C_TANEVID = tm.C_TANEVID WHERE tno.C_OSZTALYCSOPORTID = fogl.C_OSZTALYCSOPORTID AND tno.C_TANTARGYID = fogl.C_TANTARGYID AND tno.C_TANARID = fogl.C_TANARID AND tm.TOROLT = 'F' AND tm.C_TANEVID =:pTanevId ) AS MulasztasokSzama FROM T_FOGLALKOZAS_OSSZES fogl WHERE fogl.TOROLT = 'F' AND fogl.ID = :pTTFId AND fogl.C_TANEVID =:pTanevId "; DataSet ds = GetData(commandText, parameters); return ds; } public DataSet GetFoglalkozasokByOsztalyCsoport(int osztalyCsoportId, int tanevId) { var parameters = new List() { new CommandParameter(nameof(osztalyCsoportId), osztalyCsoportId), new CommandParameter(nameof(tanevId), tanevId) }; string commandText = $@" SELECT foglalkozas.ID ,foglalkozas.C_TANARID AS TanarId ,IIF( felhasznalo.C_OKTATASIAZONOSITO IS NULL, LTRIM(felhasznalo.C_NYOMTATASINEV), LTRIM(felhasznalo.C_NYOMTATASINEV) + ' (' + felhasznalo.C_OKTATASIAZONOSITO + ')' ) AS TanarNev ,foglalkozas.C_TANTARGYID AS TantargyId ,tantargy.C_NEV AS TantargyNev FROM T_FOGLALKOZAS_OSSZES foglalkozas INNER JOIN T_TANTARGY_OSSZES tantargy ON foglalkozas.C_TANTARGYID = tantargy.ID AND tantargy.TOROLT = 'F' AND tantargy.C_TANEVID = foglalkozas.C_TANEVID INNER JOIN T_FELHASZNALO_OSSZES felhasznalo ON foglalkozas.C_TANARID = felhasznalo.ID AND felhasznalo.TOROLT = 'F' AND felhasznalo.C_TANEVID = foglalkozas.C_TANEVID WHERE foglalkozas.C_OSZTALYCSOPORTID = @{nameof(osztalyCsoportId)} AND foglalkozas.C_TANEVID = @{nameof(tanevId)} AND foglalkozas.TOROLT = 'F' "; return GetData(commandText, parameters); } public DataSet GetTanarAltalErtekelhetoCsoportok(int tanarId, int? tanevId, int szuperOsztalyfonok, DateTime date, string osztalyGroupName, string csoportGroupName) { var ds = new DataSet(); using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetTanarAltalErtekelhetoCsoportok"; command.Parameters.Add("pTanarId", SDADBType.Int).Value = tanarId; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("pSzuperOsztalyfonok", SDADBType.Int).Value = szuperOsztalyfonok; command.Parameters.Add("pDatum", SDADBType.DateTime).Value = date; command.Parameters.Add("pOsztalyGroup", SDADBType.String).Value = osztalyGroupName; command.Parameters.Add("pCsoportGroup", SDADBType.String).Value = csoportGroupName; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } } public DataSet GetTanarDolgozatTantargyak(int tanarId, int? tanevId, int szuperOsztalyfonok, DateTime date) { var ds = new DataSet(); using (var command = new SDACommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspGetTanarDolgozatTantargyak"; command.Parameters.Add("pTanarId", SDADBType.Int).Value = tanarId; command.Parameters.Add("pTanevId", SDADBType.Int).Value = tanevId; command.Parameters.Add("OktNevKatTipus", SDADBType.Int).Value = (int)OktNevelesiKategoriaEnum.NevelesOktatas; command.Parameters.Add("pSzuperOsztalyfonok", SDADBType.Int).Value = szuperOsztalyfonok; command.Parameters.Add("pDatum", SDADBType.DateTime).Value = date; using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } DataTable dt = SortingAndPaging(ds.Tables[0], GridParameters); return dt.AsDataSet(); } } public int GetTeremByFoglalkozas(int foglalkozasId) { return DalHelper.Foglalkozas().Get(foglalkozasId).OsztalyCsoport.TeremId; } public DataSet ValidateTantargyfelosztasVisszamenolegesModositas(TantargyFelosztasVisszamenolegesPCO ttf) { using (var command = UserContext.Instance.SDAConnection.CreateCommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandType = CommandType.StoredProcedure; command.CommandText = "uspValidateTantargyfelosztasVisszamenolegesModositas"; command.Parameters.Add("pEredetiTanarId", ttf.EredetiTanarId); command.Parameters.Add("pEredetiTantargyId", ttf.EredetiTantargyId); command.Parameters.Add("pEredetiOsztalyCsoportId", ttf.EredetiOsztalyCsoportId); command.Parameters.Add("pModosultTanarId", ttf.ModosultTanarId); command.Parameters.Add("pModosultTantargyId", ttf.ModosultTantargyId); command.Parameters.Add("pModosultOsztalyCsoportId", ttf.ModosultOsztalyCsoportId); var ds = new DataSet(); using (var adapter = new SDADataAdapter()) { adapter.SelectCommand = command; adapter.Fill(ds); } return ds; } } public void HandleTanarValtozasOrarendiOrakon(int foglalkozasId) { using (SDACommand command = UserContext.Instance.SDAConnection.CreateCommand()) { command.Connection = UserContext.Instance.SDAConnection; command.Transaction = UserContext.Instance.SDATransaction; command.CommandText = "UPDATE T_ORARENDIORA SET C_FOGLALKOZASID = NULL WHERE TOROLT = 'F' AND C_FOGLALKOZASID = :pFoglalkozasId"; command.Parameters.Add("pFoglalkozasId", foglalkozasId); command.ExecuteNonQuery(); } DalHelper.Commit(); } } }