2016-06-27 01:45:38 +02:00
using System ;
using System.Collections.Generic ;
using System.IO ;
using System.Linq ;
using System.Reflection ;
using System.Security ;
using System.Web ;
using BeWo.Service.Plugins ;
using BS.Shared ;
using BS.Shared.Core ;
using BS.Shared.DataContracts ;
using BeWo.Data ;
using BeWo.Report ;
using DevExpress.XtraPrinting ;
using DevExpress.XtraReports.UI ;
using Page = System . Web . UI . Page ;
2020-09-30 10:00:31 +02:00
using System.Globalization ;
2020-10-29 11:20:37 +01:00
using BeWo.Data.Access ;
using BeWo.Data.Entities ;
using BeWo.Service.DCEntityMapper ;
2024-11-20 15:17:13 +01:00
using BS.Shared.ReportRequests ;
2016-06-27 01:45:38 +02:00
2025-06-03 12:24:30 +02:00
using SecurityUtils = BeWo . Service . Security . SecurityUtils ;
2026-04-17 17:46:28 +02:00
using DevExpress.DataProcessing ;
2025-06-03 12:24:30 +02:00
2016-06-27 01:45:38 +02:00
namespace Host
{
2025-02-17 10:26:15 +01:00
public partial class ReportView : Page
{
private Dictionary < string , object > slicedToken ;
private AbstractReportCreator reportCreator ;
protected void Page_Load ( object sender , EventArgs e )
{
try
{
if ( ! SessionFacade . IsUserLoggedIn ( ) )
{
throw new SecurityException ( "Anmeldung erforderlich!" ) ;
}
var test = Request . Params [ "mode" ] ;
2016-06-27 01:45:38 +02:00
2026-07-14 15:41:32 +02:00
var sw = System . Diagnostics . Stopwatch . StartNew ( ) ;
2025-02-18 14:26:37 +01:00
2026-07-14 15:41:32 +02:00
var report = CreateReport ( ) ;
sw . Stop ( ) ;
Console . WriteLine ( sw . Elapsed . TotalMilliseconds ) ;
using ( var repxStream = new MemoryStream ( ) )
2025-02-17 10:26:15 +01:00
{
2025-02-18 14:26:37 +01:00
if ( Request . Params [ "mode" ] = = "pdf" )
{
report . ExportToPdf ( repxStream ) ;
2017-02-01 13:53:59 +01:00
2025-06-03 15:46:41 +02:00
Response . Clear ( ) ;
2025-02-18 14:26:37 +01:00
Response . ContentType = "application/pdf" ;
2025-06-03 15:46:41 +02:00
Response . Charset = string . Empty ;
Response . AddHeader ( "content-disposition" , "inline;filename=report.pdf" ) ;
2025-02-18 14:26:37 +01:00
}
else
{
report . PrintingSystem . SaveDocument ( repxStream , new NativeFormatOptions { Compressed = true } ) ;
2016-06-27 01:45:38 +02:00
2025-02-18 14:26:37 +01:00
//var test = new XtraReport();
//test.PrintingSystem.LoadDocument(repxStream);
}
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
var bytesToWrite = repxStream . ToArray ( ) ;
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
Response . OutputStream . Write ( bytesToWrite , 0 , bytesToWrite . Length ) ;
}
}
catch ( Exception ex )
{
2016-06-27 01:45:38 +02:00
Response . Write ( ex . Message + "\n\n" + ex . StackTrace ) ;
2025-02-17 10:26:15 +01:00
}
}
2016-06-27 01:45:38 +02:00
//Änderungen ServiceCategoryAuswahl bei Quittierungsbeleg wieder einkommentieren + testen
2025-02-17 10:26:15 +01:00
private XtraReport CreateReport ( )
{
var token = Request . Params [ "token" ] . Split ( ',' ) [ 0 ] ;
if ( SecurityUtils . CheckToken ( token , Request . Url . ToString ( ) ) )
{
2016-06-27 01:45:38 +02:00
slicedToken = SecurityUtils . sliceToken ( Request . Params [ "token" ] . Split ( ',' ) [ 0 ] , Request . Url . ToString ( ) ) ;
2025-02-17 10:26:15 +01:00
reportCreator = GetReportCreator ( ) ;
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
var lType = Utils . EnumParse < ReportTypes > ( Request . Params [ "type" ] ) ;
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
XtraReport report ;
switch ( lType )
{
case ReportTypes . ServiceInvoice :
report = CreateServiceInvoiceReport ( ) ;
2016-06-27 01:45:38 +02:00
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . Settlement :
2016-06-27 01:45:38 +02:00
report = CreateSettlementReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . ServiceOverviewSingleCustomer :
report = CreateServiceOverviewSingleCustomerReport ( ) ;
break ;
case ReportTypes . Stundenzettel :
2016-06-27 01:45:38 +02:00
report = CreateServiceOverviewSingleCustomerReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . ServiceOverviewAllCustomers :
2016-06-27 01:45:38 +02:00
return CreateServiceOverviewAllCustomersReport ( ) ;
2025-02-17 10:26:15 +01:00
case ReportTypes . ServicesOverviewNew :
report = CreateServiceOverviewNew ( ) ;
break ;
case ReportTypes . CustomerData :
2016-06-27 01:45:38 +02:00
report = CreateCustomerDataReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . ServiceRecordList :
2016-06-27 01:45:38 +02:00
report = CreateServiceRecordListReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . SupportConceptReport :
2016-06-27 01:45:38 +02:00
report = CreateSupportConceptReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . BewertungsstatistikReport :
report = CreateBewertungsstatistikReport ( ) ;
break ;
case ReportTypes . FLSReport :
2016-06-27 01:45:38 +02:00
report = CreateFlsReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . CustomerInvoice :
2016-06-27 01:45:38 +02:00
report = CreateCustomerInvoiceReport ( ) ;
break ;
2025-02-17 10:26:15 +01:00
case ReportTypes . AssessmentSheetReport :
2016-06-27 01:45:38 +02:00
report = CreateAssessmentSheetReport ( ) ;
break ;
case ReportTypes . AdditionalServiceBookingReport :
report = CreateAdditionalServiceBookingReport ( ) ;
break ;
case ReportTypes . EmployeeHourReport :
report = CreateEmployeeHourReport ( ) ;
break ;
case ReportTypes . AuslastungReport :
report = CreateAuslastungReport ( ) ;
break ;
case ReportTypes . Medikamentenverordnungsliste :
report = CreateMediVerordnungslistenReport ( ) ;
break ;
case ReportTypes . MedikamentenverordnungslisteMitZusatzfeldern :
report = CreateMediVerordnungslistenMZusatzfeldernReport ( ) ;
break ;
case ReportTypes . HistorischeMedikamentenverordnungsliste :
report = CreateHistorischeMediVerordnungslistenReport ( ) ;
break ;
case ReportTypes . Kalender : // Wird nicht mehr benötigt
2025-02-17 10:26:15 +01:00
report = CreateTestReportKalender ( ) ;
break ;
2016-06-27 01:45:38 +02:00
case ReportTypes . FinanceReport :
report = CreateFinanceReport ( ) ;
2025-02-17 10:26:15 +01:00
break ;
case ReportTypes . Jahresbericht :
report = CreateJahresbericht ( ) ;
break ;
case ReportTypes . Employee :
report = CreateEmployeeDataReport ( ) ;
break ;
case ReportTypes . Contract :
report = new XtraReport ( ) ;
break ;
case ReportTypes . NotizenKategorie :
report = CreateNotizenReport ( ) ;
break ;
case ReportTypes . SBDCharacteristics :
report = CreateSBDCharacteristicsReport ( ) ;
break ;
case ReportTypes . SBDEmployeeReport :
report = CreateSBDEmployeeReport ( ) ;
break ;
case ReportTypes . AbsenceReport :
report = CreateAbsenceReport ( ) ;
break ;
case ReportTypes . RosterReport :
report = CreateRosterReport ( ) ;
break ;
case ReportTypes . RosterReportIst :
report = CreateRosterReportIst ( ) ;
break ;
case ReportTypes . VorlagenReport :
report = CreateVorlagenReport ( ) ;
break ;
case ReportTypes . AbwesenheitsPrintReport :
report = CreateAbwesenheitsPrintReport ( ) ;
break ;
case ReportTypes . MitarbeiterKlientenReport :
report = CreateEmployeeCustomerListReport ( ) ;
break ;
case ReportTypes . HilfeplanStatistik :
report = new XtraReport ( ) ;
break ;
case ReportTypes . RatingReport :
report = CreateRatingReport ( ) ;
break ;
case ReportTypes . KilometerAuswertung :
report = CreateKilometerAuswertung ( ) ;
break ;
case ReportTypes . VertretungsPlanung :
report = CreateVertretungsPlanungReport ( ) ;
break ;
case ReportTypes . ValidationMessageReport :
report = CreateValidationMessageListReport ( ) ;
break ;
case ReportTypes . GkvAbrechnung :
report = CreateGkvAbrechnungReport ( ) ;
break ;
default :
2016-06-27 01:45:38 +02:00
report = CreateQueryReport ( ) ;
2025-02-17 10:26:15 +01:00
break ;
}
if ( report ! = null & & lType ! = ReportTypes . ServiceOverviewAllCustomers & &
lType ! = ReportTypes . ServiceInvoice )
{
if ( report . Pages . Count = = 0 )
{
report . CreateDocument ( ) ;
}
}
return report ;
}
Response . Write ( "Session ist abgelaufen! Bitte erstellen Sie den Bericht erneut. Nach Erstellen des Berichts haben Sie 10 Min. Zeit diesen auszudrucken." ) ;
return new XtraReport ( ) ;
}
private XtraReport CreateTestReportKalender ( )
{
2016-06-27 01:45:38 +02:00
var abc = Request . Params [ "r" ] . Split ( '-' ) ;
var rightsList = abc . Select ( r = > ( UserRightType ) Int32 . Parse ( r ) ) . ToList ( ) ;
//employeeOid, viewType
var datesList = new List < DateTime > ( ) ;
string datesString = Request . Params [ "d" ] ;
for ( var i = 0 ; i < datesString . Length ; i + = 8 )
{
var x = datesString . Substring ( i , 8 ) ;
datesList . Add ( new DateTime ( Convert . ToInt32 ( x . Substring ( 4 , 4 ) ) , Convert . ToInt32 ( x . Substring ( 2 , 2 ) ) , Convert . ToInt32 ( x . Substring ( 0 , 2 ) ) ) ) ;
}
2025-02-17 10:26:15 +01:00
var vt = ( AppointmentViewType ) int . Parse ( Request . Params [ "vt" ] ) ;
2016-06-27 01:45:38 +02:00
var s = DateTime . Parse ( Request . Params [ "s" ] ) ;
var e = DateTime . Parse ( Request . Params [ "e" ] ) ;
var employeeOid = long . Parse ( Request . Params [ "eOid" ] ) ;
return reportCreator . CreateKalenderReport ( employeeOid , vt , s , e , datesList , rightsList ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
private XtraReport CreateCustomerDataReport ( )
{
long customerOid = long . Parse ( Request . Params [ "cOid" ] ) ;
2016-06-27 01:45:38 +02:00
return reportCreator . CreateCustomerDataReport ( customerOid ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateCustomerInvoiceReport ( )
2025-02-17 10:26:15 +01:00
{
long invoiceOid = long . Parse ( Request . Params [ "ioid" ] ) ;
2016-06-27 01:45:38 +02:00
2025-11-17 00:47:17 +01:00
bool addQb = false ;
if ( Request . Params [ "addqb" ] ! = null & & Request . Params [ "addqb" ] = = "1" )
{
addQb = true ;
}
if ( addQb )
{
return reportCreator . CreateCustomerInvoiceReportMitQb ( invoiceOid ) ;
}
2016-06-27 01:45:38 +02:00
return reportCreator . CreateCustomerInvoiceReport ( invoiceOid ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
2025-02-17 10:26:15 +01:00
private XtraReport CreateAssessmentSheetReport ( )
{
var customerOid = long . Parse ( Request . Params [ "coid" ] ) ;
var month = Int32 . Parse ( Request . Params [ "m" ] ) ;
var year = Int32 . Parse ( Request . Params [ "y" ] ) ;
2016-06-27 01:45:38 +02:00
return reportCreator . CreateAssessmentSheetReport ( customerOid , month , year ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateAdditionalServiceBookingReport ( )
{
var addservregionOid = long . Parse ( Request . Params [ "asroid" ] ) ;
Monat month ;
Enum . TryParse ( Request . Params [ "m" ] , out month ) ;
var year = Int32 . Parse ( Request . Params [ "y" ] ) ;
return reportCreator . CreateAdditionalServiceBookingReport ( addservregionOid , month , year ) ;
}
private XtraReport CreateEmployeeHourReport ( )
{
long? employeeOid = null ;
if ( Request . Params [ "eoid" ] ! = null )
employeeOid = long . Parse ( Request . Params [ "eoid" ] ) ;
2025-02-17 10:26:15 +01:00
2017-03-14 20:27:20 +01:00
IList < long > teamOids = null ;
2025-02-17 10:26:15 +01:00
if ( Request . Params [ "toid" ] ! = null )
{
String teamOidStr = Request . Params [ "toid" ] ;
var oids = teamOidStr . Split ( ',' ) ;
teamOids = new List < long > ( ) ;
foreach ( var oidStr in oids )
{
long oid = 0 ;
if ( Int64 . TryParse ( oidStr , out oid ) )
{
teamOids . Add ( oid ) ;
}
}
}
int ansicht = 0 ;
if ( Request . Params [ "ansicht" ] ! = null )
{
ansicht = Int32 . Parse ( Request . Params [ "ansicht" ] ) ;
}
int month = Int32 . Parse ( Request . Params [ "m" ] ) ;
2017-03-14 20:27:20 +01:00
var year = Int32 . Parse ( Request . Params [ "y" ] ) ;
2025-02-17 10:26:15 +01:00
2016-06-27 01:45:38 +02:00
var start = new DateTime ( year , month , 1 ) ;
var end = start . AddMonths ( 1 ) ;
2018-06-26 17:18:59 +02:00
return reportCreator . CreateEmployeeHourReport ( employeeOid , teamOids , start , end , ansicht ) ;
2016-06-27 01:45:38 +02:00
}
private XtraReport CreateAuslastungReport ( )
{
2025-02-17 10:26:15 +01:00
long? employeeOid = null ;
if ( Request . Params [ "eoid" ] ! = null )
employeeOid = long . Parse ( Request . Params [ "eoid" ] ) ;
2016-06-27 01:45:38 +02:00
2017-03-14 20:27:20 +01:00
2025-02-17 10:26:15 +01:00
IList < long > teamOids = null ;
if ( Request . Params [ "toid" ] ! = null )
{
String teamOidStr = Request . Params [ "toid" ] ;
var oids = teamOidStr . Split ( ',' ) ;
teamOids = new List < long > ( ) ;
foreach ( var oidStr in oids )
{
long oid = 0 ;
if ( Int64 . TryParse ( oidStr , out oid ) )
{
teamOids . Add ( oid ) ;
}
}
}
2017-03-14 20:27:20 +01:00
2025-02-17 10:26:15 +01:00
int month = Int32 . Parse ( Request . Params [ "m" ] ) ;
var year = Int32 . Parse ( Request . Params [ "y" ] ) ;
2017-03-14 20:27:20 +01:00
2025-02-17 10:26:15 +01:00
var start = new DateTime ( year , month , 1 ) ;
var end = start . AddMonths ( 1 ) ;
return reportCreator . CreateAuslastungReport ( employeeOid , teamOids , start , end ) ;
2016-06-27 01:45:38 +02:00
}
private XtraReport CreateFlsReport ( )
2025-02-17 10:26:15 +01:00
{
String flsReportId = Request . Params [ "dcid" ] ;
2016-06-27 01:45:38 +02:00
String subType = Request . Params [ "subType" ] ;
return reportCreator . CreateFlsReport ( flsReportId , subType ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateQueryReport ( )
2025-02-17 10:26:15 +01:00
{
var queryOid = long . Parse ( Request . Params [ "qoid" ] ) ;
var queryReportId = Request . Params [ "dcid" ] ;
2016-06-27 01:45:38 +02:00
return reportCreator . CreateQueryReport ( queryOid , queryReportId ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateServiceInvoiceReport ( )
2025-02-17 10:26:15 +01:00
{
String dcIds = Request . Params [ "dcids" ] ;
2016-06-27 01:45:38 +02:00
long? invoiceBaseOid = null ;
if ( Request . Params [ "ibid" ] ! = null )
invoiceBaseOid = long . Parse ( Request . Params [ "ibid" ] ) ;
2025-02-17 10:26:15 +01:00
2025-11-17 00:47:17 +01:00
bool addQb = false ;
if ( Request . Params [ "addqb" ] ! = null & & Request . Params [ "addqb" ] = = "1" )
{
addQb = true ;
}
if ( addQb & & invoiceBaseOid . HasValue )
{
return reportCreator . CreateServiceInvoiceReportMitQb ( invoiceBaseOid . Value ) ;
}
2016-06-27 01:45:38 +02:00
return reportCreator . CreateServiceInvoiceReport ( dcIds , invoiceBaseOid ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateServiceOverviewAllCustomersReport ( )
{
int month = int . Parse ( this . Request . Params [ "month" ] ) ;
int year = int . Parse ( this . Request . Params [ "year" ] ) ;
long orgaOid = long . Parse ( this . Request . Params [ "orgaOid" ] ) ;
long empOid = long . Parse ( this . Request . Params [ "empOid" ] ) ;
2019-07-12 17:36:37 +02:00
2025-02-17 10:26:15 +01:00
int startDay = 1 ;
if ( Request . Params [ "start" ] ! = null )
{
startDay = int . Parse ( Request . Params [ "start" ] ) ;
}
int endDay = DateTime . DaysInMonth ( year , month ) ;
if ( Request . Params [ "end" ] ! = null )
{
endDay = int . Parse ( Request . Params [ "end" ] ) ;
}
2016-06-27 01:45:38 +02:00
long? scOid = null ;
2025-02-17 10:26:15 +01:00
if ( Request . Params [ "scOid" ] ! = null )
scOid = long . Parse ( Request . Params [ "scOid" ] ) ;
2016-06-27 01:45:38 +02:00
2020-10-19 17:22:40 +02:00
return reportCreator . CreateServiceOverviewAllCustomersReport ( month , year , orgaOid , empOid , scOid , startDay , endDay , false ) ;
2016-06-27 01:45:38 +02:00
}
private XtraReport CreateServiceOverviewSingleCustomerReport ( )
2025-02-17 10:26:15 +01:00
{
long customerOid = long . Parse ( Request . Params [ "cOid" ] ) ;
int month = int . Parse ( Request . Params [ "month" ] ) ;
int year = int . Parse ( Request . Params [ "year" ] ) ;
long orgaOid = long . Parse ( Request . Params [ "orgaOid" ] ) ;
long empOid = long . Parse ( Request . Params [ "empOid" ] ) ;
int startDay = 1 ;
if ( Request . Params [ "start" ] ! = null )
{
startDay = int . Parse ( Request . Params [ "start" ] ) ;
}
int endDay = DateTime . DaysInMonth ( year , month ) ;
if ( Request . Params [ "end" ] ! = null )
{
endDay = int . Parse ( Request . Params [ "end" ] ) ;
}
long? scOid ;
2016-06-27 01:45:38 +02:00
if ( Request . Params [ "scOid" ] ! = null )
scOid = long . Parse ( Request . Params [ "scOid" ] ) ;
else
scOid = null ;
return reportCreator . CreateServiceOverviewSingleCustomerReport ( customerOid , month , year , orgaOid , empOid , scOid , startDay , endDay ) ;
2025-02-17 10:26:15 +01:00
}
private XtraReport CreateServiceOverviewNew ( )
{
int month = int . Parse ( Request . Params [ "month" ] ) ;
int year = int . Parse ( Request . Params [ "year" ] ) ;
int filterType = int . Parse ( Request . Params [ "ft" ] ) ;
long? customerOid = null ;
if ( Request . Params [ "cOid" ] ! = null )
{
customerOid = long . Parse ( Request . Params [ "cOid" ] ) ;
}
long? teamOid = null ;
if ( Request . Params [ "tOid" ] ! = null )
{
teamOid = long . Parse ( Request . Params [ "tOid" ] ) ;
}
long? orgaOid = null ;
if ( Request . Params [ "orgaOid" ] ! = null )
{
orgaOid = long . Parse ( Request . Params [ "orgaOid" ] ) ;
}
long? empOid = null ;
if ( Request . Params [ "empOid" ] ! = null )
{
empOid = long . Parse ( Request . Params [ "empOid" ] ) ;
}
int startDay = 1 ;
if ( Request . Params [ "start" ] ! = null )
{
startDay = int . Parse ( Request . Params [ "start" ] ) ;
}
2025-10-24 01:59:17 +02:00
2025-02-17 10:26:15 +01:00
int endDay = DateTime . DaysInMonth ( year , month ) ;
if ( Request . Params [ "end" ] ! = null )
{
endDay = int . Parse ( Request . Params [ "end" ] ) ;
}
2025-10-24 01:59:17 +02:00
int endMonat = month ;
int endYear = year ;
if ( Request . Params [ "endmonth" ] ! = null )
{
endMonat = int . Parse ( Request . Params [ "endmonth" ] ) ;
}
if ( Request . Params [ "endyear" ] ! = null )
{
endYear = int . Parse ( Request . Params [ "endyear" ] ) ;
}
2025-02-17 10:26:15 +01:00
long? scOid ;
if ( Request . Params [ "scOid" ] ! = null )
scOid = long . Parse ( Request . Params [ "scOid" ] ) ;
else
scOid = null ;
2025-11-17 00:47:17 +01:00
2025-02-17 10:26:15 +01:00
//nf = nur fehlende:-)
bool nf = false ;
if ( Request . Params [ "nf" ] ! = null & & Request . Params [ "nf" ] = = "1" )
{
nf = true ;
}
2025-10-24 01:59:17 +02:00
DateTime startDate = new DateTime ( year , month , startDay ) ;
DateTime endDate = new DateTime ( endYear , endMonat , endDay ) ;
return reportCreator . CreateServiceOverviewReportNew ( ( QBFilterEnum ) filterType , customerOid , teamOid , empOid , orgaOid , scOid , startDate , endDate , nf ) ;
2025-02-17 10:26:15 +01:00
}
private XtraReport CreateServiceRecordListReport ( )
{
2016-06-27 01:45:38 +02:00
long eOid = long . Parse ( Request . Params [ "eOid" ] ) ;
long cOid = long . Parse ( Request . Params [ "cOid" ] ) ;
long scOid = long . Parse ( Request . Params [ "scOid" ] ) ;
long cb2scOid = long . Parse ( Request . Params [ "cb2scOid" ] ) ;
string isLimitedParam = Request . Params [ "l" ] ;
bool isLimited = isLimitedParam ! = null ;
return reportCreator . CreateServiceRecordListReport ( eOid , cOid , scOid , cb2scOid , isLimited , null ) ;
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateSettlementReport ( )
2025-02-17 10:26:15 +01:00
{
String dcId = Request . Params [ "dcid" ] ;
2016-06-27 01:45:38 +02:00
long? invoiceBaseOid = null ;
if ( Request . Params [ "ibid" ] ! = null )
invoiceBaseOid = long . Parse ( Request . Params [ "ibid" ] ) ;
2025-10-24 01:59:17 +02:00
bool addQb = false ;
if ( Request . Params [ "addqb" ] ! = null & & Request . Params [ "addqb" ] = = "1" )
{
addQb = true ;
}
if ( addQb )
{
return reportCreator . CreateSettlementReportMitQB ( dcId , invoiceBaseOid ) ;
}
2016-06-27 01:45:38 +02:00
return reportCreator . CreateSettlementReport ( dcId , invoiceBaseOid ) ;
2025-10-24 01:59:17 +02:00
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
private XtraReport CreateSupportConceptReport ( )
2017-03-24 10:30:18 +01:00
{
2025-02-17 10:26:15 +01:00
IList < long > c2sOids = null ;
long? eOid = null ;
long? tOid = null ;
long? catOid = null ;
int? exp = 0 ;
int arc = 0 ;
if ( Request . Params [ "c2slist" ] ! = null )
{
String oidStr = Request . Params [ "c2slist" ] ;
var oidArray = oidStr . Split ( ',' ) ;
c2sOids = new List < long > ( ) ;
foreach ( var os in oidArray )
{
long oid = 0 ;
if ( Int64 . TryParse ( os , out oid ) )
{
c2sOids . Add ( oid ) ;
}
}
}
else
{
eOid = long . Parse ( Request . Params [ "eOid" ] ) ;
tOid = long . Parse ( Request . Params [ "tOid" ] ) ;
if ( Request . Params [ "catOid" ] ! = null )
{
catOid = long . Parse ( Request . Params [ "catOid" ] ) ;
}
exp = int . Parse ( Request . Params [ "exp" ] ) ;
arc = int . Parse ( Request . Params [ "arc" ] ) ;
if ( eOid = = 0 )
{
eOid = null ;
}
if ( tOid = = 0 )
{
tOid = null ;
}
if ( catOid = = 0 )
{
catOid = null ;
}
if ( exp = = 0 )
{
exp = null ;
}
}
DateTime ? endDate = null ;
Object obj = Request . Params [ "date" ] ;
if ( obj ! = null )
{
DateTime dt = DateTime . MaxValue ;
DateTime . TryParse ( obj . ToString ( ) , out dt ) ;
endDate = dt ;
}
DateTime ? startDate = null ;
if ( Request . Params [ "start" ] ! = null )
{
DateTime dt = DateTime . MinValue ;
if ( DateTime . TryParse ( Request . Params [ "start" ] . ToString ( ) , out dt ) )
{
startDate = dt ;
}
}
return reportCreator . CreateSupportConceptReport ( c2sOids , eOid , tOid , catOid , exp , arc = = 1 , startDate , endDate ) ;
}
private XtraReport CreateBewertungsstatistikReport ( )
{
DateTime ? start = null ;
DateTime ? end = null ;
SupportConceptDC supportConcept = null ;
bool inclZeiterfassung = false ;
List < ValueListEntryDC > ziele = new List < ValueListEntryDC > ( ) ;
List < RatingDC > scZiele = new List < RatingDC > ( ) ;
2020-10-29 11:20:37 +01:00
if ( Request . Params [ "scOid" ] ! = null )
supportConcept = MapperFactory . SupportConceptDC_SupportConcept . MapToNewDC ( DAOFactory . GenericDAO . GetByID < SupportConcept > ( long . Parse ( Request . Params [ "scOid" ] ) ) ) ;
if ( Request . Params [ "start" ] ! = null )
start = DateTime . Parse ( Request . Params [ "start" ] ) ;
2024-12-17 09:52:43 +01:00
else if ( supportConcept ! = null )
2020-10-29 11:20:37 +01:00
start = supportConcept . Ratings [ 0 ] . StartDate ;
2024-12-17 09:52:43 +01:00
else
start = null ;
2020-10-29 11:20:37 +01:00
if ( Request . Params [ "end" ] ! = null )
end = DateTime . Parse ( Request . Params [ "end" ] ) ;
2024-12-17 09:52:43 +01:00
else if ( supportConcept ! = null )
2020-10-29 11:20:37 +01:00
end = supportConcept . Ratings [ supportConcept . Ratings . Count - 1 ] . StartDate ;
2024-12-17 09:52:43 +01:00
else
end = null ;
2020-10-29 11:20:37 +01:00
if ( Request . Params [ "ze" ] ! = null )
inclZeiterfassung = ( Request . Params [ "ze" ] = = "1" ) ? true : false ;
if ( Request . Params [ "goals" ] ! = null )
{
string goalOids = Request . Params [ "goals" ] . ToString ( ) ;
var oids = goalOids . Split ( ',' ) ;
var alleValueListEntries = DAOFactory . GenericDAO . GetAllActive < ValueListEntry > ( ) ;
2021-11-16 17:00:05 +01:00
if ( goalOids ! = null & & goalOids ! = "" )
2020-10-29 11:20:37 +01:00
{
2021-11-16 17:00:05 +01:00
foreach ( var oid in oids )
2020-10-29 11:20:37 +01:00
{
2021-11-16 17:00:05 +01:00
foreach ( var item in alleValueListEntries )
{
if ( long . Parse ( oid ) = = item . Oid )
ziele . Add ( MapperFactory . ValueListEntryDC_ValueListEntry . MapToNewDC ( item ) ) ;
}
2020-10-29 11:20:37 +01:00
}
}
}
if ( Request . Params [ "scgoals" ] ! = null )
{
string scGoalOids = Request . Params [ "scgoals" ] . ToString ( ) ;
2021-05-24 21:40:02 +02:00
if ( ! string . IsNullOrWhiteSpace ( scGoalOids ) )
2020-10-29 11:20:37 +01:00
{
2021-05-24 21:40:02 +02:00
var oids = scGoalOids . Split ( ',' ) ;
var alleRatingDCs =
MapperFactory . RatingDC_Rating . MapToNewDCs ( DAOFactory . GenericDAO . GetAllActive < Rating > ( ) ) ;
foreach ( var oid in oids )
2020-10-29 11:20:37 +01:00
{
2021-05-24 21:40:02 +02:00
long loid = 0 ;
if ( Int64 . TryParse ( oid , out loid ) )
{
foreach ( var dc in alleRatingDCs )
{
if ( loid = = dc . RatingOid )
scZiele . Add ( dc ) ;
}
}
2020-10-29 11:20:37 +01:00
}
}
}
2025-02-17 10:26:15 +01:00
return reportCreator . CreateBewertungsstatistikReport ( start , end , supportConcept , inclZeiterfassung , ziele , scZiele ) ;
}
2020-10-29 11:20:37 +01:00
2016-06-27 01:45:38 +02:00
private XtraReport CreateMediVerordnungslistenReport ( )
{
var mvlOid = long . Parse ( Request . Params [ "mvlOid" ] ) ;
return reportCreator . CreateMediVerordListenReport ( mvlOid ) ;
}
private XtraReport CreateMediVerordnungslistenMZusatzfeldernReport ( )
{
var mvlOid = long . Parse ( Request . Params [ "mvlOid" ] ) ;
return reportCreator . CreateMediVerordListenMZfReport ( mvlOid , true ) ;
}
private XtraReport CreateHistorischeMediVerordnungslistenReport ( )
{
var mvlOid = long . Parse ( Request . Params [ "mvlOid" ] ) ;
return reportCreator . CreateMediVerordListenReport ( mvlOid ) ;
}
private XtraReport CreateFinanceReport ( )
{
DateTime ? start = null ;
DateTime ? end = null ;
String date = Request . Params [ "start" ] ;
if ( ! String . IsNullOrEmpty ( date ) & & date . Length = = 8 )
{
DateTime dt ;
if ( DateTime . TryParse (
String . Format ( "{0}.{1}.{2}" , date . Substring ( 0 , 2 ) , date . Substring ( 2 , 2 ) , date . Substring ( 4 , 4 ) ) , out dt ) )
{
start = dt ;
}
}
date = Request . Params [ "end" ] ;
if ( ! String . IsNullOrEmpty ( date ) & & date . Length = = 8 )
{
DateTime dt ;
if ( DateTime . TryParse (
String . Format ( "{0}.{1}.{2}" , date . Substring ( 0 , 2 ) , date . Substring ( 2 , 2 ) , date . Substring ( 4 , 4 ) ) , out dt ) )
{
end = dt ;
}
}
2025-02-17 10:26:15 +01:00
bool onlyNotApproved = false ;
if ( Request . Params [ "onlyNotApproved" ] ! = null )
{
if ( Request . Params [ "onlyNotApproved" ] = = "1" )
{
onlyNotApproved = true ;
}
}
bool splitByServiceCategory = false ;
if ( Request . Params [ "splitByServiceCategory" ] ! = null )
{
if ( Request . Params [ "splitByServiceCategory" ] = = "1" )
{
splitByServiceCategory = true ;
}
}
return reportCreator . CreateFinanceReport ( start , end , splitByServiceCategory , onlyNotApproved ) ;
}
private XtraReport CreateJahresbericht ( )
{
2026-04-17 17:46:28 +02:00
int year = DateTime . Now . Year - 1 ;
if ( Request . Params [ "y" ] ! = null )
{
year = int . Parse ( Request . Params [ "y" ] ) ;
}
DateTime start = new DateTime ( year , 1 , 1 ) ;
DateTime end = new DateTime ( year , 12 , 31 ) ;
bool showOnlyApprovedSupportConcepts = true ;
bool stichtagsbezogen = true ;
if ( Request . Params [ "start" ] ! = null )
{
start = DateTime . Parse ( Request . Params [ "start" ] ) ;
}
if ( Request . Params [ "end" ] ! = null )
{
end = DateTime . Parse ( Request . Params [ "end" ] ) ;
}
if ( Request . Params [ "appr" ] ! = null )
{
showOnlyApprovedSupportConcepts = "0" . Equals ( Request . Params [ "appr" ] ) ? false : true ;
}
if ( Request . Params [ "stichtag" ] ! = null )
{
stichtagsbezogen = "0" . Equals ( Request . Params [ "stichtag" ] ) ? false : true ;
}
long? cbOid = null ;
2025-02-17 10:26:15 +01:00
if ( Request . Params [ "cb" ] ! = null )
cbOid = long . Parse ( Request . Params [ "cb" ] ) ;
long? teamOid = null ;
if ( Request . Params [ "t" ] ! = null )
teamOid = long . Parse ( Request . Params [ "t" ] ) ;
long? artOid = null ;
if ( Request . Params [ "art" ] ! = null )
artOid = long . Parse ( Request . Params [ "art" ] ) ;
2026-04-17 17:46:28 +02:00
var config = new AnnualReportConfigDC
{
CostbearerOid = cbOid ,
TeamOid = teamOid ,
CustomerCareTypeValueListEntryOid = artOid ,
StartDate = start ,
EndDate = end ,
ShowOnlyApprovedSupportConcepts = showOnlyApprovedSupportConcepts ,
StichtagsbezogenAuswerten = stichtagsbezogen
} ;
return reportCreator . CreateJahresberichtReport ( config ) ;
2025-02-17 10:26:15 +01:00
}
private XtraReport CreateEmployeeDataReport ( )
{
long oid = long . Parse ( Request . Params [ "eOid" ] ) ;
return reportCreator . CreateEmployeeDataReport ( oid ) ;
}
private XtraReport CreateNotizenReport ( )
{
long kategorieOid = long . Parse ( Request . Params [ "katOid" ] ) ;
DateTime start = DateTime . Parse ( Request . Params [ "start" ] ) ;
DateTime end = DateTime . Parse ( Request . Params [ "end" ] ) ;
return reportCreator . CreateNotizenReport ( kategorieOid , start , end ) ;
}
private XtraReport CreateSBDCharacteristicsReport ( )
{
var customerOid = long . Parse ( Request . Params [ "customerOid" ] ) ;
return reportCreator . CreateSBDCharacteristicsReport ( customerOid ) ;
}
private XtraReport CreateSBDEmployeeReport ( )
{
var oid = long . Parse ( Request . Params [ "employeeOid" ] ) ;
return reportCreator . CreateSBDEmployeeReport ( oid ) ;
}
private XtraReport CreateAbsenceReport ( )
{
DateTime dt = DateTime . ParseExact ( Request . Params [ "dt" ] , "MM.yyyy" , CultureInfo . InvariantCulture ) ;
List < long > absenceIDs = null ;
List < long > empIDs = null ;
List < long > teams = null ;
List < int > feiertage = null ;
if ( Request . Params [ "ar" ] ! = null )
absenceIDs = Request . Params [ "ar" ] . Split ( ';' ) . Select ( long . Parse ) . ToList ( ) ;
if ( Request . Params [ "et" ] ! = null )
absenceIDs = Request . Params [ "et" ] . Split ( ';' ) . Select ( long . Parse ) . ToList ( ) ;
if ( Request . Params [ "t" ] ! = null )
teams = Request . Params [ "t" ] . Split ( ';' ) . Select ( long . Parse ) . ToList ( ) ;
if ( Request . Params [ "f" ] ! = null )
feiertage = Request . Params [ "f" ] . Split ( ';' ) . Select ( int . Parse ) . ToList ( ) ;
return reportCreator . CreateAbsenceReport ( dt , absenceIDs , empIDs , teams , feiertage ) ;
}
private XtraReport CreateRosterReport ( )
{
DateTime dt = DateTime . ParseExact ( Request . Params [ "dt" ] , "dd.MM.yyyy" , CultureInfo . InvariantCulture ) ;
long wOid = int . Parse ( Request . Params [ "wid" ] ) ;
int sortIndex = int . Parse ( Request . Params [ "si" ] ) ;
bool aufsteigend = int . Parse ( Request . Params [ "order" ] ) = = 0 ? false : true ;
long creator = 1 ;
string creatorParam = Request . Params [ "creator" ] ;
if ( creatorParam ! = null )
creator = int . Parse ( Request . Params [ "creator" ] ) ;
List < int > feiertage = new List < int > ( ) ;
if ( Request . Params [ "ft" ] ! = null )
feiertage = Request . Params [ "ft" ] . Split ( ';' ) . Select ( int . Parse ) . ToList ( ) ;
return reportCreator . CreateRosterReport ( wOid , dt , feiertage , sortIndex , aufsteigend , creator ) ;
}
private XtraReport CreateRosterReportIst ( )
{
DateTime dt = DateTime . ParseExact ( Request . Params [ "dt" ] , "dd.MM.yyyy" , CultureInfo . InvariantCulture ) ;
long wOid = int . Parse ( Request . Params [ "wid" ] ) ;
List < int > feiertage = new List < int > ( ) ;
return reportCreator . CreateRosterReportIst ( wOid , dt ) ;
}
private XtraReport CreateVorlagenReport ( )
{
long template = long . Parse ( Request . Params [ "vorlage" ] ) ;
string objectOidString = Request . Params [ "obj" ] ;
string [ ] oidArray = objectOidString . Split ( ',' ) ;
List < long > objectOids = new List < long > ( ) ;
foreach ( string s in oidArray )
objectOids . Add ( long . Parse ( s ) ) ;
long table = long . Parse ( Request . Params [ "table" ] ) ;
return reportCreator . CreateVorlagenReport ( template , objectOids , table ) ;
}
private XtraReport CreateAbwesenheitsPrintReport ( )
{
string printOids = Request . Params [ "oids" ] ;
string titel = Request . Params [ "titel" ] ;
string [ ] oidArray = printOids . Split ( ',' ) ;
List < long > oidList = new List < long > ( ) ;
foreach ( var item in oidArray )
{
oidList . Add ( Convert . ToInt64 ( item ) ) ;
}
return reportCreator . CreateAbwesenheitsPrintReport ( oidList , titel ) ;
}
private XtraReport CreateEmployeeCustomerListReport ( )
{
long? oid = null ;
if ( Request . Params [ "eOid" ] ! = null )
{
oid = long . Parse ( Request . Params [ "eOid" ] ) ;
}
return reportCreator . CreateEmployeeCustomerListReport ( oid ) ;
}
private XtraReport CreateRatingReport ( )
{
long roid = 0 ;
long scoid = 0 ;
if ( Request . Params [ "rOid" ] ! = null )
{
roid = long . Parse ( Request . Params [ "rOid" ] ) ;
}
if ( Request . Params [ "scOid" ] ! = null )
{
scoid = long . Parse ( Request . Params [ "scOid" ] ) ;
}
return reportCreator . CreateRatingReport ( roid , scoid ) ;
}
private XtraReport CreateKilometerAuswertung ( )
{
DateTime start = DateTime . Now . Date ;
DateTime end = DateTime . Now . Date ;
String cOids = Request . Params [ "cOids" ] ;
String eOids = Request . Params [ "eOids" ] ;
String sdOids = Request . Params [ "sdOids" ] ;
String date = Request . Params [ "start" ] ;
if ( ! String . IsNullOrEmpty ( date ) & & date . Length = = 8 )
{
DateTime dt ;
if ( DateTime . TryParse (
String . Format ( "{0}.{1}.{2}" , date . Substring ( 0 , 2 ) , date . Substring ( 2 , 2 ) , date . Substring ( 4 , 4 ) ) , out dt ) )
{
start = dt ;
}
}
date = Request . Params [ "end" ] ;
if ( ! String . IsNullOrEmpty ( date ) & & date . Length = = 8 )
{
DateTime dt ;
if ( DateTime . TryParse (
String . Format ( "{0}.{1}.{2}" , date . Substring ( 0 , 2 ) , date . Substring ( 2 , 2 ) , date . Substring ( 4 , 4 ) ) , out dt ) )
{
end = dt ;
}
}
var serviceDescriptionOids = new List < long > ( ) ;
if ( ! String . IsNullOrEmpty ( sdOids ) )
{
serviceDescriptionOids = sdOids . Split ( ',' ) . Select ( o = > Int64 . Parse ( o ) ) . ToList ( ) ;
}
if ( ! String . IsNullOrEmpty ( cOids ) )
{
var list = cOids . Split ( ',' ) . Select ( o = > Int64 . Parse ( o ) ) . ToList ( ) ;
if ( list . Count = = 1 )
{
return reportCreator . CreateKilometerauswertung ( list [ 0 ] , serviceDescriptionOids , start , end ) ;
}
else
{
return reportCreator . CreateKilometerauswertungForAllCustomers ( list , serviceDescriptionOids , start , end ) ;
}
}
else if ( ! String . IsNullOrEmpty ( eOids ) )
{
var list = eOids . Split ( ',' ) . Select ( o = > Int64 . Parse ( o ) ) . ToList ( ) ;
if ( list . Count = = 1 )
{
return reportCreator . CreateEmployeeKilometerauswertung ( list [ 0 ] , serviceDescriptionOids , start , end ) ;
}
else
{
return reportCreator . CreateKilometerauswertungForAllEmployees ( list , serviceDescriptionOids , start , end ) ;
}
}
return new XtraReport ( ) ;
}
private XtraReport CreateVertretungsPlanungReport ( )
{
DateTime start = DateTime . Now . Date ;
int ansicht = 1 ;
return reportCreator . CreateVertretungsPlanungReport ( start , ansicht ) ;
}
private XtraReport CreateValidationMessageListReport ( )
{
DateTime start = DateTime . Now . Date ;
DateTime end = start . AddMonths ( 1 ) . AddTicks ( - 1 ) ;
return reportCreator . CreateValidationMessageListReport ( start , end ) ;
}
private XtraReport CreateGkvAbrechnungReport ( )
{
var request = GkvAbrechnungReportRequest . Parse ( Request . Params ) ;
return reportCreator . CreateGkvAbrechnungReport ( request ) ;
}
private AbstractReportCreator GetReportCreator ( )
{
long? templateOid = null ;
if ( Request . Params [ "template" ] ! = null )
{
templateOid = long . Parse ( Request . Params [ "template" ] ) ;
}
String t = slicedToken [ "tenant" ] . ToString ( ) ;
SessionFacade . Tenant = t ;
2016-06-27 01:45:38 +02:00
2023-09-25 19:03:08 +02:00
AbstractReportCreator creator = PluginLoader . FindClass < DefaultReportCreator > ( ) ;
2016-06-27 01:45:38 +02:00
if ( creator = = null )
creator = new DefaultReportCreator ( ) ;
2025-02-17 10:26:15 +01:00
creator . TemplateOid = templateOid ;
2016-06-27 01:45:38 +02:00
#if DEBUG
2020-09-23 22:10:52 +02:00
creator . TempPath = BS . Shared . Core . Utils . CreateSavePath ( AppDomain . CurrentDomain . BaseDirectory , @"demo\temp" ) ;
2016-06-27 01:45:38 +02:00
#else
2020-09-23 22:10:52 +02:00
creator . TempPath = BS . Shared . Core . Utils . CreateSavePath ( AppDomain . CurrentDomain . BaseDirectory , t + @"\temp" ) ;
2016-06-27 01:45:38 +02:00
#endif
2025-02-17 10:26:15 +01:00
return creator ;
2016-06-27 01:45:38 +02:00
}
2024-11-20 15:17:13 +01:00
2025-02-17 10:26:15 +01:00
}
2016-06-27 01:45:38 +02:00
}