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 TermineMontag { get; set; } public List TermineDienstag { get; set; } public List TermineMittwoch { get; set; } public List TermineDonnerstag { get; set; } public List TermineFreitag { get; set; } public List TermineSamstag { get; set; } public List 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(); TermineDienstag = new List(); TermineMittwoch = new List(); TermineDonnerstag = new List(); TermineFreitag = new List(); TermineSamstag = new List(); TermineSonntag = new List(); 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 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; } } } } }