using System; using System.Collections.Generic; using System.Text; using BeWo.Data.Access; using BeWo.Data.Entities; using DevExpress.XtraReports.UI; using BeWo.Report; using BeWo.Report.ReportObjects; using BS.Shared.DataContracts; using BS.Shared.Core; namespace BeWo.Report.DefaultReports { public partial class SBDCharacteristicsReport : DevExpress.XtraReports.UI.XtraReport, IBeWoReport { public SBDCharacteristicsReport() { InitializeComponent(); } public void SetReportDataSource(SBDCharacteristicsRO pRO) { StringBuilder sbSchule = new StringBuilder(); if (pRO.EnvironmentOrganisations != null) { foreach (var org in pRO.EnvironmentOrganisations) { if (org.RelationRole != null && org.RelationRole.DisplayName == "Schule") { sbSchule.AppendLine(org.Organisation.Name); sbSchule.AppendLine(org.Organisation.Street); sbSchule.Append(org.Organisation.PostalCode); sbSchule.Append(" "); sbSchule.AppendLine(org.Organisation.Town); sbSchule.AppendLine(""); sbSchule.AppendLine(org.Organisation.ContactSummaryInfo); sbSchule.AppendLine(""); var o = DAOFactory.GenericDAO.LoadByID(org.Organisation.OrganisationOid); sbSchule.Append(o.Notice); } } } CreateArbeitszeitenTable(pRO.Customer.Arbeitszeiten); lblSchule.Text = sbSchule.ToString(); this.bindingSource1.DataSource = pRO; } private void CreateArbeitszeitenTable(List zeiten) { if (zeiten != null) { foreach (var az in zeiten) { if ((!az.GueltigVon.HasValue || az.GueltigVon <= DateTime.Now) && (!az.GueltigBis.HasValue || az.GueltigBis >= DateTime.Now) && az.Eintraege != null) { SortiereArbeitszeiten(az.Eintraege); foreach (var e in az.Eintraege) { AddArbeitszeit(e); } } } } } private void SortiereArbeitszeiten(List zeiten) { zeiten.Sort( (a, b) => { var at1 = DateTimeUtils.GetAssistanceTimeComparisonDateTime(a.UhrzeitVon, a.UhrzeitBis, DateTime.Now.Date.AddDays((int)a.DayOfWeek)); var at2 = DateTimeUtils.GetAssistanceTimeComparisonDateTime(b.UhrzeitVon, b.UhrzeitBis, DateTime.Now.Date.AddDays((int)b.DayOfWeek)); return at1.Start.CompareTo(at2.Start); }); } private void AddArbeitszeit(ArbeitszeitEintragDC ae) { XRTableRow newRow = tableBetreuungszeiten.InsertRowBelow(tableBetreuungszeiten.Rows[tableBetreuungszeiten.Rows.Count - 1]); newRow.Font = new System.Drawing.Font("Arial", 10F); newRow.Cells[0].Text = String.Format("{0}", ae.Tag); newRow.Cells[1].Text = String.Format("{0} - {1}", ae.UhrzeitVon, ae.UhrzeitBis); if (ae.Employee != null) { newRow.Cells[2].Text = String.Format("{0} {1}", ae.Employee.LastName, ae.Employee.FirstName); } newRow.Cells[3].Text = ae.Notice; } } }