Files
BeWoPlaner/ReportImp/BetreuWoReports/BetreuwoReportCreator.cs

172 lines
5.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using BetreuWoReports.ReportObjects;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.ServiceImplementations;
using BS.Shared.DataContracts;
using DevExpress.XtraReports.UI;
namespace BeWo.BetreuWoReports
{
public class BetreuwoReportCreator : DefaultReportCreator
{
public override XtraReport CreateServiceOverviewAllCustomersReport(int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
List<ServicesOverviewRO> lROs = ServicesOverviewRO.Create(month, year, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
if (lROs.Count > 0)
{
XtraReport rootReport = null;
var reports = CreateServicesOverviewReportsForRo(lROs[0], serviceCategoryOid);
rootReport = reports[0];
rootReport.CreateDocument();
for (int i = 1; i < reports.Count; i++)
{
var lNext = reports[i];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
for (int i = 1; i < lROs.Count; i++)
{
var lNextReports = CreateServicesOverviewReportsForRo(lROs[i], serviceCategoryOid);
for (int j = 0; j < lNextReports.Count; j++)
{
var lNext = lNextReports[j];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
}
return rootReport;
}
return new XtraReport();
}
public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay)
{
var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);
var reports = CreateServicesOverviewReportsForRo(ro, serviceCategoryOid);
if (reports.Count == 1)
{
return reports[0];
}
if (reports.Count > 1)
{
var rootReport = reports[0];
rootReport.CreateDocument();
for (int i = 1; i < reports.Count; i++)
{
var lNext = reports[i];
lNext.CreateDocument();
rootReport.Pages.AddRange(lNext.Pages);
}
return rootReport;
}
return new XtraReport();
}
private IList<XtraReport> CreateServicesOverviewReportsForRo(ServicesOverviewRO ro, long? serviceCategoryOid)
{
IList<XtraReport> reports = new List<XtraReport>();
bool containsFLS = false;
bool containsALS = false;
bool containsOther = false;
if (ro.Services != null)
{
foreach (var sr in ro.Services)
{
if (sr.ServiceCategory.StartsWith("UA "))
{
containsALS = true;
}
else if (sr.ServiceCategory.StartsWith("QA "))
{
containsFLS = true;
}
else
{
containsOther = true;
}
}
}
if (containsFLS)
{
IBeWoReport<ServicesOverviewRO> flsReport = new BetreuWoReports.StundenzettelFLS();
flsReport.SetReportDataSource(ro);
reports.Add(flsReport as XtraReport);
}
if (containsALS)
{
IBeWoReport<ServicesOverviewRO> alsReport = new BetreuWoReports.StundenzettelALS();
alsReport.SetReportDataSource(ro);
reports.Add(alsReport as XtraReport);
}
if (reports.Count == 0)
{
containsOther = true;
}
if (containsOther)
{
IBeWoReport<ServicesOverviewRO> report = new BetreuWoReports.Stundenzettel();
report.SetReportDataSource(ro);
reports.Add(report as XtraReport);
}
return reports;
}
public override XtraReport CreateRosterReport(long wOid, DateTime dt, List<int> feiertage, int sortingIndex, bool aufsteigend, long creator)
{
if (TemplateOid.HasValue && TemplateOid.Value == -2)
{
return CreateRosterReportIst(wOid, dt);
}
var service = new OperationsServiceImp();
var service2 = new CustomerServiceImp();
var report = FindReportImp<RosterRO>();
var dienstEintraege = service.GetAllDienstEintraegeAsList(wOid, dt.Year, dt.Month);
var vertretungen = service.GetAllDienstvertretungenAsList(wOid, dt.Year, dt.Month);
List<long> employeeOids = new List<long>();
foreach (var eintrag in dienstEintraege)
{
if (!employeeOids.Contains(eintrag.EmployeeOid))
employeeOids.Add(eintrag.EmployeeOid);
}
foreach (var vertretung in vertretungen)
{
if (!employeeOids.Contains(vertretung.EmployeeOid))
employeeOids.Add(vertretung.EmployeeOid);
}
List<EmployeeDC> employee = new List<EmployeeDC>();
foreach (var oid in employeeOids)
employee.Add(MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID<Employee>(oid)));
var creatorEmployee = MapperFactory.EmployeeDC_Employee.MapToNewDC(DAOFactory.GenericDAO.GetByID<Employee>(creator));
//report.SetReportDataSource(RosterRO.Create(service.GetDienstEintraege(wOid, dt.Year, dt.Month), service.GetAllDienste(), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month));
report.SetReportDataSource(RosterRO.CreateNew(dienstEintraege, vertretungen, employee,
service.GetAllDienste(wOid), service2.GetAllActiveWohnheimeCompact().First(x => x.WohnheimOid == wOid), dt.Year, dt.Month, feiertage, sortingIndex, aufsteigend, creatorEmployee));
return report as XtraReport;
}
}
}