120 lines
2.7 KiB
C#
120 lines
2.7 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);
|
|
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|