Files
BeWoPlaner/Data/Access/FinanceDAO.cs
2025-11-24 10:28:48 +01:00

102 lines
3.0 KiB
C#

using BeWo.Data.Entities;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.DataContracts;
using NHibernate.Criterion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BS.Shared.Interface;
using BeWo.Data.Entities.Light;
using BS.Shared;
namespace BeWo.Data.Access
{
/// <summary>
///
/// Ggf Gkv in eigene DAO auslagern
///
/// </summary>
public class FinanceDAO : AbstractBaseDAO
{
public bool HaveIKDatenannahmestelleChanged(IGkvAbrechnung gkvAbrechnung, string ikdatenannahmestelle)
{
if (gkvAbrechnung.TransferProtokolle is IEnumerable<IGkvTransferProtokoll> list && list.Any())
{
var last_prot_w_daten = list.Select(x => x.IKDatenannahmestelle).Where((x) => !string.IsNullOrEmpty(x)).LastOrDefault();
if (!string.IsNullOrEmpty(last_prot_w_daten) && last_prot_w_daten != ikdatenannahmestelle)
{
return true;
}
}
return false;
}
public IEnumerable<GkvAbrechnungLight> GetGkvAbrechnungen(DateTime? startDate, DateTime? endDate, bool useInvoiceCreationDate = true)
{
if (endDate.HasValue)
endDate = endDate.Value.Date.AddDays(1).AddMilliseconds(-1);
var lCriteria = CreateCriteriaIsActive<GkvAbrechnungLight>();
if (useInvoiceCreationDate)
{
if (startDate.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvAbrechnungLight.ErstelltAm), startDate));
if (endDate.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvAbrechnungLight.ErstelltAm), endDate));
}
else
{
if (startDate.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvAbrechnungLight.AbrechnungsZeitraumEnde), startDate));
if (endDate.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvAbrechnungLight.AbrechnungsZeitraumStart), endDate));
}
return lCriteria.List<GkvAbrechnungLight>();
}
public IEnumerable<GkvTransferProtokoll> GetGkvTransferProtokollByDateRange(DateTime? start, DateTime? end)
{
var lCriteria = CreateCriteria<GkvTransferProtokoll>();
if (start.HasValue)
lCriteria.Add(Restrictions.Ge(nameof(GkvTransferProtokoll.ErstelltAm), start));
if (end.HasValue)
lCriteria.Add(Restrictions.Le(nameof(GkvTransferProtokoll.ErstelltAm), end));
return lCriteria.List<GkvTransferProtokoll>();
}
public long GetGkvParentByProtokollOid(long oid)
{
return oid;
}
public string GetGkvRawData(long oid, GkvRawDataType gkvRawData)
{
var criteria = CreateCriteria<GkvTransferProtokoll>()
.Add(Restrictions.Where<GkvTransferProtokoll>(x => x.Oid == oid));
if (gkvRawData == GkvRawDataType.Auftragsdatei)
{
criteria = criteria.SetProjection(Projections.Property(nameof(GkvTransferProtokoll.Auftragsdatei)));
}
else if (gkvRawData == GkvRawDataType.Nutzdatendatei)
{
criteria = criteria.SetProjection(Projections.Property(nameof(GkvTransferProtokoll.Nutzdatendatei)));
}
else
{
throw new ArgumentOutOfRangeException(nameof(gkvRawData), $"GkvRawDataType \'{gkvRawData}\' unbekannt.");
}
var t = criteria.List<string>().SingleOrDefault();
return t;
}
}
}