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

166 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using Kreta.Core.Logic;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Framework;
using Kreta.Framework.Util;
using Kreta.Resources;
using SDA.DataProvider;
namespace Kreta.DataAccessManual
{
internal class HRModulDAL : DataAccessBase, IHRModulDAL
{
public HRModulDAL(DalHandler handler) : base(handler) { }
public HRModulDAL(DalHandler handler, GridParameters gridParameters) : base(handler, gridParameters) { }
public DataSet TavolletjelentoDokList(int tavolletId)
{
List<CommandParameter> paramlist = new List<CommandParameter>();
paramlist.Add(new CommandParameter("pTavolletId", tavolletId));
StringBuilder command = new StringBuilder($@"
SELECT
iktId.ID as ID
,ISNULL(iktId.C_IKTATOSZAM, '-') as Iktatoszam
,iktId.C_DOKUMENTUMNEVE as DokumentumNev
,'T' as IsDokumentum
FROM T_IKTATOTTDOKUMENTUMTAVOLLET tid
INNER JOIN T_IKTATOTTDOKUMENTUM iktId on tid.C_IKTATOTTDOKUMENTUMID = iktId.ID
LEFT JOIN T_IKTATOTTDOKUMENTUMCSATOLMANY iktCsat on iktCsat.C_IKTATOTTDOKUMENTUMID = iktId.ID
WHERE tid.C_KOZPONTITAVOLLETID = :pTavolletId
AND iktCsat.ID IS NULL
AND iktId.C_DOKUMENTUMNEVE <> '{HRModulResource.TavolletIktatasSablonGeneraltFajlNeve}'
UNION
SELECT
iktCsat.ID as ID
,ISNULL(iktId.C_IKTATOSZAM, '-') as Iktatoszam
,iktCsat.C_FAJLNEV as DokumentumNev
,'F' as IsDokumentum
FROM T_IKTATOTTDOKUMENTUMTAVOLLET tid
INNER JOIN T_IKTATOTTDOKUMENTUM iktId on tid.C_IKTATOTTDOKUMENTUMID = iktId.ID
INNER JOIN T_IKTATOTTDOKUMENTUMCSATOLMANY iktCsat on iktCsat.C_IKTATOTTDOKUMENTUMID = iktId.ID
WHERE
tid.C_KOZPONTITAVOLLETID = :pTavolletId
");
DataSet ds = GetData(command.ToString(), paramlist);
return ds;
}
public void InsertDokumentum(int tavolletId, int dokumentumId)
{
DalHelper.IktatottDokumentumTavolletDal().Insert(tavolletId, dokumentumId);
DalHelper.Commit();
}
public void UpdateSzinkronizalatlan(int intezmenyId, int tanevId, List<int> list)
{
using (var command = new SDACommand
{
Connection = UserContext.Instance.SDAConnection,
Transaction = UserContext.Instance.SDATransaction,
CommandText = $@"
UPDATE T_IKTATOTTDOKUMENTUMTAVOLLET_OSSZES
SET
[C_SZINKRONIZALVA] = GETDATE()
,[SERIAL] = SERIAL + 1
WHERE C_KOZPONTITAVOLLETID IN ({SqlLogic.ParseListToParameter(list)})
AND C_INTEZMENYID = :pIntezmenyId
AND C_TANEVID = :pTanevId
AND C_SZINKRONIZALVA IS NULL
"
})
{
command.Parameters.Add("pTanevId", tanevId);
command.Parameters.Add("pIntezmenyId", intezmenyId);
command.ExecuteNonQuery();
DalHelper.Commit();
}
}
public int GetTavolletIdotartam(DateTime tavolletKezdet, DateTime tavolletVeg)
{
using (var command = new SDACommand())
{
command.Connection = UserContext.Instance.SDAConnection;
command.Transaction = UserContext.Instance.SDATransaction;
command.Parameters.Add(nameof(tavolletKezdet), tavolletKezdet);
command.Parameters.Add(nameof(tavolletVeg), tavolletVeg);
command.CommandText = $@"
SELECT COUNT(1) FROM T_NAPTARINAP_OSSZES nn
WHERE
nn.C_NAPDATUMA BETWEEN @{nameof(tavolletKezdet)} AND @{nameof(tavolletVeg)}
AND nn.C_NAPTIPUSA NOT IN (1386, 6833, 1396) AND nn.TOROLT = 'F'
AND (nn.C_HETNAPJA BETWEEN 1408 AND 1412 OR EXISTS (
SELECT TOP 1 1
FROM T_TANEVRENDJE_OSSZES tr
WHERE tr.TOROLT = 'F'
AND tr.C_DATUM = nn.C_NAPDATUMA
AND tr.C_EGYEDINAP = 'T'
AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'T'))
";
var result = int.Parse(command.ExecuteScalar()?.ToString());
return tavolletKezdet == tavolletVeg ? 1 : result;
}
}
public DataSet GetTavolletSzinkronizalatlanDok(TavolletIktatottPCO pco)
{
List<CommandParameter> paramlist = new List<CommandParameter>()
{
//paramétereket beállítani
new CommandParameter("pTanevId", pco.TanevId),
new CommandParameter("pIntezmenyId", pco.IntezmenyId)
};
var command = @"
WITH x AS (SELECT C_KOZPONTITAVOLLETID
FROM T_IKTATOTTDOKUMENTUMTAVOLLET_OSSZES tavol
INNER JOIN T_IKTATOTTDOKUMENTUM_OSSZES iktat ON iktat.ID = tavol.C_IKTATOTTDOKUMENTUMID
AND iktat.C_INTEZMENYID = tavol.C_INTEZMENYID AND iktat.C_TANEVID = iktat.C_TANEVID
AND tavol.C_SZINKRONIZALVA IS NULL
WHERE tavol.TOROLT = 'F'
AND tavol.C_TANEVID = @pTanevId
AND tavol.C_INTEZMENYID = @pIntezmenyId
AND C_ELEKTRONIKUSPELDANYID IS NULL)
SELECT C_KOZPONTITAVOLLETID, C_ELEKTRONIKUSPELDANYID, C_FAJLNEV, C_IKTATASDATUMA, C_NYOMTATASINEV, C_EGYEDIAZONOSITO FROM
(SELECT
iktDokCsat.id
,tavol.C_KOZPONTITAVOLLETID
,iktDokCsat.C_ELEKTRONIKUSPELDANYID
,iktDokCsat.C_FAJLNEV as C_FAJLNEV
,iktat.C_IKTATASDATUMA
,f.C_NYOMTATASINEV
,f.C_EGYEDIAZONOSITO
FROM T_IKTATOTTDOKUMENTUMTAVOLLET_OSSZES tavol
INNER JOIN T_IKTATOTTDOKUMENTUM_OSSZES iktat ON iktat.ID = tavol.C_IKTATOTTDOKUMENTUMID
AND iktat.C_INTEZMENYID = tavol.C_INTEZMENYID AND iktat.C_TANEVID = tavol.C_TANEVID
AND tavol.C_SZINKRONIZALVA IS NULL
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = iktat.C_IKTATOSZEMELYID
AND f.C_INTEZMENYID = tavol.C_INTEZMENYID AND f.C_TANEVID = tavol.C_TANEVID
INNER JOIN T_IKTATOTTDOKUMENTUMCSATOLMANY_OSSZES iktDokCsat on iktDokCsat.C_IKTATOTTDOKUMENTUMID = iktat.ID
AND iktDokCsat.C_INTEZMENYID = iktat.C_INTEZMENYID AND iktDokCsat.C_TANEVID = iktat.C_TANEVID
AND iktDokCsat.C_ISATTACHED = 'T'
AND iktDokCsat.TOROLT = 'F'
WHERE tavol.TOROLT = 'F'
AND C_SZINKRONIZALVA IS NULL
AND tavol.C_TANEVID = @pTanevId
AND tavol.C_INTEZMENYID = @pIntezmenyId) AS notsynced
WHERE NOT EXISTS (SELECT C_KOZPONTITAVOLLETID FROM x WHERE C_KOZPONTITAVOLLETID = notsynced.C_KOZPONTITAVOLLETID)
";
return GetData(command, paramlist);
}
}
}