﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="319eb029-cb2b-4533-88e5-a677b2e0cb46" codekey="TrainingDaysCount" categoryCodekey="Trainings" name="Anzahl der durchgeführten Seminartage" description="">
      <MetaData created="2011-01-18T16:42:46" createdBy="VIWIS" createdBy_user_id="3" modified="2014-04-01T12:37:17" modifiedBy="Administrator ELECT" />
      <ExecutionDetails format="KeyValueResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="ExcludeMandators" mandator_id="ff99ae9d-bcb8-4a99-88c9-b7962f4b6127" isStandard="True" isUsedByMenu="True">
        <Mandator mandatorName="ADAC" />
        <Mandator mandatorName="ELECT" />
      </Mandators>
      <Parameters>
        <Parameter id="6ae269c9-c842-4fd6-96c7-0a6125828996" isRequired="False" name="Bereich" contextName="Bereich" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="fe197e91-a862-452f-978d-01b143c7d5e9" isRequired="False" name="Seminartitel abgeschlossener Seminare mit Teilnehmern" contextName="Seminartitel" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isRequired="False" name="Zeitraum" contextName="Zeitraum" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>
        -- Report ADAC: Anzahl der durchgeführten Seminartage

        /*
        declare @current_mandator_id uniqueidentifier
        select @current_mandator_id = id from tblMandators where name = 'VIWIS'

        declare @division nvarchar(256)
        set @division = 'Geschäftsstelle'

        declare @trainingTitle_id uniqueidentifier
        set @trainingTitle_id=null

        declare @dateRange_start datetime
        --set @dateRange_start = '2010-12-01'

        declare @dateRange_end datetime
        --set @dateRange_end = '2011-01-01'
        --*/

        -- The report without debugging information starts here

        -- trick to use @current_mandator_id as @mandator_id (to make ADAC and Standard version as similar as possible)
        DECLARE @mandator_id UNIQUEIDENTIFIER
        SET @mandator_id = @current_mandator_id

        if (@division='' or @division='alle')
        set @division = null

        if (@dateRange_start is not null)
        set @dateRange_start = cast(convert(NVARCHAR(32), @dateRange_start, 112) as datetime)

        if ( @dateRange_end is not null )
        begin
        set @dateRange_end  = cast(convert(NVARCHAR(32), @dateRange_end, 112) as datetime)
        set @dateRange_end = dateadd(day, 1, @dateRange_end)
        set @dateRange_end = dateadd(second, -1, @dateRange_end)
        end

        -- create a table of relevant trainingTitle ids
        -- a training title is relevant if there are users of the given mandator which participated on that traing

        create table #relevantTrainingTitles
        (
        id uniqueidentifier
        )

        insert into #relevantTrainingTitles
        select distinct(tblTrainingTitles.id)
        from tblTrainingTitles
        inner join tblTrainings on tblTrainings.trainingTitle_id=tblTrainingTitles.id
        inner join tblUserTrainingStatus on tblUserTrainingStatus.training_id=tblTrainings.id
        inner join v_Users on v_Users.intUserCn=tblUserTrainingStatus.user_id
        where
        (tblTrainings.isClosed!=0)
        and (@trainingTitle_id is null or tblTrainingTitles.id=@trainingTitle_id)
        and (@mandator_id is null or v_Users.mandator_id=@mandator_id)
        and (@division is null or v_Users.division=@division)
        and (tblUserTrainingStatus.actionclass_id&gt;=70)

        -- first create the history

        declare @displayHistory int
        set @displayHistory = 1

        if ( YEAR(@dateRange_start)=YEAR(@dateRange_end) )
        set @displayHistory = 0

        declare cursorYears cursor
        forward_only read_only
        for
        select distinct(YEAR(tblTrainings.startDate)) as 'year'
        from tblTrainings
        inner join #relevantTrainingTitles on #relevantTrainingTitles.id=tblTrainings.trainingTitle_id
        inner join tblUserTrainingStatus on tblUserTrainingStatus.training_id=tblTrainings.id
        inner join v_Users on v_Users.intUserCn=tblUserTrainingStatus.user_id
        where
        (@division is null or v_Users.division=@division)
	      and (@mandator_id is null or v_Users.mandator_id=@mandator_id)
	      and (tblUserTrainingStatus.actionclass_id&gt;=70)
        and
        tblTrainings.isClosed!=0
        order by 'year'

        declare @startYear int
        open cursorYears

        declare @historyDays nvarchar(4000)

        fetch next from cursorYears into @startYear
        WHILE (@@FETCH_STATUS &lt;&gt; -1)
        BEGIN
        declare @start datetime
        declare @end datetime

        set @start = cast(convert(nvarchar(4), @startYear) + '-01-01T00:00:00' as datetime)
        set @end = cast(convert(nvarchar(4), @startYear+1) + '-01-01T00:00:00' as datetime)

        create table #tempResult(seminarEvent_id uniqueidentifier, days INTEGER)

        if (@division IS NULL)
        BEGIN
        insert into #tempResult
        select
        tblTrainings.id as seminarEvent_id,
        datediff(day, tblTrainings.startDate, tblTrainings.endDate)+1 as days
        from tblTrainings
        inner join #relevantTrainingTitles on #relevantTrainingTitles.id=tblTrainings.trainingTitle_id
        inner join tblItems on tblTrainings.id = tblItems.id
        where
        tblTrainings.isClosed!=0
        and tblTrainings.startDate&gt;=@start
        and tblTrainings.endDate&lt;@end
        and (tblItems.deleted IS NULL)
     	  END
	      else
	      BEGIN
        insert into #tempResult
        select
        tblTrainings.id as seminarEvent_id,
        datediff(day, tblTrainings.startDate, tblTrainings.endDate)+1 as days
        from tblTrainings
        inner join #relevantTrainingTitles on #relevantTrainingTitles.id=tblTrainings.trainingTitle_id
        inner join tblUserTrainingStatus on tblUserTrainingStatus.training_id=tblTrainings.id
        inner join v_Users on v_Users.intUserCn=tblUserTrainingStatus.user_id
        inner join tblItems on tblTrainings.id = tblItems.id
        where
        (@division is null or v_Users.division=@division)
	      and (@mandator_id is null or v_Users.mandator_id=@mandator_id)
	      and (tblUserTrainingStatus.actionclass_id&gt;=70)
        and
        tblTrainings.isClosed!=0
        and tblTrainings.startDate&gt;=@start
        and tblTrainings.endDate&lt;@end
        and (tblItems.deleted IS NULL)
        END

        declare @line nvarchar(256)
        declare @countDays int

        select @countDays=SUM(days) from #tempResult

        drop table #tempResult

        set @line = CONVERT(nvarchar(4), @startYear) + ':'	+ CONVERT(nvarchar(8), @countDays)
        if ( @historyDays is null )
        set @historyDays = @line
        else
        set @historyDays = @historyDays + ' ; ' + @line

        fetch next from cursorYears into @startYear
        END

        close cursorYears
        deallocate cursorYears

        if ( @historyDays is null )
        set @displayHistory = 0


        create table #tempResult1(seminarEvent_id uniqueidentifier, days INTEGER)
        
        if (@division IS NULL)
        BEGIN
        insert into #tempResult1
        select
        tblTrainings.id,
        datediff(day, tblTrainings.startDate, tblTrainings.endDate)+1
        from tblTrainings
        inner join #relevantTrainingTitles on #relevantTrainingTitles.id=tblTrainings.trainingTitle_id
        inner join tblItems on tblTrainings.id = tblItems.id
        where
        tblTrainings.isClosed!=0
        and (@dateRange_start is null or tblTrainings.startDate&gt;=@dateRange_start)
        and (@dateRange_end is null or tblTrainings.endDate&lt;=@dateRange_end)
        and (tblItems.deleted IS NULL)
        END
        else
        BEGIN
        insert into #tempResult1
        select
        tblTrainings.id,
        datediff(day, tblTrainings.startDate, tblTrainings.endDate)+1
        from tblTrainings
        inner join #relevantTrainingTitles on #relevantTrainingTitles.id=tblTrainings.trainingTitle_id
        inner join tblUserTrainingStatus on tblUserTrainingStatus.training_id=tblTrainings.id
        inner join v_Users on v_Users.intUserCn=tblUserTrainingStatus.user_id
        inner join tblItems on tblTrainings.id = tblItems.id
        where
        (@division is null or v_Users.division=@division)
        and (@mandator_id is null or v_Users.mandator_id=@mandator_id)
        and (tblUserTrainingStatus.actionclass_id&gt;=70)
        and
        tblTrainings.isClosed!=0
        and (@dateRange_start is null or tblTrainings.startDate&gt;=@dateRange_start)
        and (@dateRange_end is null or tblTrainings.endDate&lt;=@dateRange_end)
        and (tblItems.deleted IS NULL)
        END


        if ( @displayHistory!=0 )
        select
        convert(nvarchar, GETDATE(), 104) as 'Auswertung vom:',
        sum(days) as 'Anzahl Seminartage',
        @historyDays as 'History days'
        from
        #tempResult1
        else
        select
        convert(nvarchar, GETDATE(), 104) as 'Auswertung vom:',
        sum(days) as 'Anzahl Seminartage',
        @historyDays as 'History days'
        from
        #tempResult1


        drop table #tempResult1
        drop table #relevantTrainingTitles

        -- Formatting starts here

        create table #$formating_0
        (
        tr nvarchar(128),
        col0f  nvarchar(128),
        col0v nvarchar(128),
        col1f  nvarchar(128),
        col1v nvarchar(128),
        sortOrder int
        )

        insert into #$formating_0
        select 'format info', 'cellspacing="4"', '', '', '', -1

        insert into #$formating_0
        select 'class="AdminGeneral"', 'style="width:150px"', '{key_0}', 'style="width: 200px;border:2px inset #ffffff; background-color: #c0c0c0; font-weight:bold; text-align:right"', '{value_0}', 0

        insert into #$formating_0
        select 'class="AdminGeneral"', 'style="width:150px"', '{key_1}', 'style="width: 200px;border:2px inset #ffffff; background-color: #c0c0c0; font-weight:bold; text-align:right"', '{value_1}', 1

        if ( @displayHistory!=0 )
        insert into #$formating_0
        select 'class="AdminGeneral"', 'style="width:150px"', '', 'style="width: 200px;border:2px inset #ffffff; background-color: #c0c0c0; font-weight:bold; text-align:left"', '{value_2}', 2

        select * from #$formating_0 order by sortOrder
        drop table #$formating_0
      </command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="6ae269c9-c842-4fd6-96c7-0a6125828996" isSystem="False" name="Bereich" reportParameterType_id="e7333e57-684c-4b48-93fe-fd396d5f3559" queryParameterName="@division" />
    <Parameter id="fe197e91-a862-452f-978d-01b143c7d5e9" isSystem="False" name="Seminartitel abgeschlossener Seminare mit Teilnehmern" reportParameterType_id="9cbb41bd-a203-494d-b112-eac53e8f77ea" queryParameterName="@trainingTitle_id" />
    <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isSystem="True" name="Zeitraum" reportParameterType_id="abff13be-91c3-4ee1-93a3-7292f8e013ba" queryParameterName="@dateRange" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="e7333e57-684c-4b48-93fe-fd396d5f3559" isSystem="False" name="Bereich" datatype="StringDDL" dataValueField="division" dataTextField="division">
      <query>
        SELECT DISTINCT division
        FROM v_Users
        WHERE v_Users.mandator_id = @current_mandator_id AND division IS NOT NULL AND division != ''
        ORDER BY division
      </query>
    </ParameterType>
    <ParameterType id="9cbb41bd-a203-494d-b112-eac53e8f77ea" isSystem="False" name="Seminartitel abgeschlossener Seminare mit Teilnehmern" datatype="StringDDL" dataValueField="value" dataTextField="text">
      <query>
        select tblTrainingTitles.id as value, tblItems.title as text
        from tblTrainingTitles inner join tblItems on tblTrainingTitles.id = tblItems.id
        where exists(
        select *
        from tblUserTrainingStatus
        inner join tblTrainings on tblTrainings.id=tblUserTrainingStatus.training_id
        inner join v_Users on v_Users.intUserCn=tblUserTrainingStatus.user_id
        where
        tblTrainings.trainingTitle_id=tblTrainingTitles.id and
        tblUserTrainingStatus.actionclass_id&gt;=70 and -- participated
        (v_Users.mandator_id=@current_mandator_id) and
        tblTrainings.isClosed=1
        )
        order by tblItems.title
      </query>
    </ParameterType>
    <ParameterType id="abff13be-91c3-4ee1-93a3-7292f8e013ba" isSystem="True" name="DateRange" datatype="DateRange" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>