﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="6b084eec-4ac6-4962-876f-232b073ad6be" codekey="ADAC_StatusAllTrainingsAllUsers" categoryCodekey="Trainings" name="Status der Seminare aller Benutzer des Mandanten" description="Listet alle Benutzer, sowie ihre Zielgruppen, und die ihnen zugeordneten Seminare, sowie das Datum, wann dieser Seminar stattfindet. ACHTUNG: Lange Ausführungszeit!">
      <MetaData created="2013-09-02T10:34:39" createdBy="Administrator Zentrale (Administrator)" createdBy_user_id="1" modified="2014-01-16T09:00:30" modifiedBy="Administrator Zentrale" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="ExcludeMandators" mandator_id="7da81670-5067-49c3-a371-379bb5dc4f11" isStandard="True" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="True" name="Mandant" contextName="Mandant" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="3a54b6f1-18ce-4f5b-96dd-7c8d958f904e" isRequired="False" name="Seminarart" contextName="Seminarart" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>
        -- Schlüssel für Code: ADAC_StatusAllTrainingsAllUsers
        -- Name:               Status aller Seminare aller Benutzer
        -- Beschreibung:       Listet alle Benutzer, sowie ihre Zielgruppen, und die ihnen zugeordneten Seminare, sowie das Datum, wann das jeweilige Seminar stattfindet. ACHTUNG: Lange Ausführungszeit!
        -- Parameterliste:     OPTIONAL: Mandator,Mandant~@mandator_id
        -- Ergebnisformat:     Tabelle
        -- Für alle Mandanten: Ja
        -- Verfügbar für:      ?

        -- For testing (@mandator_id and @workflow must be commented in, see below):
        --DECLARE @mandator_id UNIQUEIDENTIFIER
        --SET @mandator_id = (SELECT id FROM tblMandators WHERE name = 'HTH')
        --DECLARE @workflow INT
        --SET @workflow = NULL -- 0 PULL , 1 PUSH, 2 MICRO, NULL All


        -- table for the result
        DECLARE @tblResult TABLE(lastname NVARCHAR(128),
        firstname NVARCHAR(128),
        username NVARCHAR(64),
        targetGroups NVARCHAR(4000),
        trainingTitle NVARCHAR(255),
        trainingTitleTitle NVARCHAR(256),
        location NVARCHAR(255),
        startDate DATETIME,
        endDate DATETIME,
        userTrainingStatus NVARCHAR(255))

        DECLARE @curUsersAndTrainings CURSOR
        DECLARE @curTargetGroups CURSOR

        DECLARE @currentDate DATETIME
        DECLARE @user_id INT
        DECLARE @lastuser_id INT
        DECLARE @lastname NVARCHAR(128)
        DECLARE @firstname NVARCHAR(128)
        DECLARE @username NVARCHAR(64)
        DECLARE @targetGroupName NVARCHAR(256)
        DECLARE @targetGroups NVARCHAR(4000)
        DECLARE @training_id UNIQUEIDENTIFIER
        DECLARE @trainingTitle_id UNIQUEIDENTIFIER
        DECLARE @trainingTitle NVARCHAR(1024)
        DECLARE @trainingTitleTitle NVARCHAR(1024)
        DECLARE @location NVARCHAR(255)
        DECLARE @startDate DATETIME
        DECLARE @endDate DATETIME
        DECLARE @status NVARCHAR(255)
        DECLARE @userTrainingStatus INT

        SET @currentDate = GETDATE()

        SET @curUsersAndTrainings = CURSOR FORWARD_ONLY STATIC FOR
        SELECT v_Users.intUserCn as user_id,
        Nachname AS lastname,
        Vorname AS firstname,
        descUserCn AS username,
        tblTrainings.id AS training_id,
        tblTrainingTitles.id AS trainingTitle_id,
        (SELECT tblItems.title FROM tblItems WHERE tblItems.id = training_id) AS trainingTitle,
        tblItems.title AS trainingTitleTitle,
        tblTrainings.location AS location,
        tblTrainings.startDate AS startDate,
        tblTrainings.endDate AS endDate,
        userTrainingStatus
        FROM(
        SELECT tblUserTrainingStatus.user_id,
        --intUserCn AS user_id,
        tblUserTrainingStatus.training_id,
        MAX(tblUserTrainingStatus.actionclass_id) AS userTrainingStatus
        FROM tblUserTrainingStatus
        GROUP BY user_id,
        training_id) AS #userStatus
        JOIN v_Users ON #userStatus.user_id = v_Users.intUserCn
        JOIN tblTrainings ON tblTrainings.id = #userStatus.training_id
        JOIN tblTrainingTitles ON tblTrainingTitles.id = tblTrainings.trainingTitle_id
        JOIN tblItems ON tblItems.id = tblTrainingTitles.id
        WHERE v_Users.mandator_id = @mandator_id
        AND tblItems.itemType_id = 8
        AND (@workflow IS NULL OR tblTrainingTitles.workflow = @workflow
        OR (@workflow = 2 AND tblTrainings.isMicroTraining = 1))
        ORDER BY  v_Users.Nachname, v_Users.Vorname, v_Users.descUserCn, trainingTitle --ORDER BY isMicroTraining DESC


        OPEN @curUsersAndTrainings
        FETCH NEXT FROM @curUsersAndTrainings INTO @user_id, @lastname, @firstname, @username, @training_id, @trainingTitle_id, @trainingTitle, @trainingTitleTitle, @location, @startDate, @endDate, @userTrainingStatus

        WHILE(@@FETCH_STATUS = 0)
        BEGIN -- loop @curUsersAndTrainings

        IF(@lastuser_id IS NULL OR NOT @user_id = @lastuser_id) -- do this only as necessary
        BEGIN
        SET @lastuser_id = @user_id

        -- ======== create a list of target groups ========
        SET @targetGroups = '' -- initialize

        SET @curTargetGroups = CURSOR FORWARD_ONLY STATIC
        FOR SELECT ISNULL(NULLIF(titleForLearners, ''), title)AS targetGroupName
        FROM tblTargetGroups, tblUsersTargetGroups
        WHERE tblTargetGroups.id = tblUsersTargetGroups.targetGroup_id
        AND tblUsersTargetGroups.UserCn = @user_id
        ORDER BY ISNULL(titleForLearners, title)

        OPEN @curTargetGroups
        FETCH NEXT FROM @curTargetGroups INTO @targetGroupName
        WHILE(@@FETCH_STATUS = 0)
        BEGIN -- loop @curTargetGroups
        IF(NOT @targetGroupName = 'Bibliothek'
        AND NOT @targetGroupName IS NULL
        AND NOT @targetGroupName = '')
        SET @targetGroups = @targetGroups + @targetGroupName + ', '

        FETCH NEXT FROM @curTargetGroups INTO @targetGroupName
        END -- loop @curTargetGroups
        CLOSE @curTargetGroups
        DEALLOCATE @curTargetGroups

        IF(LEN(@targetGroups) &gt; 1)
        SET @targetGroups = LEFT(@targetGroups, LEN(@targetGroups) - 1)
        END

        --SET @status = (SELECT MAX(actionclass_id)
        --                 FROM tblUserTrainingStatus
        --                WHERE tblUserTrainingStatus.user_id = @user_id
        --                  AND tblUserTrainingStatus.training_id IN(
        --                      SELECT training_id
        --                        FROM tblTrainingTitles
        --                       WHERE id = @trainingTitle_id)) -- and tblUserTrainingStatus.actionclass_id = tblUserTrainingActionClasses.id)

        IF(@userTrainingStatus IS NOT NULL)
        BEGIN
        --SET @status = (SELECT codekey from tblUserTrainingActionClasses where id = @status)
        SET @status = CASE @userTrainingStatus
        WHEN 10 THEN 'Auf Warteliste'
        WHEN 20 THEN 'Gebucht'
        WHEN 30 THEN 'Eingeladen'
        WHEN 40 THEN 'Storniert'
        WHEN 50 THEN 'Zurückgesetzt'
        WHEN 60 THEN 'Einladung bestätigt'
        WHEN 70 THEN 'Anwesenheit bestätigt'
        WHEN 80 THEN 'Teilnahme bestätigt'
        END
        END
        ELSE
        SET @status = 'Undefiniert' -- ISNULL(@status,'undefiniert')

        -- ======== finally, insert into our result table ========
        INSERT INTO @tblResult(lastname,
        firstname,
        username,
        targetGroups,
        trainingTitle,
        trainingTitleTitle,
        location,
        startDate,
        endDate,
        userTrainingStatus)
        VALUES(@lastname,
        @firstname,
        @username,
        @targetGroups,
        @trainingTitle,
        @trainingTitleTitle,
        @location,
        @startDate,
        @endDate,
        @status)

        FETCH NEXT FROM @curUsersAndTrainings INTO @user_id, @lastname, @firstname, @username, @training_id, @trainingTitle_id, @trainingTitle, @trainingTitleTitle, @location, @startDate, @endDate, @userTrainingStatus
        END -- loop @@curUsersAndTrainings
        CLOSE @curUsersAndTrainings
        DEALLOCATE @curUsersAndTrainings

        --  now add external items if required
        IF(@workflow IS NULL or @workflow = 3) -- if only external items or all
        BEGIN
        insert into @tblResult
        select v_Users.Nachname as Name, v_Users.Vorname as firstname, v_Users.descUserCn as username,
        '' as targetGroups,
        tblItems.title as trainingTitle,
        tblItems.titleForLearners as trainingTitleTitle,
        '' as location,
        tblExternalItems.startdate,
        tblExternalItems.endDate,
        'nachgetragen' as userTrainingStatus
        from
        tblStatusUserItemHistory
        join tblExternalItems
        on tblExternalItems.id = tblStatusUserItemHistory.item_id
        join tblItems
        on tblItems.id = tblExternalItems.id
        join v_Users on v_Users.intUserCn = tblStatusUserItemHistory.user_id
        where
        tblItems.mandator_id = @mandator_id
        AND tblItems.itemType_id = 8
        END


        -- get the result
        SELECT lastname AS Name,
        firstname AS Vorname,
        username AS Kennung,
        targetGroups AS 'Zugeordnete Zielgruppen',
        trainingTitle AS 'Seminartitel',
        trainingTitleTitle AS 'Titel des Seminartermin',
        location AS 'Ort',
        startDate,
        endDate,
        userTrainingStatus
        FROM @tblResult
      </command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isSystem="True" name="Mandant" reportParameterType_id="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" queryParameterName="@mandator_id" />
    <Parameter id="3a54b6f1-18ce-4f5b-96dd-7c8d958f904e" isSystem="True" name="Seminarart" reportParameterType_id="325c0998-6bc6-4287-bd10-a70e90a78bd1" queryParameterName="@workflow" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" isSystem="True" name="Mandator" datatype="Mandator" dataValueField="" dataTextField="" />
    <ParameterType id="325c0998-6bc6-4287-bd10-a70e90a78bd1" isSystem="True" name="Auswahlliste Zahlen" datatype="IntegerDDL" dataValueField="Value" dataTextField="Text">
      <query>SELECT
0 AS Value,
'Pull' AS Text
UNION
SELECT
1 AS Value,
'Push' AS Text
UNION
SELECT
2 AS Value,
'Micro' AS Text
UNION
SELECT
3 AS Value,
'Nachtrag' AS Text

</query>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>