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

967 lines
40 KiB
C#

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