Files
BeWoPlaner/ReportImp/SHKServiceSBD/Reports/ReportHelper.cs
2025-02-20 00:20:46 +01:00

136 lines
3.1 KiB
C#

using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SHKServiceSBD.Reports
{
class ReportHelper
{
public static Arbeitszeit GetArbeitszeit(Customer customer, DateTime start, DateTime ende)
{
return GetArbeitszeiten(customer.Arbeitszeiten, start, ende);
}
public static Arbeitszeit GetArbeitszeit(Organisation org, DateTime start, DateTime ende)
{
return GetArbeitszeiten(org.Arbeitszeiten, start, ende);
}
public static Organisation GetSchule(Customer customer)
{
foreach (var c2o in customer.Customer2OrganisationList)
{
foreach (var v2o in c2o.ValueList)
{
if (v2o.Entry.Value != null && v2o.Entry.Value.Contains("Schule"))
{
return c2o.Organisation;
}
}
}
return null;
}
private static Arbeitszeit GetArbeitszeiten(IList<Arbeitszeit> arbeitszeiten, DateTime start, DateTime ende)
{
if (arbeitszeiten != null)
{
foreach (var az in arbeitszeiten)
{
if ((!az.GueltigVon.HasValue || az.GueltigVon.Value <= ende) &&
(!az.GueltigBis.HasValue || az.GueltigBis.Value >= start))
{
return az;
}
}
}
return null;
}
public static DateTimeSpan GetArbeitszeitFuerTag(Customer customer, DateTime tag)
{
DateTimeSpan span = new DateTimeSpan();
span.StartDateTime = DateTime.MaxValue;
span.EndDateTime = DateTime.MinValue;
var az = GetArbeitszeit(customer, tag, tag);
if (az != null)
{
foreach (var ae in az.ArbeitszeitEintraege)
{
if (ReportHelper.IstAmGleichenWochentag(ae, tag))
{
String dateStr1 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitVon);
String dateStr2 = String.Format("{0:dd.MM.yyyy} {1}", tag, ae.UhrzeitBis);
DateTime date1;
DateTime date2;
if (DateTime.TryParse(dateStr1, out date1) && DateTime.TryParse(dateStr2, out date2))
{
if (date1 < span.StartDateTime)
{
span.StartDateTime = date1;
}
if (date2 > span.EndDateTime)
{
span.EndDateTime = date2;
}
}
}
}
}
return span;
}
public static bool IstAmGleichenWochentag(ArbeitszeitEintrag ae, DateTime date)
{
var day = date.DayOfWeek;
if (day == DayOfWeek.Monday && ae.Tag == AppointmentDayOfWeek.Montag)
{
return true;
}
if (day == DayOfWeek.Tuesday && ae.Tag == AppointmentDayOfWeek.Dienstag)
{
return true;
}
if (day == DayOfWeek.Wednesday && ae.Tag == AppointmentDayOfWeek.Mittwoch)
{
return true;
}
if (day == DayOfWeek.Thursday && ae.Tag == AppointmentDayOfWeek.Donnerstag)
{
return true;
}
if (day == DayOfWeek.Friday && ae.Tag == AppointmentDayOfWeek.Freitag)
{
return true;
}
if (day == DayOfWeek.Saturday && ae.Tag == AppointmentDayOfWeek.Samstag)
{
return true;
}
if (day == DayOfWeek.Sunday && ae.Tag == AppointmentDayOfWeek.Sonntag)
{
return true;
}
return false;
}
}
}