Neue Version 3.31 erstellt

This commit is contained in:
2026-05-07 00:46:41 +02:00
parent 5fb2425947
commit 20fd507d03
9 changed files with 141 additions and 53 deletions

View File

@@ -9116,9 +9116,8 @@ namespace BeWo.Service.ServiceImplementations
{
try
{
//var resources = DAOFactory.GenericDAO.GetActiveByIDs<Resource>(resourceOids);
var list = new List<InactivePersonDC>();
return list;
//return list;
var sql = @"select null, p.Oid as personoid, p.FirstName, p.LastName, p.DateOfBirth, a.Street as Strasse, a.PostalCode as PLZ, a.Town as Ort, p.insts from person p
left join address a on p.Addressoid = a.Oid
where (p.isactive = 0 or p.isactive = 2) and (p.SystemEntryID is null || p.SystemEntryID != -1)
@@ -9130,7 +9129,7 @@ namespace BeWo.Service.ServiceImplementations
sql = @"select c.Oid, p.Oid as personoid, p.FirstName, p.LastName, p.DateOfBirth, a.Street as Strasse, a.PostalCode as PLZ, a.Town as Ort, p.insts from customer c
join person p on c.PersonOid = p.Oid
left join address a on p.Addressoid = a.Oid
where (p.isactive = 0 or p.isactive = 2) and (p.SystemEntryID is null || p.SystemEntryID != -1)
where (c.isactive = 0 or c.isactive = 2) and (c.SystemEntryID is null || c.SystemEntryID != -1)
and c.insts < DATE_SUB(CURDATE(), INTERVAL yyyy YEAR);";
}
else if (tableId == TableID.Employee)
@@ -9138,7 +9137,7 @@ namespace BeWo.Service.ServiceImplementations
sql = @"select e.Oid, p.Oid as personoid, p.FirstName, p.LastName, p.DateOfBirth, a.Street as Strasse, a.PostalCode as PLZ, a.Town as Ort, p.insts from employee e
join person p on e.PersonOid = p.Oid
left join address a on p.Addressoid = a.Oid
where (p.isactive = 0 or p.isactive = 2) and (p.SystemEntryID is null || p.SystemEntryID != -1)
where (e.isactive = 0 or e.isactive = 2) and (e.SystemEntryID is null || e.SystemEntryID != -1)
and e.insts < DATE_SUB(CURDATE(), INTERVAL yyyy YEAR)";
}
@@ -9165,6 +9164,18 @@ namespace BeWo.Service.ServiceImplementations
list.Add(ip);
}
if (tableId == TableID.Customer)
{
list = FilterInactiveCustomers(jahreUngenutzt, list);
}
else if (tableId == TableID.Employee)
{
list = FilterInactiveCustomers(jahreUngenutzt, list);
}
else
{
list = FilterInactiveCustomers(jahreUngenutzt,list);
}
return list;
}
catch (Exception e)
@@ -9173,12 +9184,114 @@ namespace BeWo.Service.ServiceImplementations
}
}
private List<InactivePersonDC> FilterInactiveCustomers(int jahreUngenutzt, List<InactivePersonDC> list)
{
var newList = new List<InactivePersonDC>();
var dict = list
.Where(x => x.ObjectOid.HasValue)
.ToDictionary(x => x.ObjectOid.Value, x => x);
//Hole alle Hilfepläne und prüfe, ob es noch einen aktiven gibt oder einen archivierten der jünger ist als die Frist
var sql = @"select sc.Oid, sc.CustomerOid
from supportconcept sc
WHERE
sc.CustomerOid in
(select c.Oid from customer c
where (c.isactive = 0 or c.isactive = 2) and (c.SystemEntryID is null || c.SystemEntryID != -1)
and c.insts < DATE_SUB(CURDATE(), INTERVAL yyyy YEAR))";
sql = sql.Replace("yyyy", jahreUngenutzt.ToString());
var sqlresult = DAOFactory.SearchDAO.GetSqlResult(sql);
var oidlist = new List<long>();
foreach (object[] row in sqlresult)
{
oidlist.Add((long)row[0]);
}
var scList = DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(oidlist).GroupBy(s => s.Customer.Oid.Value);
foreach (var item in scList)
{
foreach (var sc in item)
{
if (sc.IsActive == ActivationTypeId.Active)
{
//HP noch aktiv->raus aus Liste
if (dict.ContainsKey(sc.Customer.Oid.Value))
{
dict.Remove(sc.Customer.Oid.Value);
}
break;
}
else if (sc.IsActive == ActivationTypeId.Archived)
{
//Prüfe ob Enddatum > Frist
if (sc.EndDate.HasValue && sc.EndDate > DateTime.Now.AddYears(jahreUngenutzt * -1))
{
if (dict.ContainsKey(sc.Customer.Oid.Value))
{
dict.Remove(sc.Customer.Oid.Value);
}
break;
}
}
}
//if (item.IsActive == ActivationTypeId.Active)
//{
// //HP noch aktiv->raus aus Liste
// if (dict.ContainsKey(item.Customer.Oid.Value))
// {
// dict.Remove(item.Customer.Oid.Value);
// }
//}
//else if (item.EndDate.HasValue)
}
//Prüfe, ob es einen ServiceRecord gibt, der innerhalb der Frist entstanden ist
sql = @"select sr.CustomerOid, max(sr.EndDate)
from servicerecord sr
WHERE
sr.EndDate > DATE_SUB(CURDATE(), INTERVAL 10 YEAR) and
sr.CustomerOid in
(select c.Oid from customer c
where (c.isactive = 0 or c.isactive = 2) and (c.SystemEntryID is null || c.SystemEntryID != -1)
and c.insts < DATE_SUB(CURDATE(), INTERVAL yyyy YEAR))
group by sr.CustomerOid";
sql = sql.Replace("yyyy", jahreUngenutzt.ToString());
sqlresult = DAOFactory.SearchDAO.GetSqlResult(sql);
oidlist = new List<long>();
foreach (object[] row in sqlresult)
{
oidlist.Add((long)row[0]);
}
foreach (var oid in oidlist)
{
//ServiceRecord der nach der innerhalb der letzten x Jahre entstanden ist -> Customer raus aus Liste
if (dict.ContainsKey(oid))
{
dict.Remove(oid);
}
}
return dict.Values.ToList();
}
private bool CheckIfInactive(int jahreUngenutzt, InactivePersonDC item)
{
throw new NotImplementedException();
}
public String DeleteInactivePersons(List<InactivePersonDC> persons, bool anonymisieren)
{
try
{
return "Diese Funktion ist zur Zeit noch in Bearbeitung. Wir arbeiten mit Hochdruck daran, die Funktionalität fertigzustellen.";
String msg = "Die gewählten Personen wurden erfolgreich gelöscht.";
TableID tid = TableID.Person;