This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,476 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.Core;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Util;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class TanmenetDal : DataAccessBase, ITanmenetDal
{
public TanmenetDal(DalHandler handler) : base(handler)
{
}
public TanmenetDal(DalHandler handler, GridParameters parameters) : base(handler, parameters)
{
}
public DataSet GetTemakByTargyEsOsztCsop(int tantargyId = -1, int osztalyCsoportId = -1, int tanarID = -1)
{
var parameters = new List<CommandParameter>
{
new CommandParameter("pTantargyId", tantargyId), new CommandParameter("pOsztalyCsoportId", osztalyCsoportId),new CommandParameter("pTantarId", tanarID)
};
var command = $@"
SELECT
ID ID,
C_TEMA Tema,
C_ORASZAM Sorsz
FROM
T_TANMENET
WHERE
TOROLT = 'F'
{(tantargyId > 0 ? "AND C_TANTARGYID = :pTantargyId " : string.Empty)}
{(osztalyCsoportId > 0 ? "AND C_OSZTALYCSOPORTID = :pOsztalyCsoportId" : string.Empty)}
{(tanarID > 0 ? "AND C_FELTOLTOID = :pTantarId " : string.Empty)}";
var ds = GetData(command, parameters);
return ds;
}
public DataSet GetTanmenetek(TanmenetKeresesePCO pco)
{
var parameters = new List<CommandParameter>();
var whereTanmenet = new StringBuilder();
parameters.Add(new CommandParameter("pAlkalmazottID", pco.AlkalmazottID));
if (pco.OsztalyID.HasValue && pco.OsztalyID.Value > 0)
{
parameters.Add(new CommandParameter("pOsztalyID", pco.OsztalyID));
whereTanmenet.Append(" AND tanmenet.C_OSZTALYCSOPORTID = :pOsztalyID");
}
if (pco.TantargyID.HasValue && pco.TantargyID.Value > 0)
{
parameters.Add(new CommandParameter("pTantargyID", pco.TantargyID));
whereTanmenet.Append(" AND tanmenet.C_TANTARGYID = :pTantargyID");
}
string commandText = $@"
SELECT
CAST(tantargy.ID AS VARCHAR) + CAST(osztalycsoport.ID AS VARCHAR) ID,
tantargy.C_NEV TantargyNev,
osztalycsoport.C_NEV OsztalyCsoportNev,
MAX(szurtTanmenet.C_ORASZAM) OraszamMax,
COUNT(szurtTanmenet.ID) OraszamCount,
szurtTanmenet.C_FELTOLTOID FeltoltoID,
tantargy.ID TantargyID,
osztalycsoport.ID OsztalyCsoportID,
foglalkozas.ID FoglalkozasID
FROM (
SELECT
*
FROM
T_TANMENET tanmenet
WHERE
tanmenet.TOROLT = 'F' AND
tanmenet.C_FELTOLTOID = :pAlkalmazottID
{whereTanmenet}
) szurtTanmenet
LEFT JOIN
T_TANTARGY tantargy ON
tantargy.ID = szurtTanmenet.C_TANTARGYID
LEFT JOIN
T_OSZTALYCSOPORT osztalycsoport ON
osztalycsoport.ID = szurtTanmenet.C_OSZTALYCSOPORTID
LEFT JOIN
T_FOGLALKOZAS foglalkozas ON
foglalkozas.C_TANTARGYID = tantargy.ID AND
foglalkozas.C_OSZTALYCSOPORTID = osztalycsoport.ID AND
foglalkozas.C_TANARID = szurtTanmenet.C_FELTOLTOID
WHERE
foglalkozas.C_TANARID = :pAlkalmazottID
GROUP BY
tantargy.C_NEV,
osztalycsoport.C_NEV,
szurtTanmenet.C_FELTOLTOID,
tantargy.ID,
osztalycsoport.ID,
foglalkozas.ID";
DataSet ds = GetData(commandText, parameters);
return ds;
}
/// INFO @DevKornel: Mobil használja
public DataSet GetTanmenetek(int tantargyId, int osztalyId, int? userId = null, int? foglalkozasId = null, Guid? userIdpUniqueId = null)
{
List<CommandParameter> parameters = new List<CommandParameter>
{
new CommandParameter("pOsztalyId", osztalyId),
new CommandParameter("pTantargyId", tantargyId)
};
StringBuilder command = new StringBuilder(@"
SELECT
t.ID ID,
t.C_ORASZAM Oraszam,
t.C_NEV Nev,
t.C_ROVIDNEV RovidNev,
t.C_TEMA Tema,
t.C_MEGJEGYZES Megjegyzes
FROM T_TANMENET t
INNER JOIN T_FOGLALKOZAS f on t.C_TANTARGYID = f.C_TANTARGYID
AND t.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID");
if (userIdpUniqueId.HasValue)
{
parameters.Add(new CommandParameter("pUserIdpUniqueId", userIdpUniqueId));
command.AppendFormat(@" INNER JOIN T_FELHASZNALO felh on felh.C_IDPEGYEDIAZONOSITO = :pUserIdpUniqueId");
}
command.AppendFormat(@"
WHERE
t.C_TANTARGYID = :pTantargyId
AND t.C_OSZTALYCSOPORTID = :pOsztalyId");
if (userId.HasValue)
{
parameters.Add(new CommandParameter("pFeltoltoId", userId));
command.AppendFormat(@" AND f.C_TANARID = :pFeltoltoId");
command.AppendFormat(@" AND t.C_FELTOLTOID = :pFeltoltoId");
}
if (foglalkozasId.HasValue)
{
parameters.Add(new CommandParameter("pFoglalkozasId", foglalkozasId));
command.AppendFormat(@" AND f.ID = :pFoglalkozasId");
}
if (userIdpUniqueId.HasValue)
{
command.AppendFormat(@" AND felh.ID = t.C_FELTOLTOID");
command.AppendFormat(@" AND felh.ID = f.C_TANARID");
}
return GetData(command.ToString(), parameters);
}
public DataSet GetTantargyTanmenetei(int tantargyId, int tanevId)
{
var parameters = new List<CommandParameter>
{
new CommandParameter("pTantargyID", tantargyId),
new CommandParameter("pTanevId", tanevId)
};
var commandText = @"
SELECT
T_TANMENET_OSSZES.ID ID,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Tanar,
T_OSZTALYCSOPORT_OSSZES.C_NEV OsztalyCsoport,
T_TANMENET_OSSZES.C_ORASZAM Oraszam,
T_TANMENET_OSSZES.C_TEMA Tema
FROM T_TANMENET_OSSZES
INNER JOIN T_FELHASZNALO_OSSZES ON T_TANMENET_OSSZES.C_FELTOLTOID = T_FELHASZNALO_OSSZES.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ON T_TANMENET_OSSZES.C_OSZTALYCSOPORTID = T_OSZTALYCSOPORT_OSSZES.ID
WHERE
T_TANMENET_OSSZES.TOROLT = 'F' AND
T_TANMENET_OSSZES.C_TANTARGYID = :pTantargyID AND
T_TANMENET_OSSZES.C_TANEVID = :pTanevId
";
var ds = GetData(commandText, parameters);
return ds;
}
public DataSet GetOsztalyCsoportTanmenetei(int osztalyCsoportId, int tanevId, OktNevelesiKategoriaEnum? kategoria)
{
var parameters = new List<CommandParameter> {
new CommandParameter("pOsztalyCsoportID", osztalyCsoportId),
new CommandParameter("pTanevId", tanevId)
};
if (kategoria.HasValue)
{
parameters.Add(new CommandParameter(nameof(kategoria), (int)kategoria));
}
else
{
parameters.Add(new CommandParameter(nameof(kategoria), DBNull.Value));
}
string commandText = $@"
SELECT
T_TANMENET_OSSZES.ID ID,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Tanar,
T_TANTARGY_OSSZES.C_NEV Tantargy,
T_TANMENET_OSSZES.C_TEMA Tema,
T_TANMENET_OSSZES.C_ORASZAM Ora
FROM
T_TANMENET_OSSZES
INNER JOIN
T_TANTARGY_OSSZES ON
T_TANTARGY_OSSZES.ID = T_TANMENET_OSSZES.C_TANTARGYID
INNER JOIN
T_FELHASZNALO_OSSZES ON
T_FELHASZNALO_OSSZES.ID = T_TANMENET_OSSZES.C_FELTOLTOID
INNER JOIN
T_OSZTALYCSOPORT_OSSZES ON
T_OSZTALYCSOPORT_OSSZES.ID = T_TANMENET_OSSZES.C_OSZTALYCSOPORTID AND (T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @{nameof(kategoria)} OR @{nameof(kategoria)} IS NULL)
WHERE
T_OSZTALYCSOPORT_OSSZES.ID = :pOsztalyCsoportID AND
T_TANMENET_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_TANEVID = :pTanevId
";
DataSet ds = GetData(commandText, parameters);
return ds;
}
public int? GetTanmenetIdBySorszamEsFoglalkozas(int evesOraSorszam, int foglalkozasId)
{
using (var command = new SDA.DataProvider.SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pFoglalkozasId", foglalkozasId);
command.Parameters.Add("pEvesOraSorszam", evesOraSorszam);
command.CommandText = @"
SELECT
T_TANMENET.ID
FROM
T_TANMENET
JOIN
T_FOGLALKOZAS ON
T_FOGLALKOZAS.C_OSZTALYCSOPORTID = T_TANMENET.C_OSZTALYCSOPORTID AND
T_FOGLALKOZAS.C_TANTARGYID = T_TANMENET.C_TANTARGYID
WHERE
T_TANMENET.TOROLT = 'F' AND
T_FOGLALKOZAS.TOROLT = 'F' AND
T_FOGLALKOZAS.ID = :pFoglalkozasId AND
T_TANMENET.C_ORASZAM = :pEvesOraSorszam";
var result = command.ExecuteScalar();
if (result != null && result != DBNull.Value)
{
return (int)result;
}
return null;
}
}
public void DeleteTanmenet(int tantargyId, int osztalyCsoportId, int userId)
{
using (var command = new SDA.DataProvider.SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pUserId", userId);
command.Parameters.Add("pTantargyId", tantargyId);
command.Parameters.Add("pOsztalyCsoportId", osztalyCsoportId);
command.CommandText = @"
UPDATE
T_TANMENET
SET
TOROLT = 'T',
SERIAL = SERIAL + 1,
LASTCHANGED = GETDATE(),
MODIFIER = :pUserId
WHERE
C_TANTARGYID = :pTantargyId AND
C_OSZTALYCSOPORTID = :pOsztalyCsoportId AND
C_FELTOLTOID = :pUserId";
command.ExecuteNonQuery();
}
}
public string GetTemaEvesOraSorszamhoz(int tantargyId, int osztalyCsoportId, int feltoltoId, int oraEvesSorszama = 0, string elozoTema = null)
{
if (string.IsNullOrWhiteSpace(elozoTema))
{
using (var command = new SDA.DataProvider.SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pTantargyID", tantargyId);
command.Parameters.Add("pOsztalyCsoportID", osztalyCsoportId);
command.Parameters.Add("pFeltoltoID", feltoltoId);
command.Parameters.Add("pOraEvesSorszama", oraEvesSorszama);
command.CommandText = @"
SELECT
C_TEMA Tema
FROM
T_TANMENET
WHERE
T_TANMENET.C_TANTARGYID = @pTantargyID AND
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
T_TANMENET.C_ORASZAM = @pOraEvesSorszama";
var result = command.ExecuteScalar();
if (result != null && result != DBNull.Value)
{
return result.ToString();
}
return string.Empty;
}
}
else
{
using (var command = new SDA.DataProvider.SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pTantargyID", tantargyId);
command.Parameters.Add("pOsztalyCsoportID", osztalyCsoportId);
command.Parameters.Add("pFeltoltoID", feltoltoId);
command.Parameters.Add("pOraEvesSorszama", oraEvesSorszama);
command.Parameters.Add("pElozoTema", elozoTema);
command.CommandText = @"
SELECT TOP 1
T_TANMENET.C_TEMA Tema
FROM
T_TANMENET
OUTER APPLY (
SELECT TOP 1
T_TANMENET.C_ORASZAM
FROM
T_TANMENET
WHERE
T_TANMENET.C_TANTARGYID = @pTantargyID AND
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
T_TANMENET.C_ORASZAM <= @pOraEvesSorszama AND
T_TANMENET.C_TEMA = @pElozoTema
ORDER BY T_TANMENET.C_ORASZAM DESC
) elozo
WHERE
T_TANMENET.C_TANTARGYID = @pTantargyID AND
T_TANMENET.C_OSZTALYCSOPORTID = @pOsztalyCsoportID AND
T_TANMENET.C_FELTOLTOID = @pFeltoltoID AND
T_TANMENET.C_ORASZAM > elozo.C_ORASZAM
ORDER BY T_TANMENET.C_ORASZAM";
var result = command.ExecuteScalar();
if (result != null && result != DBNull.Value)
{
return result.ToString();
}
return string.Empty;
}
}
}
public ITanmenet Get()
{
return Tanmenet.GiveAnInstance();
}
public ITanmenet Get(int tanuloId)
{
var entity = Tanmenet.GiveAnInstance();
entity.LoadByID(tanuloId);
return entity;
}
public void FullUpdate(ITanmenet dto)
{
var entity = dto as Tanmenet;
entity.FullUpdate();
DalHelper.Commit();
}
public void Update(ITanmenet dto)
{
var entity = dto as Tanmenet;
entity.Update();
DalHelper.Commit();
}
public void Insert(ITanmenet dto)
{
var entity = dto as Tanmenet;
entity.Insert();
dto.ID = entity.ID;
DalHelper.Commit();
}
public void Delete(int id)
{
var entity = Tanmenet.GiveAnInstance();
entity.LoadByID(id);
entity.TanitasiOra.RemoveAll();
entity.Delete();
DalHelper.Commit();
}
public DataSet GetTanmenetDataSet(int tanevId, int? alkalmazottId = null, int? oktNevelesiKategoriaId = null)
{
var commandParameterList = new List<CommandParameter>
{
new CommandParameter("pTanevId", tanevId),
alkalmazottId.IsEntityId() ?
new CommandParameter("pAlkalmazottId", alkalmazottId.Value) :
new CommandParameter("pAlkalmazottId", DBNull.Value),
oktNevelesiKategoriaId.IsEntityId() ?
new CommandParameter("pOktNevelesiKategoriaId", oktNevelesiKategoriaId.Value) :
new CommandParameter("pOktNevelesiKategoriaId", DBNull.Value)
};
const string commandText = @"
SELECT
tm.ID AS Id
,tm.C_NEV AS Nev
,tm.C_BEJEGYZESIDEJE AS BejegyzesIdeje
,tm.C_ORASZAM AS OraSorszam
,tm.C_TEMA AS Tema
,tm.C_IMPORTALT AS Importalt
,f.ID AS TantargyfelosztasId
,(ocs.C_NEV + ' - ' + tgy.C_NEV) AS TantargyfelosztasNevAlkalmazottNelkul
FROM T_TANMENET_OSSZES tm
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = tm.C_TANTARGYID AND tgy.C_TANEVID = tm.C_TANEVID AND tgy.TOROLT = 'F'
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tm.C_FELTOLTOID AND fh.C_TANEVID = tm.C_TANEVID AND fh.TOROLT = 'F'
INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = fh.ID AND a.C_ALTANEVID = tm.C_TANEVID AND a.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tm.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = tm.C_TANEVID AND ocs.TOROLT = 'F' AND (:pOktNevelesiKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = :pOktNevelesiKategoriaId)
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = tgy.ID AND f.C_TANARID = fh.ID AND f.C_OSZTALYCSOPORTID = ocs.ID AND f.C_TANEVID = tm.C_TANEVID AND f.TOROLT = 'F'
WHERE (:pAlkalmazottId IS NULL OR tm.C_FELTOLTOID = :pAlkalmazottId)
AND tm.C_TANEVID = :pTanevId
AND tm.TOROLT = 'F'
";
DataSet dataSet = GetData(commandText, commandParameterList);
return dataSet;
}
}
}