Files
BeWoPlaner/ReportImp/SBBMainzReports/Export/CustomExportAndPrintHelper.cs

180 lines
8.7 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Plugins;
using BeWo.Service.Reporting;
using BeWo.Service.ServiceUtils;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared.Services;
using BS.Shared.Translation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SBBMainzReports.Export
{
public class CustomExportAndPrintHelper : ExportAndPrintHelper
{
// Hier ist der Code, der die StringArrays für den Excel-Export und die Print-Versionen des Exports erstellt
public override string[] PrepareHeaderArrayForSupportConceptExport()
{
return new string[] {
"Nachname", // 0
"Vorname", // 1
"Aktenzeichen", // 5 = 2
Translator.Translate("Kostenträger"), // 4 = 3
"Art der Hilfe",
"Zonen",
Translator.Translate("Hilfeplan beantragt am"), // = 4
Translator.Translate("Hilfeplan eingereicht am"), // = 5
Translator.Translate("Hilfeplankonferenz"), // 3 = 6
Translator.Translate("Bewilligung eingetroffen am"), // = 7
"Verlängerung beantragt am", // 10 = 8
"beantragt von", // 6 = 9
"beantragt bis", // 7 = 10
"bewilligt von", // 8 = 11
"bewilligt bis", // 9 = 12
Translator.Translate("gen. FLS/Woche"), // 11 = 13
Translator.Translate("gen. FLS Gesamt"), // 12 = 14
"Stundensatz", // 13 = 15
Translator.Translate("Kostenträger Notiz"), // 14 = 16
"BetreuerIn", // 15 = 17
"Betreuung beendet am", // 16 = 18
"Kommentar", // 2 = 19
};
}
public override string[][] PrepareContentArrayForSupportConceptExport(long[] pSortedOids)
{
var lHeaderCaption = PrepareHeaderArrayForSupportConceptExport();
List<string[]> lContent = new List<string[]>();
var lSupportConcepts = DAOFactory.GenericDAO.LoadByIDs<SupportConcept>(pSortedOids);
int lContentIndex = 0;
for (int iRowCount = 0; iRowCount < lSupportConcepts.Count; iRowCount++)
{
lContent.Add(new string[lHeaderCaption.Count()]);
AddSupportConceptData(lContent[lContentIndex], lSupportConcepts[iRowCount]);
int cbCount = 0;
foreach (var iCostBearer in lSupportConcepts[iRowCount].CostBearer2SupportConceptList)
{
if (cbCount++ > 0)
{
lContent.Add(new string[lHeaderCaption.Count()]);
lContentIndex++;
}
AddSupportConceptData(lContent[lContentIndex], lSupportConcepts[iRowCount]);
lContent[lContentIndex][2] = iCostBearer.CustomerReferenceNumber;
if (iCostBearer.CostBearer != null && iCostBearer.CostBearer.Organisation != null)
{
lContent[lContentIndex][3] = iCostBearer.CostBearer.Organisation.Name;
var calc = PluginLoader.FindClass<Calculations>(iCostBearer.CostBearer.ID) ?? Calculations.GetInstance(iCostBearer.CostBearer.ID);
SupportConceptCostBearerRelDC relDC = MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(iCostBearer);
DateTime dt = DateTime.Now;
DateTime end = DateTime.MaxValue;
if (iCostBearer.ApprovedEndDate.HasValue)
end = iCostBearer.ApprovedEndDate.Value;
else if (iCostBearer.RequestedEndDate.HasValue)
end = iCostBearer.RequestedEndDate.Value;
if (dt > end)
dt = end;
if (relDC.ApprovalPeriodList.Count == 1)
{
var ap = relDC.ApprovalPeriodList[0];
if (ap.ApprovedBEPerInterval.HasValue && ap.ApprovedBEInterval.HasValue && ap.ApprovedBEInterval.Value == SupportConceptApprovalInterval.Weekly)
{
var serviceUnit = relDC.CostBearer.CostRatePeriods.GetCostRatePeriodForDate(CostRatePeriodType.MinutesPerServiceUnit, DateTime.Now);
if (serviceUnit != null)
lContent[lContentIndex][15] = String.Format("{0:0.##}", serviceUnit.GetBEInHours(ap.ApprovedBEPerInterval));
}
}
else
{
lContent[lContentIndex][15] = String.Format("{0:0.##}", calc.GetApprovedHoursPerWeek(relDC, dt, false)); // iCostBearer.ApprovedFLS.ToStringNullCheck();
}
lContent[lContentIndex][16] = String.Format("{0:0.##}", calc.GetApprovedHoursTotal(relDC, false)); //iCostBearer.ApprovedFLSTotal.ToStringNullCheck();
}
else
{
lContent[lContentIndex][3] = string.Empty;
}
lContent[lContentIndex][4] = iCostBearer.AuswahlBezeichnung;
lContent[lContentIndex][11] = iCostBearer.RequestedStartDate.DoIfNotNull(d => d.ToShortDateString());
lContent[lContentIndex][12] = iCostBearer.RequestedEndDate.DoIfNotNull(d => d.ToShortDateString());
lContent[lContentIndex][13] = iCostBearer.ApprovedStartDate.DoIfNotNull(d => d.ToShortDateString());
lContent[lContentIndex][14] = iCostBearer.ApprovedEndDate.DoIfNotNull(d => d.ToShortDateString());
if (iCostBearer.CostBearer != null)
{
lContent[lContentIndex][17] = iCostBearer.CostBearer.CostRatePeriods.MapToNewDCs()
.GetCurrentlyValidRateValue(CostRatePeriodType.HourlyRate).ToStringNullCheck();
}
lContent[lContentIndex][18] = iCostBearer.Notice;
String mainAttendant = "";
foreach (Employee2Customer e2c in lSupportConcepts[iRowCount].Customer.Employee2CustomerList)
{
foreach (ValueListEntry2Object vle2o in e2c.ValueList)
{
ValueListEntry vle = vle2o.Entry;
if (vle.SystemEntryID != null && vle.SystemEntryID.Value == SystemEntryID.EmployeeRoleMainAttendant)
{
string empName = e2c.Employee.Person.FirstName + " " + e2c.Employee.Person.LastName;
if (String.IsNullOrEmpty(mainAttendant))
mainAttendant = empName;
else
{
if (!mainAttendant.Contains(empName))
{
mainAttendant += ", " + empName;
}
}
}
}
}
lContent[lContentIndex][19] = mainAttendant;
}
lContentIndex++;
}
return lContent.ToArray();
}
private void AddSupportConceptData(string[] content, SupportConcept sc)
{
content[0] = sc.Customer.Person.LastName;
content[1] = sc.Customer.Person.FirstName;
content[5] = sc.Customer.Person.Profession;
content[6] = sc.RequisitionSendDate != null ? sc.RequisitionSendDate.Value.ToShortDateString() : string.Empty;
content[7] = sc.SupportConceptSendDate != null ? sc.SupportConceptSendDate.Value.ToShortDateString() : string.Empty;
content[8] = sc.ConferenceDate != null ? sc.ConferenceDate.Value.ToShortDateString() : string.Empty;
content[9] = sc.ApprovalDate != null ? sc.ApprovalDate.Value.ToShortDateString() : string.Empty;
content[10] = sc.RenewalSendDate != null ? sc.RenewalSendDate.Value.ToShortDateString() : string.Empty;
if (sc.Customer.TerminationDate.HasValue)
{
content[20] = String.Format("{0:dd.MM.yyyy}", sc.Customer.TerminationDate);
}
else
{
content[20] = "";
}
content[21] = sc.Notice;
}
}
}