﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="78101b92-28ed-4055-85d2-13bc42c2a345" codekey="ADAC_IDDFirstQualification" categoryCodekey="SpecialPurpose" name="Auswertung Erstqualifizierung IDD Vertreiber" description="Die Auswertung gibt für einen gewählten Zeitraum alle Nutzer mit einer IDD Erstqualifizierung für Vertreiber in diesem Zeitraum mit Tagesdatum als Liste aus.  ">
      <MetaData created="2022-07-20T14:07:11" createdBy="Administrator_LastName, Administrator_FirstName (Administrator)" createdBy_user_id="2" modified="2022-07-20T15:05:26" modifiedBy="Administrator_LastName, Administrator_FirstName (Administrator)" modifiedBy_user_id="23613" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="IncludeMandators" mandator_id="3497f0b3-ae5e-4aa5-abd3-3865c0432eba" isStandard="True" isUsedByMenu="False">
        <Mandator mandatorName="ACS" />
        <Mandator mandatorName="AND" />
        <Mandator mandatorName="BBR" />
        <Mandator mandatorName="GKS" />
        <Mandator mandatorName="HSA" />
        <Mandator mandatorName="HTH" />
        <Mandator mandatorName="MRH" />
        <Mandator mandatorName="NBA" />
        <Mandator mandatorName="NBY" />
        <Mandator mandatorName="NRH" />
        <Mandator mandatorName="NSA" />
        <Mandator mandatorName="OWL" />
        <Mandator mandatorName="PFA" />
        <Mandator mandatorName="SAS" />
        <Mandator mandatorName="SBA" />
        <Mandator mandatorName="SBY" />
        <Mandator mandatorName="SHO" />
        <Mandator mandatorName="SRL" />
        <Mandator mandatorName="WEM" />
        <Mandator mandatorName="WFA" />
        <Mandator mandatorName="WTB" />
        <Mandator mandatorName="ZentraleLerner" />
      </Mandators>
      <Parameters>
        <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isRequired="False" allowMultiSelect="False" name="Zeitraum" contextName="Zeitraum" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="bd30c1ea-c7b6-4f5a-9486-fddea91c6c59" isRequired="True" allowMultiSelect="False" name="ModuleIDD" contextName="Modul" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="21" />
      </Roles>
      <command>
		IF NOT EXISTS (SELECT * FROM sys.indexes
            WHERE object_id = OBJECT_ID(N'[dbo].[tblModuleItemsVersions]')
              AND NAME = 'TMP_tblModuleItemsVersions_module_id_version')
		BEGIN
			CREATE NONCLUSTERED INDEX [TMP_tblModuleItemsVersions_module_id_version]
			ON [dbo].[tblModuleItemsVersions] ([module_id],[version])
			INCLUDE ([item_id])
		END
		
	    CREATE TABLE #statuses
        (
	        id UNIQUEIDENTIFIER,
	        item_id UNIQUEIDENTIFIER,
	        user_id INT,
	        statusDate DATETIME,
	        valid BIT
        )
		
		INSERT INTO #statuses
        SELECT 
	        suih.id, 
	        suih.item_id, 
	        suih.user_id, 
	        suih.startDate AS statusDate,
	        0
        FROM tblStatusUserItemHistory suih
	        JOIN tblItems ON tblItems.id = suih.item_id 
	        JOIN tblMandators ON tblMandators.id = tblItems.mandator_id
        WHERE tblItems.title LIKE @moduleIDD 
	        AND status = 2

        /* mark valid green statuses with having all items new green status */
        DECLARE @user_id INT
        DECLARE cursor_users CURSOR LOCAL FORWARD_ONLY
            FOR SELECT DISTINCT user_id FROM #statuses
        OPEN cursor_users
        FETCH next FROM cursor_users INTO @user_id
        WHILE @@fetch_status = 0
            BEGIN
		        DECLARE @status_id UNIQUEIDENTIFIER
		        DECLARE @item_id UNIQUEIDENTIFIER
		        DECLARE @statusDate DATETIME
		        DECLARE @lastValidStatusDate DATETIME = '1.1.1900'
		        DECLARE @moduleItemsVersion INT

		        DECLARE cursor_statuses CURSOR LOCAL FORWARD_ONLY
			        FOR SELECT id, item_id, statusDate FROM #statuses WHERE user_id = @user_id ORDER BY statusDate
		        OPEN cursor_statuses
		        FETCH next FROM cursor_statuses INTO @status_id, @item_id, @statusDate
		        WHILE @@fetch_status = 0
			        BEGIN
				        SELECT @moduleItemsVersion = max(subVersion) FROM tblVersionMap
				         WHERE id = @item_id AND tableName='tblModuleItemsVersions' AND mainVersionCreated &lt;= @statusDate

				        IF((SELECT count(distinct mi.item_id) FROM tblModuleItemsVersions mi WHERE mi.module_id = @item_id AND version = @moduleItemsVersion)
					        &lt;=
				           (SELECT count(distinct mi.item_id) 
					          FROM tblModuleItemsVersions mi 
					          JOIN tblStatusUserItemHistory h ON mi.item_id = h.item_id AND h.user_id = @user_id
				             WHERE module_id = @item_id
					           AND mi.version = @moduleItemsVersion
					           AND h.status = 2
					           AND h.startDate &lt; @statusDate
					           AND h.startDate &gt; @lastValidStatusDate
					        )
				          )
				        BEGIN
					        UPDATE #statuses SET valid = 1 WHERE id = @status_id
					        SET @lastValidStatusDate = @statusDate
				        END
				        FETCH next FROM cursor_statuses INTO @status_id, @item_id, @statusDate
			        END
		        CLOSE cursor_statuses
		        DEALLOCATE cursor_statuses
                FETCH next FROM cursor_users INTO @user_id
            END
        CLOSE cursor_users
        DEALLOCATE cursor_users

        SELECT 
	        name AS Mandant, 
	        Vorname, 
	        Nachname, 
	        descUserCn AS Kennung, 
	        email AS 'Emailadresse', 
	        #statuses.statusDate AS 'Datum Qualifizierung'
        FROM #statuses 
	        JOIN v_users ON v_Users.intUserCn = #statuses.user_id
	        LEFT JOIN tblUsersContacts ON tblUsersContacts.user_id = intUserCn and contactType_id = 1
	        JOIN tblItems ON tblItems.id = #statuses.item_id 
	        JOIN tblMandators ON tblMandators.id = tblItems.mandator_id
        WHERE valid = 1
	        AND (@dateRange_start IS NULL OR #statuses.statusDate &gt; @dateRange_start)
	        AND (@dateRange_end IS NULL OR #statuses.statusDate &lt; @dateRange_end)
        ORDER BY Mandant, Nachname, Vorname, 'Datum Qualifizierung'

        DROP TABLE #statuses
		
		IF EXISTS (SELECT * FROM sys.indexes
            WHERE object_id = OBJECT_ID(N'[dbo].[tblModuleItemsVersions]')
              AND NAME = 'TMP_tblModuleItemsVersions_module_id_version')
		BEGIN
			DROP INDEX [TMP_tblModuleItemsVersions_module_id_version] ON [dbo].[tblModuleItemsVersions];
		END		
      </command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="d8e4595f-8bdd-4a54-9298-8f378450e6a0" isSystem="True" name="Zeitraum" reportParameterType_id="abff13be-91c3-4ee1-93a3-7292f8e013ba" queryParameterName="@dateRange" />
    <Parameter id="bd30c1ea-c7b6-4f5a-9486-fddea91c6c59" isSystem="False" name="ModuleIDD" reportParameterType_id="cee332dd-5593-4cae-8275-58409c7ade61" queryParameterName="@moduleIDD" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="abff13be-91c3-4ee1-93a3-7292f8e013ba" isSystem="True" name="DateRange" datatype="DateRange" dataValueField="" dataTextField="" />
    <ParameterType id="cee332dd-5593-4cae-8275-58409c7ade61" isSystem="False" name="ModuleNameIDD" datatype="StringDDL" dataValueField="id" dataTextField="text">
      <query>SELECT 'VES - ADAC Versicherungsexperte' AS id, 'VES - ADAC Versicherungsexperte' as text
UNION
SELECT 'Annex Vertrieb Reise' AS id, 'Annex Vertrieb Reise' as text</query>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>