﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
	<Reports>
		<Report id="2a2d7887-17da-43f5-8688-1ff9afaaeff1" codekey="ELECT_RecertificationOverview" categoryCodekey="UserStats" name="TGM IO (V3)" description="&lt;b&gt;Please use Edge/Chrome/Firefox for best performance!&lt;/b&gt;&lt;br&gt;Report returns individual status for users of selected target group(s) and their assigned learning programs and tests.&lt;br&gt;&#xD;&#xA;&lt;a href=&quot;https://elect.munich.munichre.com/elect/default.aspx?linkTag=HowToCreateReport&amp;mandator_id=d5a90a49-e697-4aeb-8a5b-298782815490&quot; target=&quot;_blank&quot;&gt;Find &quot;How-to&quot; document and further description here&lt;/a&gt;&lt;br&gt;&#xD;&#xA;&lt;b&gt;To export results in XLS:&lt;/b&gt;&lt;br&gt;&#xD;&#xA;&lt;b&gt;1.&lt;/b&gt; Select target group(s), multi-selection possible by holding STRG/CTRL and left-click on required entries.&lt;br&gt;&#xD;&#xA;&lt;b&gt;2.&lt;/b&gt; Click &quot;Execute&quot;&lt;br&gt;&#xD;&#xA;=&gt; Dependend on number of users/items in your selection can it take several minutes to finish operation.&lt;br&gt;&#xD;&#xA;&lt;b&gt;3.&lt;/b&gt; Scroll down to bottom of page.&lt;br&gt;On the left there's button to &lt;b&gt;&quot;Export as Excel format&quot;&lt;/b&gt;. Please perform a single click on the button.&lt;br&gt;&#xD;&#xA;=&gt; Dependend on number of users/items in your selection can it take several minutes until XLS will be available for download.&lt;br&gt;&#xD;&#xA;">
			<MetaData created="2020-01-15T13:23:30" createdBy="Betz, Holger (holger.betz1)" createdBy_user_id="37276" modified="2021-05-05T18:24:35" modifiedBy="ELECT, Administrator (Administrator)" modifiedBy_user_id="2" />
			<ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="True" datesWithTime="False" extraParams="" />
			<Mandators mandatorMode="OnlyOwner" mandator_id="d5a90a49-e697-4aeb-8a5b-298782815490" mandatorName="ELECT" isStandard="False" isUsedByMenu="True" />
			<Parameters>
				<Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isRequired="True" allowMultiSelect="True" name="Zielgruppen Multiselektion" contextName="Target groups" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
			</Parameters>
			<Roles>
				<Role id="40" />
				<Role id="80" />
			</Roles>
			<command>
				--DECLARE @current_mandator_id UNIQUEIDENTIFIER
				--SET @current_mandator_id = 'D5A90A49-E697-4AEB-8A5B-298782815490'
				--DECLARE @targetGroupId TYPEINTLIST
				--INSERT INTO @targetGroupId VALUES(2946) --_TGMIO_TEST
				--DECLARE @current_user_id INT = 2
				--DECLARE @itemType NVARCHAR(50) = NULL -- Test = 0, Theme = 1, All = NULL
				--DECLARE @item_id UNIQUEIDENTIFIER = NULL
					  

				DECLARE @role_id INT
				SELECT @role_id = SecurityID FROM v_Users WHERE intUserCn = @current_user_id

				CREATE TABLE #userTargetGroups
				(
					user_id INT
				)

				CREATE TABLE #userManagers
				(
					user_id INT,
					fullName NVARCHAR(500)
				)

				INSERT INTO #userTargetGroups
				SELECT 
					tblUsersTargetGroups.UserCn
				FROM @targetGroupId AS requestedTargetGroups  --@hlpTargetGroups
					JOIN tblUsersTargetGroups ON requestedTargetGroups.value = tblUsersTargetGroups.targetGroup_id
					INNER JOIN v_Users ON v_Users.intUserCn = UserCn AND v_Users.mandator_id = @current_mandator_id AND v_Users.userStatus &lt;&gt; 2

				INSERT INTO #userManagers
				select 
					#userTargetGroups.user_id, tableUsers.FullName--dbo.fn_GetUserName(#userTargetGroups.user_id)
				FROM tblUsersOrganisationRolesUsers
					INNER JOIN #userTargetGroups ON #userTargetGroups.user_id = tblUsersOrganisationRolesUsers.userFor_id
					INNER JOIN tableUsers ON intUserCn = tblUsersOrganisationRolesUsers.userIs_id

				CREATE TABLE #Result
				(
					user_id INT,
					item_id UNIQUEIDENTIFIER,
					itemType_id INT,
					codeKey NVARCHAR(200),
					excludedInTargetGroup INT,
					overrideInitialMonths INT,
					overrideSpanMonths INT,
					certificationType INT,
					certYearlyStartYear SMALLINT,
					certYearlyInterval TINYINT,
					assignedDate DATETIME NULL,
					overrideDate DATETIME NULL,
					voluntaryOverrideDate DATETIME NULL,
					status INT NULL,
					lastPassedEver DATETIME NULL
				)
				
				INSERT INTO #Result
				SELECT
					ai.user_id,
					ai.item_id,
					ai.itemType_id,
					CASE WHEN ai.itemType_id = 0 THEN 'Test' ELSE 'Theme' END,
					0,
					i.overrideInitialMonths,
					i.overrideSpanMonths,
					i.certificationType,
					i.certYearlyStartYear,
					i.certYearlyInterval,
					NULL,
					NULL,
					NULL,
					NULL,
					NULL
				FROM v_UsersAssignedItems ai
					INNER JOIN tblItems i ON i.id = ai.item_id
				WHERE EXISTS(SELECT TOP 1 * FROM #userTargetGroups WHERE #userTargetGroups.user_id = ai.user_id)
					AND ai.itemType_id &lt;= 1

				UPDATE #Result SET excludedInTargetGroup = dbo.fn_IsUserExcludedFromRecertification(#Result.user_id, #REsult.item_id)

				UPDATE #Result
				SET 
					assignedDate = tblStatusUserItemOverride.assignedDate,
					overrideDate = tblStatusUserItemOverride.overrideDate,
					voluntaryOverrideDate = tblStatusUserItemOverride.voluntaryOverrideDate
				FROM #Result 
					INNER JOIN tblStatusUserItemOverride ON tblStatusUserItemOverride.user_id = #Result.user_id AND 
					tblStatusUserItemOverride.item_id = #Result.item_id

				UPDATE #Result
				SET 
					status = -1,
					lastPassedEver = NULL
				FROM #Result
				WHERE NOT EXISTS(SELECT *
					FROM tblStatusUserItemHistory
					WHERE user_id = #Result.user_id AND item_id = #Result.item_id)

				-- checking for last status information for the users with endDate NULL and not overwritten
				-- so we also get the lastPassedDate
				PRINT 'GETTING GREEN STATUS AND LAST PASSED EVER'
				UPDATE #Result
				SET 
					status = suih.status,
					lastPassedEver = suih.startDate
				FROM #Result
					INNER JOIN tblStatusUserItemHistory suih ON suih.user_id = #Result.user_id
					AND suih.item_id = #Result.item_id
					AND suih.endDate IS NULL
					AND suih.status = 2
					AND suih.overrideDate IS NULL
					AND suih.voluntaryOverrideDate IS NULL

				-- if there are not entries with status available get them via status calculation
				IF EXISTS(SELECT *
					FROM #Result
					WHERE #Result.status IS NULL)
				BEGIN
					-- for those entries without status we have to take the mainversion of the item
					PRINT 'GETTIG MISSING STATUSES'
					UPDATE #Result
					SET 
						status = ISNULL(dbo.fn_GetUserItemStatus(user_id, #Result.item_id), 0)
					FROM #Result
					WHERE #Result.status IS NULL
				END

				DECLARE @currentYear INT = YEAR(GETDATE())

				;WITH CTE AS 
				(
				SELECT 
					#Result.*,
					customAttribute1 as Location,
					CASE WHEN status = -1 THEN NULL
					ELSE CASE
						WHEN lastPassedEver IS NULL THEN dbo.fn_GetUserPlainModuleItemLastPassedEver(#Result.user_id, #Result.item_id)
						ELSE lastPassedEver
						END
					END AS lastPassedEverCalculated,
					dbo.fn_GetUserItemStatusWillOverrideDate(#Result.user_id, #Result.item_id) AS willOverrideDate
				FROM #Result
					LEFT JOIN tblUserCustomAttributes on  tblUserCustomAttributes.user_id = #Result.user_id
				)
				SELECT 
					user_id,
					Location,
					codekey,
					itemType_id,
					item_id,
					lastPassedEver,
					CASE ISNULL(NULLIF(status, -1), 0)
						WHEN 0 THEN 'not attempted'
						WHEN 1 THEN 'in progress'
						WHEN 2 THEN 
							CASE itemType_id
							WHEN 0 THEN 'passed'
							WHEN 1 THEN 'completed'
							END
						WHEN 3 THEN 'failed'
					END AS ActualLearningStatus,
					CASE WHEN certificationType IS NULL OR excludedInTargetGroup = 1 THEN 'No' ELSE 'Yes' END AS RecertificationYesNo,
					CASE WHEN (certificationType IS NULL OR certificationType &gt; 1 AND (certYearlyStartYear IS NULL OR certYearlyInterval IS NULL)) THEN ''
						ELSE CASE WHEN certificationType = 3 THEN -- yearly once
							FORMAT(DATEFROMPARTS(certYearlyStartYear, 1, 1), 'dd.MM.yy') + ' - ' +
							FORMAT(DATEFROMPARTS(certYearlyStartYear + certYearlyInterval - 1, 12, 31), 'dd.MM.yy') 
							ELSE CASE WHEN certificationType = 2 THEN -- yearly repeated
								FORMAT(DATEFROMPARTS(@currentYear - ((@currentYear - certYearlyStartYear) % certYearlyInterval), 1, 1), 'dd.MM.yy') + ' - ' +
								FORMAT(DATEFROMPARTS(@currentYear - ((@currentYear - certYearlyStartYear) % certYearlyInterval) + certYearlyInterval - 1, 12, 31), 'dd.MM.yy') 
								ELSE 
									FORMAT(ISNULL(lastPassedEver, assignedDate), 'dd.MM.yy') + ' - ' +
									FORMAT(willOverrideDate, 'dd.MM.yy') 
								END
							END
					END 
					as Recertificationperiod,
					CASE WHEN ISNULL(certificationType, 0) &gt; 0 
					THEN
						CASE WHEN overrideDate IS NULL 
						THEN
							CASE WHEN status=2 THEN 'valid'
							ELSE CASE WHEN willOverrideDate &gt; GETDATE() THEN 'Not yet completed' ELSE 'invalid' END
							END
						ELSE 'invalid'
						END
					ELSE NULL
					END AS RecertificationStatus,
					CASE WHEN status = -1 OR lastPassedEverCalculated IS NULL THEN 
						CASE WHEN ISNULL(overrideInitialMonths, 0) &gt; 0 AND excludedInTargetGroup = 0 THEN 
							FORMAT(DATEADD(MONTH, overrideInitialMonths, assignedDate), 'dd MMMM yyyy')
						ELSE NULL -- no recertification information for this item for this user
						END
					ELSE CASE WHEN lastPassedEverCalculated IS NOT NULL
							AND excludedInTargetGroup = 0
							AND ISNULL(overrideInitialMonths, 0) &gt; 0 THEN 
							FORMAT(DATEADD(MONTH, overrideSpanMonths, lastPassedEverCalculated), 'dd MMMM yyyy')
						ELSE NULL -- no recertification information for this item for this user
						END
					END AS ValidUntil,
					FORMAT(assignedDate, 'dd MMMM yyyy') as AssignedSince,
					certificationType, certYearlyStartYear, certYearlyInterval,
					excludedInTargetGroup
				INTO #allContents
				FROM CTE

				-- First sheet: all contents with status bigger than 0 and assigned to the selected users by selected TG
				IF @role_id IN (40, 100)
				BEGIN
					SELECT  
						v_UsersWithData.DescUserCn 'Personalnummer',
						v_UsersWithData.Nachname as 'Last name',
						v_UsersWithData.Vorname as 'First name',
						v_UsersWithData.email as 'Email',
						Location,
						v_UsersWithData.division AS Department,
						CASE WHEN v_Users.userStatus = 1 THEN 'Active' ELSE CASE WHEN v_Users.userStatus = 3 THEN 'Absent' ELSE 'Unknown' END END AS 'Status',
						ISNULL(#userManagers.fullName,'') AS 'Manager',
						codekey AS 'Item type',
						--itemTitle AS Baustein,
						ISNULL(tblItems.titleForLearners, tblItems.title) AS 'Item title',
						ISNULL(tblThemes.learningDuration,0) AS 'Learning Time',
						lastPassedEver AS 'Most recently performed successfully',
						ActualLearningStatus AS 'Actual learning status',
						RecertificationYesNo AS 'Recertification Yes/No',
						ValidUntil AS 'Valid until',
						RecertificationStatus 'Recertification status',
						--CONVERT(VARCHAR, assignedDate, 106) as 'assigned since'
						AssignedSince as 'assigned since'
					INTO #tempSheet1
					FROM #allContents
						INNER JOIN v_Users ON v_Users.intUserCn = #allContents.user_id
						INNER JOIN tblItems ON tblItems.id = item_id
						LEFT JOIN tblThemes ON tblThemes.id = item_id
						LEFT JOIN #userManagers ON #userManagers.user_id = #allContents.user_id
            LEFT JOIN v_UsersWithData ON v_UsersWithData.intUserCn = #allContents.user_id
					WHERE ActualLearningStatus &lt;&gt; 'not attempted'
					ORDER BY v_UsersWithData.Nachname, v_UsersWithData.Vorname, User, tblItems.itemType_id, ISNULL(tblItems.titleForLearners, tblItems.title)
					
					SELECT 'All items of all users assigned to your target group(s)' as 'Personalnummer', 
							null as 'Last name', 
							null as 'First name', 
							null as 'Email',
							null as 'Location', 
							null as 'Department', 
							null as 'Status', 
							null as 'Manager', 
							null as 'Item type', 
							null as 'Item title', 
							null as 'Learning Time', 
							null as 'Most recently performed successfully',
							null as 'Actual learning status', 
							null as 'Recertification Yes/No', 
							null as 'Valid until', 
							null as 'Recertification status', 
							null as 'assigned since'
						UNION ALL
					SELECT * FROM #tempSheet1
					
					DROP TABLE #tempSheet1
				END
				
				IF @role_id IN (40, 80, 100)
				BEGIN
					-- Second sheet: All items with a current recertification obligation that are assigned to the users of your target group(s).
					SELECT  
						v_UsersWithData.DescUserCn 'Personalnummer',
						v_UsersWithData.Nachname as 'Last name',
						v_UsersWithData.Vorname as 'First name',
						v_UsersWithData.email as 'Email',
						Location,
						v_UsersWithData.division AS Department,
						CASE WHEN v_Users.userStatus = 1 THEN 'Active' ELSE CASE WHEN v_Users.userStatus = 3 THEN 'Absent' ELSE 'Unknown' END END AS 'Status',
						ISNULL(#userManagers.fullName,'') AS 'Manager',
						codekey AS 'Item type',
						ISNULL(tblItems.titleForLearners, tblItems.title) AS 'Item title',
						ISNULL(tblThemes.learningDuration,0) AS 'Learning Time',
						lastPassedEver AS 'Most recently performed successfully',
						ActualLearningStatus AS 'Actual learning status',
						RecertificationYesNo AS 'Recertification Yes/No',
						CASE WHEN #allContents.certificationType IS NULL THEN '' 
							ELSE CASE WHEN #allContents.certificationType = 1 THEN 'Fixed interval' 
								ELSE CASE WHEN #allContents.certificationType = 3 THEN 'Calendar yearly once' 
									ELSE 'Calendar yearly recurring' 
									END 
								END 
						END AS 'Recertificationtype',
						Recertificationperiod,
						RecertificationStatus 'Recertification status',
						AssignedSince as 'assigned since'
					INTO #tempSheet2
					FROM #allContents
						INNER JOIN v_Users ON v_Users.intUserCn = #allContents.user_id
						INNER JOIN tblItems ON tblItems.id = item_id
						LEFT JOIN tblThemes ON tblThemes.id = item_id
						LEFT JOIN #userManagers ON #userManagers.user_id = #allContents.user_id
            LEFT JOIN v_UsersWithData ON v_UsersWithData.intUserCn = #allContents.user_id
					WHERE #allContents.certificationType IS NOT NULL
						AND (RecertificationYesNo = 'Yes' AND excludedInTargetGroup = 0)
						-- must be in current certification period
						AND (#allContents.certificationType=1 OR																								-- fixed
							 #allContents.certificationType=2 AND #allContents.certYearlyStartYear &lt;= @currentYear	OR										-- yearly repeated
							 #allContents.certificationType=3 AND #allContents.certYearlyStartYear + #allContents.certYearlyInterval - 1 &gt;= @currentYear		-- yearly once
							 AND #allContents.certYearlyStartYear &lt;= @currentYear
							)
					ORDER BY v_UsersWithData.Nachname, v_UsersWithData.Vorname, User, tblItems.itemType_id, ISNULL(tblItems.titleForLearners, tblItems.title)

					SELECT 'All items with a current recertification obligation that are assigned to the users of your target group(s).' as 'Personalnummer', 
							null as 'Last name', 
							null as 'First name', 
							null as 'Email',
							null as 'Location', 
							null as 'Department', 
							null as 'Status', 
							null as 'Manager', 
							null as 'Item type', 
							null as 'Item title', 
							null as 'Learning Time', 
							null as 'Most recently performed successfully',
							null as 'Actual learning status', 
							null as 'Recertification Yes/No', 
							null as 'Recertificationtype', 
							null as 'Recertificationperiod', 
							null as 'Recertification status', 
							null as 'assigned since'
						UNION ALL
					SELECT * FROM #tempSheet2
					
					DROP TABLE #tempSheet2

					-- Third sheet: All items that are assigned to the users of your target group(s) and for which recertification was or will be mandatory in the future.
					-- remove not needed entries
					DELETE FROM #allContents
					WHERE #allContents.certificationType IS NULL 
					   OR RecertificationYesNo = 'No'
					   OR excludedInTargetGroup = 1
					   OR NOT EXISTS(
						SELECT 1 FROM tblModuleItems mi 
						 INNER JOIN tblItems im ON im.id = mi.module_id 
						 WHERE mi.item_id = #allContents.item_id
						   AND im.title = 'CO Auswertung'
						)
						
					-- add 2 previous period results for yearly recertification items
					SELECT user_id, item_id, 
						dbo.fn_GetCalendarYearlyPeriodStartYear(@currentYear, certYearlyStartYear, certYearlyInterval) currentPeriodStartYear,
						dbo.fn_GetCalendarYearlyPeriodStartYear(dbo.fn_GetCalendarYearlyPeriodStartYear(@currentYear, certYearlyStartYear, certYearlyInterval)-certYearlyInterval, certYearlyStartYear, certYearlyInterval) prevPeriodStartYear,
						dbo.fn_GetCalendarYearlyPeriodStartYear(dbo.fn_GetCalendarYearlyPeriodStartYear(@currentYear, certYearlyStartYear, certYearlyInterval)-2*certYearlyInterval, certYearlyStartYear, certYearlyInterval) prevPrevPeriodStartYear
					INTO #yearlyReoccuring
					FROM #allContents 
					WHERE certificationType = 2
					--SELECT * FROM #yearlyReoccuring 
					
					-- insert previous certification period
					INSERT INTO #allContents
					SELECT 
						#Result.user_id,
						customAttribute1 as Location,
						codekey,
						itemType_id,
						#Result.item_id,
						lastPassedEver,
						CASE ISNULL(NULLIF(status, -1), 0)
							WHEN 0 THEN 'not attempted'
							WHEN 1 THEN 'in progress'
							WHEN 2 THEN 
								CASE itemType_id
								WHEN 0 THEN 'passed'
								WHEN 1 THEN 'completed'
								END
							WHEN 3 THEN 'failed'
						END AS ActualLearningStatus,
						CASE WHEN certificationType IS NULL OR excludedInTargetGroup = 1 THEN 'No' ELSE 'Yes' END AS RecertificationYesNo,
						FORMAT(DATEFROMPARTS(prevPeriodStartYear, 1, 1), 'dd.MM.yy') + ' - ' +
						FORMAT(DATEFROMPARTS(prevPeriodStartYear + certYearlyInterval - 1, 12, 31), 'dd.MM.yy') 
						as Recertificationperiod,
						CASE WHEN EXISTS(SELECT 1 FROM tblStatusUserItemHistory 
										 WHERE status = 2 and item_id=#Result.item_id and user_id=#Result.user_id and 
										 startDate &gt; DATEFROMPARTS(prevPeriodStartYear, 1, 1) and startDate &lt; DATEFROMPARTS(prevPeriodStartYear+certYearlyInterval, 1, 1)) 
							THEN 'valid'
							ELSE 'invalid'
						END AS RecertificationStatus,
						NULL AS ValidUntil,
						FORMAT(assignedDate, 'dd MMMM yyyy') as AssignedSince,
						certificationType,certYearlyStartYear,certYearlyInterval,
						excludedInTargetGroup
				   FROM #Result
				  INNER JOIN #yearlyReoccuring ON #yearlyReoccuring.user_id = #Result.user_id AND #yearlyReoccuring.item_id = #Result.item_id
				   LEFT JOIN tblUserCustomAttributes on  tblUserCustomAttributes.user_id = #Result.user_id
				  WHERE prevPeriodStartYear IS NOT NULL

					-- insert 2nd previous certification period
					INSERT INTO #allContents
					SELECT 
						#Result.user_id,
						customAttribute1 as Location,
						codekey,
						itemType_id,
						#Result.item_id,
						lastPassedEver,
						CASE ISNULL(NULLIF(status, -1), 0)
							WHEN 0 THEN 'not attempted'
							WHEN 1 THEN 'in progress'
							WHEN 2 THEN 
								CASE itemType_id
								WHEN 0 THEN 'passed'
								WHEN 1 THEN 'completed'
								END
							WHEN 3 THEN 'failed'
						END AS ActualLearningStatus,
						CASE WHEN certificationType IS NULL OR excludedInTargetGroup = 1 THEN 'No' ELSE 'Yes' END AS RecertificationYesNo,
						FORMAT(DATEFROMPARTS(prevPrevPeriodStartYear, 1, 1), 'dd.MM.yy') + ' - ' +
						FORMAT(DATEFROMPARTS(prevPrevPeriodStartYear + certYearlyInterval - 1, 12, 31), 'dd.MM.yy') 
						as Recertificationperiod,
						CASE WHEN EXISTS(SELECT 1 FROM tblStatusUserItemHistory 
										 WHERE status = 2 and item_id=#Result.item_id and user_id=#Result.user_id and 
										 startDate &gt; DATEFROMPARTS(prevPrevPeriodStartYear, 1, 1) and startDate &lt; DATEFROMPARTS(prevPrevPeriodStartYear+certYearlyInterval, 1, 1)) 
							THEN 'valid'
							ELSE 'invalid'
						END AS RecertificationStatus,
						NULL AS ValidUntil,
						FORMAT(assignedDate, 'dd MMMM yyyy') as AssignedSince,
						certificationType,certYearlyStartYear,certYearlyInterval,
						excludedInTargetGroup
				   FROM #Result
				  INNER JOIN #yearlyReoccuring ON #yearlyReoccuring.user_id = #Result.user_id AND #yearlyReoccuring.item_id = #Result.item_id
				   LEFT JOIN tblUserCustomAttributes on  tblUserCustomAttributes.user_id = #Result.user_id
				  WHERE prevPrevPeriodStartYear IS NOT NULL

					SELECT 
						v_UsersWithData.DescUserCn 'Personalnummer',
						v_UsersWithData.Nachname as 'Last name',
						v_UsersWithData.Vorname as 'First name',
						v_UsersWithData.email as 'Email',
						Location,
						v_UsersWithData.division AS Department,
						CASE WHEN v_Users.userStatus = 1 THEN 'Active' ELSE CASE WHEN v_Users.userStatus = 3 THEN 'Absent' ELSE 'Unknown' END END AS 'Status',
						ISNULL(#userManagers.fullName,'') AS 'Manager',
						codekey AS 'Item type',
						ISNULL(tblItems.titleForLearners, tblItems.title) AS 'Item title',
						ISNULL(tblThemes.learningDuration,0) AS 'Learning Time',
						lastPassedEver AS 'Most recently performed successfully',
						ActualLearningStatus AS 'Actual learning status',
						CASE WHEN RecertificationYesNo = 'Yes' AND excludedInTargetGroup = 0 THEN 'Yes' ELSE 'No' END AS 'Recertification Yes/No',
						CASE WHEN #allContents.certificationType = 1 THEN 'Fixed interval' ELSE CASE WHEN #allContents.certificationType = 3 THEN 'Calendar yearly once' ELSE 'Calendar yearly recurring' END END AS 'Recertificationtype',
						Recertificationperiod,
						RecertificationStatus 'Recertification status',
						AssignedSince as 'assigned since'
					INTO #tempSheet3
					FROM #allContents
						INNER JOIN v_Users ON v_Users.intUserCn = #allContents.user_id
						INNER JOIN tblItems ON tblItems.id = #allContents.item_id
						INNER JOIN tblModuleItems ON tblModuleItems.item_id = #allContents.item_id
						INNER JOIN tblItems im ON im.id = tblModuleItems.module_id AND im.title = 'CO Auswertung'
						LEFT JOIN tblThemes ON tblThemes.id = #allContents.item_id
						LEFT JOIN #userManagers ON #userManagers.user_id = #allContents.user_id
            LEFT JOIN v_UsersWithData ON v_UsersWithData.intUserCn = #allContents.user_id
					WHERE #allContents.certificationType IS NOT NULL
						AND (RecertificationYesNo = 'Yes' AND excludedInTargetGroup = 0)
					ORDER BY v_UsersWithData.Nachname, v_UsersWithData.Vorname, User, tblItems.itemType_id, ISNULL(tblItems.titleForLearners, tblItems.title), Recertificationperiod

					SELECT 'All items that are assigned to the users of your target group(s) and for which recertification was or will be mandatory in the future.' as 'Personalnummer', 
							null as 'Last name', 
							null as 'First name', 
							null as 'Email',
							null as 'Location', 
							null as 'Department', 
							null as 'Status', 
							null as 'Manager', 
							null as 'Item type', 
							null as 'Item title', 
							null as 'Learning Time', 
							null as 'Most recently performed successfully',
							null as 'Actual learning status', 
							null as 'Recertification Yes/No', 
							null as 'Recertificationtype', 
							null as 'Recertificationperiod', 
							null as 'Recertification status', 
							null as 'assigned since'
						UNION ALL
					SELECT * FROM #tempSheet3

					DROP TABLE #tempSheet3
				END

				DROP TABLE #Result
				DROP TABLE #allContents
				DROP TABLE #userTargetGroups
				DROP TABLE #userManagers
			</command>
		</Report>
	</Reports>
	<Parameters>
		<Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isSystem="True" name="Zielgruppen Multiselektion" reportParameterType_id="4123c2c2-d408-476a-82bf-ca77f9ecf944" queryParameterName="@targetGroupId" />
	</Parameters>
	<ParameterTypes>
		<ParameterType id="4123c2c2-d408-476a-82bf-ca77f9ecf944" isSystem="False" name="TargetGroup" datatype="IntegerDDL" dataValueField="id" dataTextField="title">
			<query>
				SELECT id, title
				FROM tblTargetGroups
				WHERE(mandator_id = @current_mandator_id)
				AND (EXISTS(SELECT * FROM v_Users WHERE intUserCn = @current_user_id AND securityId = 100)
				OR EXISTS(SELECT * FROM tblTargetGroupManagers WHERE tblTargetGroupManagers.user_id = @current_user_id
				AND tblTargetGroupManagers.targetGroup_id = tblTargetGroups.id)
				OR EXISTS(SELECT *
				FROM tblRolesFunctions
				JOIN tblRoles ON tblRoles.id = tblRolesFunctions.role_id
				JOIN tblFunctions ON tblFunctions.id = tblRolesFunctions.function_id
				JOIN v_Users ON v_Users.intUserCn = @current_user_id
				WHERE tblFunctions.shortcut = 'FcnIsAuthorizedForAllTGs' AND tblRoles.id = v_Users.SecurityID))
				AND defaultforlibrary = 0
				ORDER BY title
			</query>
		</ParameterType>
	</ParameterTypes>
</ReportsExport>