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

178 lines
6.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.Core.Logic;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Framework;
using Kreta.Framework.Util;
using SDA.DataProvider;
using SDA.Kreta.Entities;
namespace Kreta.DataAccessManual
{
internal class OraFileDAL : DataAccessBase, IOraFileDAL
{
public OraFileDAL(DalHandler handler) : base(handler) { }
public OraFileDAL(DalHandler handler, GridParameters parameters) : base(handler, parameters) { }
public IOraFile Get()
{
return OraFile.GiveAnInstance();
}
public IOraFile Get(int id)
{
var entity = OraFile.GiveAnInstance();
entity.LoadByID(id);
return entity;
}
public int Insert(IOraFile dto)
{
var entity = dto as OraFile;
entity.Insert();
dto.ID = entity.ID;
DalHelper.Commit();
return dto.ID;
}
public void UpdateLathatoFileok(int intezmenyId, int tanevId, int? tanitasiOraId, int? orarendiOraId, DateTime oraDatum, List<int> lathatoFileIds)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add("pIntezmenyId", intezmenyId);
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pOraDatum", oraDatum);
if (tanitasiOraId != null)
{
command.Parameters.Add("pTanitasiOraId", tanitasiOraId);
}
else
{
command.Parameters.Add("pTanitasiOraId", DBNull.Value);
}
if (orarendiOraId != null)
{
command.Parameters.Add("pOrarendiOraId", orarendiOraId);
}
else
{
command.Parameters.Add("pOrarendiOraId", DBNull.Value);
}
var lathatoFileIdsParameter = lathatoFileIds?.Count > 0 ? SqlLogic.ParseListToParameter(lathatoFileIds) : 0;
command.CommandText = $@"UPDATE
T_ORAFILE
SET
C_ISTANULOLATHATO = CASE WHEN
ID IN ({lathatoFileIdsParameter})
THEN
'T'
ELSE
'F'
END
WHERE ((C_TANITASIORAID = :pTanitasiOraId AND C_ORARENDIORAID IS NULL) OR
(C_ORARENDIORAID = :pOrarendiOraId AND C_TANITASIORAID IS NULL) OR
(C_ORARENDIORAID = :pOrarendiOraId AND C_TANITASIORAID = :pTanitasiOraId))
AND C_ORADATUM = :pOraDatum
AND C_INTEZMENYID = :pIntezmenyId
AND C_TANEVID = :pTanevId
AND TOROLT = 'F'";
_ = command.ExecuteNonQuery();
DalHelper.Commit();
}
}
public void Update(IOraFile dto)
{
var entity = dto as OraFile;
entity.FullUpdate();
DalHelper.Commit();
}
public void FullUpdate(IOraFile dto)
{
var entity = dto as OraFile;
entity.FullUpdate(true);
DalHelper.Commit();
}
public void Delete(IOraFile dto)
{
var entity = dto as OraFile;
entity.Delete();
DalHelper.Commit();
}
public void SaveOraFileData(int oraFileId, string fileNev, string megjegyzes)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.CommandType = CommandType.Text;
command.Parameters.Add("pOraFileId", oraFileId);
command.Parameters.Add("pFileNev", fileNev);
var sb = new StringBuilder(@"UPDATE T_DKT_FILE
SET C_FILENEV = :pFileNev
FROM T_DKT_FILE dktf
INNER JOIN T_ORAFILE orf ON orf.ID = :pOraFileId AND orf.C_DKT_FILEID = dktf.ID ");
if (megjegyzes != null)
{
command.Parameters.Add("pMegjegyzes", megjegyzes);
sb.Append(@" UPDATE T_ORAFILE
SET C_MEGJEGYZES = :pMegjegyzes
WHERE ID = :pOraFileId");
}
command.CommandText = sb.ToString();
command.ExecuteNonQuery();
DalHelper.Commit();
}
}
public DataSet GetOraFilesByDateRange(DateTime start, DateTime end, int? oraFileTipus)
{
var commandParameterList = new List<CommandParameter>
{
new CommandParameter("pStartDate", start.Date),
new CommandParameter("pEndDate", end.Date),
new CommandParameter("pOraFileTipus", oraFileTipus)
};
StringBuilder commandText = new StringBuilder(@"
SELECT
oraf.ID Id
,oraf.C_DKT_FILEID FileId
,oraf.C_ORADATUM Datum
,CONCAT(dktf.C_FILENEV, '.', dktf.C_EXTENSION) FileNev
,oraf.C_ORARENDIORAID OrarendiOraId
,oraf.C_TANITASIORAID TanitasiOraId
FROM T_ORAFILE oraf
INNER JOIN T_DKT_FILE dktf ON dktf.ID = oraf.C_DKT_FILEID
WHERE :pStartDate <= oraf.C_ORADATUM AND
oraf.C_ORADATUM <= :pEndDate AND
oraf.C_ISTANULOLATHATO = 'T'");
if (oraFileTipus.HasValue)
{
commandText.Append(" AND oraf.C_ORAFILETIPUSID = :pOraFileTipus");
}
return GetData(commandText.ToString(), commandParameterList);
}
}
}