﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="4D375B0F-FAFE-4D66-82DA-9BFAF02C983B" codekey="CurrentTrainings" categoryCodekey="Trainings" name="Aktuelle Seminare" description="">
      <MetaData created="2023-06-13T15:30:36" createdBy="VIWIS" createdBy_user_id="3"/>
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Roles>
        <Role id="90" />
      </Roles>
      <command>
        IF OBJECT_ID(N'[dbo].[fn_mapTrainingStatus]') IS NOT NULL
        DROP FUNCTION [dbo].[fn_mapTrainingStatus]

        IF (NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[fn_mapTrainingStatus]')))
        EXEC(
        '
        CREATE FUNCTION [dbo].[fn_mapTrainingStatus](@status NVARCHAR(40))
        RETURNS NVARCHAR(40)
        BEGIN
        DECLARE @counts NVARCHAR(40) = ''''
        IF CHARINDEX('' '', @status, 0) > 0
        BEGIN
        SET @counts = SUBSTRING(@status, CHARINDEX('' '', @status, 0) + 1, 40)
        SET @status = SUBSTRING(@status, 0, CHARINDEX('' '', @status, 0))
        END

        SET @status = CASE
        WHEN @status like ''S00_ANY'' THEN ''Alle''
        WHEN @status like ''S10_NO_BOOKINGS'' THEN ''keine Buchungen vorhanden''
        WHEN @status like ''S15_NO_EVENT_ASSIGNED'' THEN ''zugeordnet''
        WHEN @status like ''S20_BOOKABLE'' THEN ''buchbar''
        WHEN @status like ''S25_EXPIRED'' THEN ''Buchungsfrist abgelaufen''
        WHEN @status like ''S27_IS_WAITING'' THEN ''auf Warteliste''
        WHEN @status like ''S30_BOOKED'' THEN ''gebucht''
        WHEN @status like ''S40_HAS_BOOKINGS'' THEN ''Buchungen vorhanden''
        WHEN @status like ''S50_INVITED'' THEN ''Einladung erfolgt''
        WHEN @status like ''S55_INVITATION_ACKNOWLEDGED'' THEN ''Einladung bestätigt''
        WHEN @status like ''S60_CANCELLED'' THEN ''storniert''
        WHEN @status like ''S65_TRAINING_CANCELLED'' THEN ''abgesagt''
        WHEN @status like ''S68_HAS_WAITLIST'' THEN ''Warteliste möglich''
        WHEN @status like ''S70_FULL'' THEN ''voll belegt''
        WHEN @status like ''S80_FINISHED'' THEN ''durchgeführt''
        WHEN @status like ''S82_WAS_PRESENT'' THEN ''Anwesenheit bestätigt''
        WHEN @status like ''S83_CLOSED'' THEN ''abgeschlossen''
        WHEN @status like ''S85_PARTICIPATED_NO_POLLS'' THEN ''Teilnahme bestätigt (nicht alle Feedbackbögen ausgeführt)''
        WHEN @status like ''S90_PARTICIPATED'' THEN ''Teilnahme bestätigt''
        ELSE @status END;
        RETURN @status + '' '' + @counts
        END;
        '
        )

        SELECT
        --tt.id,
        case when (Lag(tt.id, 1) OVER(ORDER BY tti.title, tt.id, te.startDate desc, te.id)=tt.id) then '' else tti.title end as 'Seminartitel',
        tti.titleForLearners as 'Seminartitel Titel für Lerner',
        tt.durationMinutes as 'Dauer in min. Seminartitel',
        tei.title as 'Titel',
        tei.titleForLearners as 'Titel für Lerner',
        case when te.id IS NULL then ''
        else case when te.isMicroTraining=1 then 'Micro-Training'
        else case when te.isVirtual=1 then 'Virtuelles Seminar'
        else case when te.isMsTeams=1 then 'MS Teams'
        else case when te.isHybrid=1 then 'Hybrides Seminar'
        else 'Seminar'
        end
        end
        end
        end
        end 'Typ',
        case when te.id IS NULL then '' else case when te.isPublished = 1 then 'ja' else 'nein' end end as 'Veröffentlicht',
        case when te.id IS NULL then '' else case when te.isArchived = 1 then 'ja' else 'nein' end end as 'Archiviert',
        FORMAT (te.startDate, 'dd.MM.yyyy HH:mm') as 'Beginn',
        FORMAT (te.endDate, 'dd.MM.yyyy HH:mm') as 'Ende',
        te.durationMinutes as 'Dauer in min. Seminartermin',
        ISNULL(tl.title, te.location) as 'Veranstaltungsort',
        ou.title as 'Veranstalter',
        ISNULL(te.seatsCount, (SELECT SUM(seatCount) FROM tblTrainingsMandatorsSeatCount WHERE training_id = te.id)) as 'Plätze',
        case when te.id IS NULL then '' else [dbo].[fn_mapTrainingStatus](dbo.[fn_GetTrainingStatusCode](te.mandator_id, te.id, GETDATE())) end as 'Status'
        --,case when te.id IS NULL then '' else dbo.[fn_GetTrainingStatusCode](te.mandator_id, te.id, GETDATE()) end as 'Status2'
        FROM tblTrainingTitles tt
        INNER JOIN tblItems tti ON tt.id = tti.id
        LEFT JOIN tblTrainings te ON tt.id = te.trainingTitle_id
        LEFT JOIN tblItems tei ON te.id = tei.id
        LEFT JOIN tblOrganisationUnits ou ON ou.id = te.organizer
        LEFT JOIN tblTrainingLocations tl ON tl.id = te.trainingLocation_id
        WHERE tt.isArchived = 0
        AND tti.deleted IS NULL
        AND tei.deleted IS NULL
        AND (te.id IS NULL OR tei.id IS NOT NULL)
        AND tt.mandator_id = @current_mandator_id
        ORDER BY tti.title, tt.id, te.startDate desc, te.id
      </command>
    </Report>
  </Reports>
</ReportsExport>