Files
BeWoPlaner/Report/DefaultReports/WeeklyAppointmentReport.cs
2016-06-27 01:45:38 +02:00

109 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.Data.Entities;
using BeWo.Report.ReportObjects;
using DevExpress.XtraPrinting;
using DevExpress.XtraReports.UI;
namespace BeWo.Report.DefaultReports
{
public partial class WeeklyAppointmentReport : XtraReport
{
public List<SchedulerAppointment> TermineMontag { get; set; }
public List<SchedulerAppointment> TermineDienstag { get; set; }
public List<SchedulerAppointment> TermineMittwoch { get; set; }
public List<SchedulerAppointment> TermineDonnerstag { get; set; }
public List<SchedulerAppointment> TermineFreitag { get; set; }
public List<SchedulerAppointment> TermineSamstag { get; set; }
public List<SchedulerAppointment> TermineSonntag { get; set; }
public WeeklyAppointmentReport()
{
InitializeComponent();
}
public void SetReportDataSource(KalenderRO pRO)
{
// Die Woche des ersten Termins wird dargestellt:
// Wenn die Auswahl an einem Sonntag beginnt, wird die Woche des Tages dargestellt und nicht die im Kalender dargestellte Zeitliche auswahl.
bindingSource1.DataSource = pRO;
TermineMontag = new List<SchedulerAppointment>();
TermineDienstag = new List<SchedulerAppointment>();
TermineMittwoch = new List<SchedulerAppointment>();
TermineDonnerstag = new List<SchedulerAppointment>();
TermineFreitag = new List<SchedulerAppointment>();
TermineSamstag = new List<SchedulerAppointment>();
TermineSonntag = new List<SchedulerAppointment>();
pRO.Appointments = pRO.Appointments.OrderBy(a => a.StartDate).ToList();
foreach (var app in pRO.Appointments)
{
switch (app.StartDate.Value.DayOfWeek)
{
case DayOfWeek.Monday:
TermineMontag.Add(app);
break;
case DayOfWeek.Tuesday:
TermineDienstag.Add(app);
break;
case DayOfWeek.Wednesday:
TermineMittwoch.Add(app);
break;
case DayOfWeek.Thursday:
TermineDonnerstag.Add(app);
break;
case DayOfWeek.Friday:
TermineFreitag.Add(app);
break;
case DayOfWeek.Saturday:
TermineSamstag.Add(app);
break;
case DayOfWeek.Sunday:
TermineSonntag.Add(app);
break;
}
}
// Montag finden
if(pRO.Appointments.Count > 0)
{
var f = pRO.Appointments.First();
var x = (int) f.StartDate.Value.DayOfWeek;
x = x == 0 ? x + 6 : x - 1;
var monday = f.StartDate.Value.AddDays(-1*x);
}
TabelleFuellen(TermineMontag, montagTabelle);
TabelleFuellen(TermineDienstag, dienstagTabelle);
TabelleFuellen(TermineMittwoch, mittwochTabelle);
TabelleFuellen(TermineDonnerstag, donnerstagTabelle);
TabelleFuellen(TermineFreitag, freitagTabelle);
TabelleFuellen(TermineSamstag, samstagTabelle);
TabelleFuellen(TermineSonntag, sonntagTabelle);
}
public void TabelleFuellen(List<SchedulerAppointment> termine, XRTable tabelle)
{
if (termine.Count == 0)
tabelle.Visible = false;
for (var i = 0; i < termine.Count; i++)
{
var r = i == 0 ? tabelle.Rows[i] : tabelle.InsertRowBelow(tabelle.Rows[i - 1]);
r.Cells[0].Text = string.Format("{0} - {1}", termine[i].StartDate.Value.ToShortTimeString(), termine[i].EndDate.Value.ToShortTimeString());
r.Cells[1].Text = termine[i].Subject;
if (i != 0)
{
r.Borders = BorderSide.Bottom | BorderSide.Right | BorderSide.Left;
}
}
}
}
}