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

1426 lines
72 KiB
C#

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<int> 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<int> 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<CommandParameter>();
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<CommandParameter> 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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>() { 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<CommandParameter> paramList = new List<CommandParameter>
{
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<int> 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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter>
{
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<CommandParameter> { 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<CommandParameter> {
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<CommandParameter> { 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<CommandParameter>()
{
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();
}
}
}