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

422 lines
18 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.Core.FeatureToggle;
using Kreta.Core.Logic;
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.DataProvider;
using SDA.Kreta.Entities;
using static SDA.Kreta.Entities.SzamonkeresElorejelzes;
namespace Kreta.DataAccessManual
{
internal class SzamonkeresElorejelzesDal : DataAccessBase, ISzamonkeresElorejelzesDal
{
public SzamonkeresElorejelzesDal(DalHandler handler)
: base(handler)
{
}
public SzamonkeresElorejelzesDal(DalHandler handler, GridParameters parameters)
: base(handler, parameters)
{
}
public ISzamonkeresElorejelzes Get()
{
return GiveAnInstance();
}
public ISzamonkeresElorejelzes Get(int id)
{
var entity = GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public void Insert(ISzamonkeresElorejelzes dto)
{
var entity = dto as SzamonkeresElorejelzes;
entity.IsErtesitesElkuldve = !FeatureContext.Instance.IsEnabled(Core.Constants.FeatureName.SendBejelentettSzamonkeresNotification);
entity.Insert();
DalHelper.Commit();
}
public void Update(ISzamonkeresElorejelzes dto)
{
var entity = dto as SzamonkeresElorejelzes;
entity.Update();
DalHelper.Commit();
}
public void FullUpdate(ISzamonkeresElorejelzes dto)
{
var entity = dto as SzamonkeresElorejelzes;
entity.FullUpdate();
DalHelper.Commit();
}
public void Delete(int id)
{
var entity = SzamonkeresElorejelzes.GiveAnInstance();
entity.LoadByID(id);
entity.Delete();
DalHelper.Commit();
}
public DataSet GetSzamonkeresElorejelzesDetailDataSet(int intezmenyId, int tanevId, SzamonkeresElorejelzesSearchPco pco, bool isKellKapcsolodoOsztalyok)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspGetSzamonkeresElorejelzesDetailDataSet";
command.Parameters.Add("IntezmenyId", intezmenyId);
command.Parameters.Add("TanevId", tanevId);
command.Parameters.Add("pOraGroupId", pco.OraGroupId);
command.Parameters.Add("pDatum", pco.Datum);
command.Parameters.Add("pOraszamSrc", pco.OraszamSrc);
command.Parameters.Add("pOsztalyCsoportId", pco.OsztalyCsoportId);
command.Parameters.Add("pIsKellKapcsolodoOsztalyok", isKellKapcsolodoOsztalyok);
command.Parameters.Add("pErtekelesModTypeId", (int)GeneratedAdatszotarTipusEnum.ErtekelesMod);
var dts = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dts);
}
SetBoolFields(dts.Tables[0], "Torolheto");
return dts;
}
}
public DataSet GetTanulokSzamonkeresElorejelzesei(int intezmenyId, int tanevId, SzamonkeresElorejelzesSearchPco pco)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspGetTanulokSzamonkeresElorejelzesei";
command.Parameters.Add("IntezmenyId", intezmenyId);
command.Parameters.Add("TanevId", tanevId);
command.Parameters.Add("pOraGroupId", pco.OraGroupId);
command.Parameters.Add("pDatum", pco.Datum);
command.Parameters.Add("pOsztalyCsoportId", pco.OsztalyCsoportId);
command.Parameters.Add("pNapiSzamonkeresLimit", pco.NapiSzamonkeresLimit);
command.Parameters.Add("pErtekelesModokLimithez", string.Join(",", pco.ErtekelesModokLimithez));
var dts = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dts);
}
return dts;
}
}
/// INFO @DevKornel: Mobil használja
public DataSet GetBejelentettSzamonkeresekGrid(int intezmenyId, int tanevId, SzamonkeresElorejelzesSearchPco pco, OktNevelesiKategoriaEnum? feladatKategoria)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspGetSzamonkeresElorejelzesGrid";
command.Parameters.Add("pIntezmenyId", intezmenyId);
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pSzamonkeresIdsString", SqlLogic.ParseListToParameter(pco.SzamonkeresIds));
command.Parameters.Add("pTanuloId", pco.TanuloId);
command.Parameters.Add("pDatumTol", pco.DatumTol);
command.Parameters.Add("pDatumIg", pco.DatumIg);
command.Parameters.Add("pHetNapjaSrc", pco.HetNapjaSrc);
command.Parameters.Add("pOraszamSrc", pco.OraszamSrc);
command.Parameters.Add("pSzamonkeresModSrc", pco.SzamonkeresModSrc);
command.Parameters.Add("pSzamonkeresMegnevezesSrc", pco.SzamonkeresMegnevezesSrc);
command.Parameters.Add("pBejelentesDatumaTol", pco.BejelentesDatumaTol);
command.Parameters.Add("pBejelentesDatumaIg", pco.BejelentesDatumaIg);
command.Parameters.Add("pTantargySrc", pco.TantargySrc);
command.Parameters.Add("pTanarSrc", pco.TanarSrc);
command.Parameters.Add("pRegiekElrejtese", pco.RegiSzamonkeresekElrejtese);
command.Parameters.Add("pCsakLegutobbi6", pco.CsakLegutobbi6);
command.Parameters.Add("pOraGroupId", pco.OraGroupId);
command.Parameters.Add("pErtekelesModTypeId", (int)GeneratedAdatszotarTipusEnum.ErtekelesMod);
command.Parameters.Add("pMindegyikHetTipusId", (int)HetiRendTipusEnum.MindegyikHet);
if (feladatKategoria.HasValue)
{ command.Parameters.Add("pFeladatKategoriaId", feladatKategoria); }
else
{ command.Parameters.Add("pFeladatKategoriaId", DBNull.Value); }
if (pco.OsztalyCsoportIdsKapcsolodoCsoportokkal?.Any() ?? false)
{
command.Parameters.Add("pOsztalyCsoportIdsKapcsolodoCsoportokkal", SqlLogic.ParseListToParameter(pco.OsztalyCsoportIdsKapcsolodoCsoportokkal));
}
else
{
command.Parameters.Add("pOsztalyCsoportId", pco.OsztalyCsoportId);
}
var dts = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dts);
}
SetDNAME(dts.Tables[0], "HetNapja");
SetBoolFields(dts.Tables[0], "Torolheto");
DataTable dt = SortingAndPaging(dts.Tables[0], GridParameters);
return dt.AsDataSet();
}
}
/// INFO @DevKornel: Mobil használja
public DataSet GetBejelentettSzamonkeresekByDateRange(int intezmenyId, int tanevId, DateTime start, DateTime end)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspGetSzamonkeresElorejelzesekByDateRange";
command.Parameters.Add("pIntezmenyId", intezmenyId);
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pDatumTol", start);
command.Parameters.Add("pDatumIg", end);
var dts = new DataSet();
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = command;
adapter.Fill(dts);
}
return dts;
}
}
public void DeleteAllByOrarendiOraGroupId(int tanevId, int orarendiOraGroupId)
{
var ds = GetSzamonkeresForOrarendiOraGroupId(tanevId, orarendiOraGroupId);
foreach (DataRow row in ds.Tables[0].Rows)
{
if (row["ID"] != null && row["ID"] != DBNull.Value)
{
Delete(Convert.ToInt32(row["ID"]));
}
}
}
public DataSet GetSzamonkeresForOrarendiOraGroupId(int tanevId, int? orarendiOraGroupId)
{
var commandParameterList = new List<CommandParameter>
{
new CommandParameter("pTanevId", tanevId),
new CommandParameter("pOrarendiOraGroupId", orarendiOraGroupId),
};
string commandText = @"
SELECT
sz.ID
,sz.C_ORARENDIORAGROUPID as OrarendiOraGroupId
,sz.C_SZAMONKERESDATUMA
FROM T_SZAMONKERESELOREJELZES_OSSZES sz
WHERE sz.TOROLT = 'F'
AND sz.C_TANEVID = :pTanevId
AND sz.C_ORARENDIORAGROUPID = :pOrarendiOraGroupId
";
var ds = GetData(commandText, commandParameterList);
return ds;
}
public void DeleteAllByOraGroupIdAndIdoszak(int tanevId, int orarendiOraGroupId, DateTime? oraErvenyessegKezdete, DateTime? oraErvenyessegVege, bool idoszakonKivul = false)
{
var ids = GetSzamonkeresIDsForOrarendiOraGroupIdByIdoszak(tanevId, orarendiOraGroupId, oraErvenyessegKezdete, oraErvenyessegVege, idoszakonKivul);
foreach (var id in ids)
{
Delete(id);
}
}
private List<int> GetSzamonkeresIDsForOrarendiOraGroupIdByIdoszak(int tanevId, int orarendiOraGroupId, DateTime? oraErvenyessegKezdete, DateTime? oraErvenyessegVege, bool idoszakonKivul)
{
List<int> ret = new List<int>();
var commandParameterList = new List<CommandParameter>
{
new CommandParameter("pTanevId", tanevId),
new CommandParameter("pOrarendiOraGroupId", orarendiOraGroupId),
};
if (oraErvenyessegKezdete.HasValue)
{
commandParameterList.Add(new CommandParameter("pOraErvenyessegKezdete", oraErvenyessegKezdete.Value));
}
else
{
commandParameterList.Add(new CommandParameter("pOraErvenyessegKezdete", DBNull.Value));
}
if (oraErvenyessegVege.HasValue)
{
commandParameterList.Add(new CommandParameter("pOraErvenyessegVege", oraErvenyessegVege.Value));
}
else
{
commandParameterList.Add(new CommandParameter("pOraErvenyessegVege", DBNull.Value));
}
string commandText = @"
SELECT
sz.ID
FROM T_SZAMONKERESELOREJELZES_OSSZES sz
WHERE sz.TOROLT = 'F'
AND sz.C_TANEVID = :pTanevId
AND sz.C_ORARENDIORAGROUPID = :pOrarendiOraGroupId
";
commandText += idoszakonKivul ? @"
AND (sz.C_SZAMONKERESDATUMA < :pOraErvenyessegKezdete OR (:pOraErvenyessegVege IS NOT NULL AND sz.C_SZAMONKERESDATUMA > :pOraErvenyessegVege)) " : @"
AND (sz.C_SZAMONKERESDATUMA >= :pOraErvenyessegKezdete AND (:pOraErvenyessegVege IS NULL OR sz.C_SZAMONKERESDATUMA <= :pOraErvenyessegVege)) ";
var ds = GetData(commandText, commandParameterList);
foreach (DataRow row in ds.Tables[0].Rows)
{
if (row["ID"] != null && row["ID"] != DBNull.Value)
{
ret.Add(Convert.ToInt32(row["ID"]));
}
}
return ret;
}
public bool HasSzamonkeresForOrarendiOraGroupId(int tanevId, int orarendiOraGroupId)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pOrarendiOraGroupId", orarendiOraGroupId);
command.CommandText = @"
IF EXISTS
(
SELECT 1
FROM T_SZAMONKERESELOREJELZES_OSSZES sz
WHERE sz.TOROLT = 'F'
AND sz.C_TANEVID = :pTanevId
AND sz.C_ORARENDIORAGROUPID = :pOrarendiOraGroupId
)
SELECT 1
ELSE
SELECT 0
";
return Convert.ToBoolean(command.ExecuteScalar());
}
}
public bool HasSzamonkeresByIdoszak(int tanevId, int orarendiOraGroupId, DateTime oraErvenyessegKezdete, DateTime oraErvenyessegVege, bool idoszakonKivul = true)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pOrarendiOraGroupId", orarendiOraGroupId);
command.Parameters.Add("pOraErvenyessegKezdete", oraErvenyessegKezdete);
command.Parameters.Add("pOraErvenyessegVege", oraErvenyessegVege);
command.CommandText = @"
IF EXISTS
(
SELECT 1
FROM T_SZAMONKERESELOREJELZES_OSSZES sz
WHERE sz.TOROLT = 'F'
AND sz.C_TANEVID = :pTanevId
AND sz.C_ORARENDIORAGROUPID = :pOrarendiOraGroupId
" + (idoszakonKivul ? @" AND (sz.C_SZAMONKERESDATUMA < :pOraErvenyessegKezdete OR sz.C_SZAMONKERESDATUMA > :pOraErvenyessegVege)" :
@" AND (sz.C_SZAMONKERESDATUMA >= :pOraErvenyessegKezdete AND sz.C_SZAMONKERESDATUMA < :pOraErvenyessegVege)") + @"
)
SELECT 1
ELSE
SELECT 0
";
return Convert.ToBoolean(command.ExecuteScalar());
}
}
/// INFO @DevKornel: Mobil használja
public List<(int TanuloId, Guid IdpUniqueId, int SzamonkeresId, int TanevId, int SzamonkeresModId, string TanuloNeve, string TantargyNeve, string IntezmenyAzonosito)> GetAllSchemaBejelentettSzamonkeresNotification()
{
var result = new List<(int TanuloId, Guid IdpUniqueId, int SzamonkeresId, int TanevId, int SzamonkeresModId, string TanuloNeve, string TantargyNeve, string IntezmenyAzonosito)>();
var ds = new DataSet();
using (var sdaCommand = new SDACommand())
{
sdaCommand.Connection = UserContext.Instance.SDAConnection;
sdaCommand.Transaction = UserContext.Instance.SDATransaction;
sdaCommand.CommandType = CommandType.StoredProcedure;
sdaCommand.CommandText = "uspGetAllSchemaBejelentettSzamonkeresNotification";
using (var adapter = new SDADataAdapter())
{
adapter.SelectCommand = sdaCommand;
adapter.Fill(ds);
}
}
foreach (DataRow row in ds.Tables[0].Rows)
{
result.Add((row.Field<int>("TanuloId"), row.Field<Guid>("IdpUniqueId"), row.Field<int>("SzamonkeresId"), row.Field<int>("TanevId"), row.Field<int>("SzamonkeresModId"), row.Field<string>("TanuloNev"), row.Field<string>("TantargyNev"), row.Field<string>("IntezmenyAzonosito")));
}
return result;
}
/// INFO @DevKornel: Mobil használja
public void SetBejelentettSzamonkeresAsKikuldott(IEnumerable<int> idList)
{
if (!idList.Any())
{
return;
}
using (SDACommand command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "uspSetSzamonkeresElorejelzesAsKikuldott";
command.Parameters.Add("item_list", SqlLogic.ParseListToParameter(idList.ToList()));
command.ExecuteNonQuery();
DalHelper.Commit();
}
}
}
}