172 lines
5.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|