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

358 lines
13 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.Core;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Framework.Util;
using SDA.DataProvider;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class TantervDAL : DataAccessBase, ITantervDAL
{
public TantervDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters)
{
}
public TantervDAL(DalHandler handler) : base(handler)
{
}
public DataSet GetAktivTantervek(int? tanevId = null)
{
var paramsList = new List<CommandParameter>();
var commandText = new StringBuilder(@"
SELECT ID, C_NEV Nev
FROM T_TANTERV_OSSZES
WHERE TOROLT = 'F' ");
if (tanevId.IsEntityId())
{
commandText.Append(@" and T_TANTERV_OSSZES.c_tanevId = :pTanevID");
paramsList.Add(new CommandParameter("pTanevID", tanevId));
}
var ds = this.GetData(commandText.ToString(), paramsList);
return ds;
}
public DataSet GetTantervek()
{
var CommandText = @"
SELECT
tt.ID ID,
tt.C_NEV Nev,
tt.C_CSOPORTTIPUSA CsoportTipusa,
tt.C_EVFOLYAMIG Evfolyamig,
tt.C_EVFOLYAMTOL Evfolyamtol,
tt.C_MEGJEGYZES Megjegyzes
FROM
T_TANTERV as tt
WHERE
tt.TOROLT = 'F'
";
var ds = GetData(CommandText, dictionaryItemColumns: "CsoportTipusa,Evfolyamig,Evfolyamtol");
return ds;
}
public DataSet GetTantervOsztalyai(int tantervId, int tanevId)
{
List<CommandParameter> parameters = new List<CommandParameter>(); /// TODO(@DevKornél): mehetnének list-be object initializerrel
parameters.Add(new CommandParameter("pTantervId", tantervId));
parameters.Add(new CommandParameter("pTanevId", tanevId));
parameters.Add(new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas));
var command = @"
SELECT
ocs.ID,
ocs.C_NEV Nev,
ocs.C_EVFOLYAMTIPUSA Evfolyam,
LETSZAM.TANULOKSZAMA Letszam
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = ocs.ID
left JOIN
(
SELECT C_OSZTALYCSOPORTID, count(C_TANULOID) TANULOKSZAMA FROM T_TANULOCSOPORT
WHERE
T_TANULOCSOPORT.TOROLT = 'F' and T_TANULOCSOPORT.C_BELEPESDATUM < GETDATE() and
(T_TANULOCSOPORT.C_KILEPESDATUM IS NULL or T_TANULOCSOPORT.C_KILEPESDATUM > GETDATE())
GROUP BY C_OSZTALYCSOPORTID
) LETSZAM on LETSZAM.C_OSZTALYCSOPORTID = ocs.ID
WHERE
ocs.TOROLT = 'F' and
T_OSZTALY_OSSZES.C_TANTERVID = :pTantervId
AND T_OSZTALY_OSSZES.C_ALTANEVID = :pTanevId
AND ocs.C_FELADATKATEGORIAID = @OktNevKatTipus
";
return this.GetData(command, parameters, "Evfolyam");
}
public DataSet GetTantervTanuloi(int tantervId, int tanevId)
{
List<CommandParameter> parameters = new List<CommandParameter>(); /// TODO(@DevKornél): mehetnének list-be object initializerrel
parameters.Add(new CommandParameter("TantervId", tantervId));
parameters.Add(new CommandParameter("TanevId", tanevId));
parameters.Add(new CommandParameter("OktNevKatTipus", (int)OktNevelesiKategoriaEnum.NevelesOktatas));
var command = @"
select
f.ID as ID
,f.C_NYOMTATASINEV as Nev
,ocs.C_NEV as OsztalyNev
from T_TANULOTANUGYIADATOK tta
join T_TANULOCSOPORT tcs on tta.C_TANULOCSOPORTID = tcs.ID and tcs.C_BELEPESDATUM < GETDATE() and (tcs.C_KILEPESDATUM is null or tcs.C_KILEPESDATUM > GETDATE()) and tcs.TOROLT = 'F'
join T_OSZTALY o on o.ID = tcs.C_OSZTALYCSOPORTID and o.TOROLT = 'F'
join T_OSZTALYCSOPORT ocs on ocs.ID = o.ID and ocs.C_FELADATKATEGORIAID = @OktNevKatTipus and ocs.TOROLT = 'F'
join T_TANULO t on t.ID = tcs.C_TANULOID and t.TOROLT = 'F'
join T_FELHASZNALO f on f.ID = t.ID and f.TOROLT = 'F'
where
tta.C_TANTERVID = @TantervId and t.C_ALTANEVID = @TanevId and tta.TOROLT = 'F'
";
return this.GetData(command, parameters);
}
public DataSet TantervKereses(int tanevId, string tantervNev = null, int? jellemzoCsopTipId = null, int? kezdoEvfolyamId = null, int? vegzoEvfolyamId = null, int? isKerettantervreEpul = null, int? isKerettanterv = null)
{
List<CommandParameter> paramsList = new List<CommandParameter>();
StringBuilder command = new StringBuilder(@"SELECT
tanterv.ID AS ID
,tanterv.C_NEV AS Nev
,tanterv.C_CSOPORTTIPUSA AS CsoportTipusa
,tanterv.C_EVFOLYAMIG AS Evfolyamig
,tanterv.C_EVFOLYAMTOL AS Evfolyamtol
,tanterv.C_MEGJEGYZES AS Megjegyzes
,C_ISKERETTANTERV as IsKerettanterv
FROM T_TANTERV_OSSZES tanterv
WHERE tanterv.TOROLT = 'F'");
if (!string.IsNullOrWhiteSpace(tantervNev))
{
command.Append($" AND lower(tanterv.C_NEV) like '%' + @{nameof(tantervNev)} + '%'");
paramsList.Add(new CommandParameter(nameof(tantervNev), tantervNev.ToLowerInvariant()));
}
if (jellemzoCsopTipId.HasValue)
{
command.Append(@" AND tanterv.C_CSOPORTTIPUSA = :pJellCsopTip");
paramsList.Add(new CommandParameter("pJellCsopTip", jellemzoCsopTipId));
}
if (kezdoEvfolyamId.HasValue)
{
command.Append(@" AND tanterv.C_EVFOLYAMTOL = :pKezdEvf");
paramsList.Add(new CommandParameter("pKezdEvf", kezdoEvfolyamId));
}
if (vegzoEvfolyamId.HasValue)
{
command.Append(@" AND tanterv.C_EVFOLYAMIG = :pVegEvf");
paramsList.Add(new CommandParameter("pVegEvf", vegzoEvfolyamId));
}
if (isKerettantervreEpul.HasValue)
{
if (isKerettantervreEpul.Value == 1)
{
command.Append(@" AND tanterv.C_KERETTANTERVREEPULO = 'T'");
}
if (isKerettantervreEpul.Value == 0)
{
command.Append(@" AND tanterv.C_KERETTANTERVREEPULO = 'F'");
}
}
if (isKerettanterv.HasValue)
{
if (isKerettanterv.Value == 1)
{
command.Append(@" AND tanterv.C_ISKERETTANTERV = 'T'");
}
if (isKerettanterv.Value == 0)
{
command.Append(@" AND tanterv.C_ISKERETTANTERV = 'F'");
}
}
command.Append(@" AND tanterv.C_TANEVID = :pTanevId");
paramsList.Add(new CommandParameter("pTanevId", tanevId));
var ds = GetData(command.ToString(), paramsList, dictionaryItemColumns: "CsoportTipusa,Evfolyamig,Evfolyamtol", booleanColumns: "IsKerettanterv");
return ds;
}
public void Insert(ITanterv dto)
{
var entity = dto as Tanterv;
entity.Insert();
dto.ID = entity.ID;
FollowUp(entity);
DalHelper.Commit();
}
public void FullUpdate(ITanterv dto)
{
var entity = dto as Tanterv;
entity.FullUpdate();
FollowUp(entity);
DalHelper.Commit();
}
public void Update(ITanterv dto)
{
var entity = dto as Tanterv;
entity.Update();
FollowUp(entity);
DalHelper.Commit();
}
public void Delete(ITanterv dto)
{
var entity = dto as Tanterv;
entity.Delete();
DalHelper.Commit();
}
public void FollowUpTanterv(int intezmenyId, int aktTanevId, int kovetkezoTanevId, int tantervId)
{
using (SDACommand command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandText = "uspFollowUpTanterv";
command.Parameters.Add("intezmenyId", intezmenyId);
command.Parameters.Add("aktTanevId", aktTanevId);
command.Parameters.Add("kovetkezoTanevId", kovetkezoTanevId);
command.Parameters.Add("tantervId", tantervId);
command.CommandType = CommandType.StoredProcedure;
command.ExecuteNonQuery();
DalHelper.Commit();
}
}
public int GetKovTanevTanterv(int tantervId, int tanevId)
{
using (var commandByTantervId = new SDACommand
{
Connection = UserContext.Instance.SDAConnection,
Transaction = UserContext.Instance.SDATransaction
})
{
commandByTantervId.Parameters.Add("pTantervId", tantervId);
commandByTantervId.CommandText = @"
SELECT
tt.ID
FROM T_TANTERV_OSSZES tt
WHERE
tt.ELOZOTANEVIREKORDID = :pTantervId AND tt.TOROLT = 'F'
";
var resultByTantervId = commandByTantervId.ExecuteScalar();
if (resultByTantervId != null)
return int.Parse(resultByTantervId.ToString());
}
using (var commandByTanevId = new SDACommand
{
Connection = UserContext.Instance.SDAConnection,
Transaction = UserContext.Instance.SDATransaction
})
{
commandByTanevId.Parameters.Add("pTanevId", tanevId);
commandByTanevId.CommandText = @"
SELECT
ID
FROM T_TANTERV_OSSZES
WHERE
C_TANEVID = :pTanevId
AND TOROLT = 'F'
AND C_VEDETT = 'T'
";
var resultByTanevId = commandByTanevId.ExecuteScalar();
if (resultByTanevId != null)
return int.Parse(resultByTanevId.ToString());
}
return -1;
}
public ITanterv Get()
{
return Tanterv.GiveAnInstance();
}
public ITanterv Get(int id)
{
var entity = Tanterv.GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public int GetKovTanevIdByAktTanevId(int id)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add(nameof(id), id);
command.CommandText = $@"
SELECT ID
FROM T_TANTERV_OSSZES
WHERE
ELOZOTANEVIREKORDID = @{nameof(id)}
AND TOROLT = 'F'
";
var result = command.ExecuteScalar();
int.TryParse(result?.ToString(), out int res);
return res;
}
}
public int GetTop1TantervId(int tanevId)
{
SDA.DataProvider.SDACommand command = new SDA.DataProvider.SDACommand();
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pTanevId", tanevId);
command.CommandText = @"
SELECT TOP 1
tt.ID
FROM T_TANTERV_OSSZES tt
WHERE
tt.C_TANEVID = :pTanevId
AND tt.TOROLT = 'F'
";
var result = command.ExecuteScalar();
if (result != null)
return int.Parse(result.ToString());
return -1;
}
}
}