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

160 lines
5.6 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework.Util;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class DiakolimpiaDAL : DataAccessBase, IDiakolimpiaDAL
{
public DiakolimpiaDAL(DalHandler handler, GridParameters parameters)
: base(handler, parameters)
{
}
public DiakolimpiaDAL(DalHandler handler) : base(handler)
{
}
public IDiakolimpia Get()
{
return Diakolimpia.GiveAnInstance();
}
public IDiakolimpia Get(int id)
{
var entity = Diakolimpia.GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public void FullUpdate(IDiakolimpia dto)
{
var entity = dto as Diakolimpia;
entity.FullUpdate(true);
DalHelper.Commit();
}
public void Update(IDiakolimpia dto)
{
var entity = dto as Diakolimpia;
entity.FullUpdate();
DalHelper.Commit();
}
public void Insert(IDiakolimpia dto)
{
var entity = dto as Diakolimpia;
entity.Insert(true);
dto.ID = entity.ID;
DalHelper.Commit();
}
public void Delete(int id)
{
var entity = Diakolimpia.GiveAnInstance();
entity.LoadByID(id);
Delete(entity);
}
public void Delete(IDiakolimpia dto)
{
var entity = dto as Diakolimpia;
entity.Delete();
DalHelper.Commit();
}
public DataSet GetDiakolimpiaGrid(DiakolimpiaSearchPCO searchPco, int tanevId)
{
List<CommandParameter> paramlist = new List<CommandParameter> {
new CommandParameter(nameof(tanevId), tanevId)
,new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas)
};
StringBuilder commandText = new StringBuilder($@"
SELECT
felhasznalo.ID,
felhasznalo.C_NYOMTATASINEV Nev,
felhasznalo.C_SZULETESIDATUM SzuletesiDatum,
felhasznalo.C_ANYJANEVE AnyjaNeve,
Osztaly.C_NEV Osztalya,
felhasznalo.C_OKTATASIAZONOSITO OktatasiAzonosito
FROM
T_FELHASZNALO_OSSZES felhasznalo
JOIN T_TANULO_OSSZES tanulo on felhasznalo.ID = tanulo.ID
INNER JOIN
(SELECT
ocs.C_NEV, T_TANULOCSOPORT_OSSZES.C_TANULOID, ocs.ID
FROM
T_TANULOCSOPORT_OSSZES
JOIN
T_OSZTALY_OSSZES ON T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = T_OSZTALY_OSSZES.ID
JOIN
T_OSZTALYCSOPORT_OSSZES ocs ON T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = ocs.ID AND ocs.C_FELADATKATEGORIAID = @OktNevKatTipus
JOIN
T_TANEV_OSSZES ON ocs.C_TANEVID = T_TANEV_OSSZES.ID
WHERE
ocs.TOROLT = 'F'
AND T_TANEV_OSSZES.TOROLT = 'F'
AND T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM IS NULL OR T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM > GETDATE())
) Osztaly ON Osztaly.C_TANULOID = felhasznalo.ID
WHERE
felhasznalo.TOROLT = 'F'
AND tanulo.TOROLT = 'F'
AND tanulo.C_ALTANEVID = @{nameof(tanevId)}
");
if (!string.IsNullOrWhiteSpace(searchPco.SearchNev))
{
commandText.Append($" AND LOWER(felhasznalo.C_NYOMTATASINEV) LIKE '%' + @{nameof(searchPco.SearchNev)} + '%'");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchNev), searchPco.SearchNev.ToLowerInvariant()));
}
if (searchPco.SearchSzuletesiDatumtol.HasValue)
{
commandText.Append($" AND felhasznalo.C_SZULETESIDATUM >= @{nameof(searchPco.SearchSzuletesiDatumtol)}");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchSzuletesiDatumtol), searchPco.SearchSzuletesiDatumtol));
}
if (searchPco.SearchSzuletesiDatumig.HasValue)
{
commandText.Append($" AND felhasznalo.C_SZULETESIDATUM <= @{nameof(searchPco.SearchSzuletesiDatumig)}");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchSzuletesiDatumig), searchPco.SearchSzuletesiDatumig));
}
if (!string.IsNullOrWhiteSpace(searchPco.SearchAnyjaNeve))
{
commandText.Append($" AND LOWER(felhasznalo.C_ANYJANEVE) LIKE '%' + @{nameof(searchPco.SearchAnyjaNeve)} + '%'");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchAnyjaNeve), searchPco.SearchAnyjaNeve.ToLowerInvariant()));
}
if (searchPco.SearchOsztalya.HasValue)
{
commandText.Append($" AND Osztaly.ID = @{nameof(searchPco.SearchOsztalya)}");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchOsztalya), searchPco.SearchOsztalya));
}
if (!string.IsNullOrWhiteSpace(searchPco.SearchOktatasiAzonosito))
{
commandText.Append($" AND LOWER(felhasznalo.C_OKTATASIAZONOSITO) LIKE '%' + @{nameof(searchPco.SearchOktatasiAzonosito)} + '%'");
paramlist.Add(new CommandParameter(nameof(searchPco.SearchOktatasiAzonosito), searchPco.SearchOktatasiAzonosito.ToLowerInvariant()));
}
DataSet ds = GetData(commandText.ToString(), paramlist);
return ds;
}
}
}