﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
	<Reports>
		<Report id="66b26e13-9820-49de-8889-cfd9e37ad575" codekey="glc_per_department" categoryCodekey="UserStats" name="GCL für Führungskräfte" description="">
			<MetaData created="2020-04-29T17:58:31" createdBy="Administrator, Albrecht (Administrator)" createdBy_user_id="1" modified="2020-09-03T10:31:04" modifiedBy="ELECT, Administrator (Administrator)" modifiedBy_user_id="2" />
			<ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
			<Mandators mandatorMode="OnlyOwner" mandator_id="d5a90a49-e697-4aeb-8a5b-298782815490" mandatorName="ELECT" isStandard="False" isUsedByMenu="False" />
			<Parameters>
				<Parameter id="8a788b48-9545-44e3-a700-678759456e6a" isRequired="True" allowMultiSelect="False" name="Ganze Zahl" contextName="User ID" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
				<Parameter id="7a721121-2d2e-4a3d-b9e6-c6aa238e7ab2" isRequired="True" allowMultiSelect="False" name="Auswahl (ja/nein)" contextName="Testing" defaultValue="0" renderHint="Undefined" disableParameter="DontDisable" />
			</Parameters>
			<Roles>
				<Role id="90" />
			</Roles>
			<command>
				-- we need to get the responsible department managers
				--DECLARE @current_mandator_id UNIQUEIDENTIFIER
				--SET @current_mandator_id = 'D5A90A49-E697-4AEB-8A5B-298782815490'
				--DECLARE @selection_yesno BIT
				--SET @selection_yesno = 0
				--DECLARE @integer INT
				--SET @integer = 2632
				declare @module_id uniqueidentifier = (select top 1 id from tblItems where title like 'GCL Auswertung')

				CREATE TABLE #result
				(
					user_id INT,
					descUserCn NVARCHAR(100),
					userStatus_id INT,
					lastName NVARCHAR(200),
					firstName NVARCHAR(200),
					department NVARCHAR(200),
					item_id UNIQUEIDENTIFIER,
					itemType_id INT,
					titleForLearner NVARCHAR(200),
					assigned DATETIME,
					lastGreenStatus DATETIME,
					validTill DATETIME,
					userItemStatus INT,
					firstMailNotification DATETIME NULL,
					secondMailNotification DATETIME NULL,
					expireDate DATETIME
				)

				-- division is the department of the users
				-- we need to get all users from the department
				-- only with status active and absense
				CREATE TABLE #departmentUsers
				(
					user_id INT,
					descUserCn NVARCHAR(100),
					userStatus_id INT,
					lastName NVARCHAR(200),
					firstName NVARCHAR(200),
					department NVARCHAR(200),
					mandator_id UNIQUEIDENTIFIER
				)
				
				INSERT INTO #departmentUsers
				SELECT
					intUserCn, descUserCn, userStatus, Nachname, Vorname, division, mandator_id
				FROM v_Users
					LEFT JOIN tblUsersOrganisationRolesUsers ON tblUsersOrganisationRolesUsers.userFor_id = v_Users.intUserCn
				WHERE
					(
						(tblUsersOrganisationRolesUsers.organisationRole_id IS NOT NULL AND tblUsersOrganisationRolesUsers.userIs_id = @integer)
						OR
						(tblUsersOrganisationRolesUsers.organisationRole_id IS NULL AND v_Users.intUserCn = @integer)
						OR
						(v_Users.intUserCn = @integer)
					)
					AND mandator_id = @current_mandator_id
					AND v_Users.userStatus &lt;&gt; 2

				-- testing which users are the employees of the given manager
				IF @selection_yesno = 1
				SELECT * FROM #departmentUsers

				-- we need to get the items for those users
				INSERT INTO #result
				SELECT
					du.user_id,
					du.descUserCn,
					du.userStatus_id,
					du.lastName,
					du.firstName,
					du.department,
					i.id,
					i.itemType_id,
					i.title,
					suio.assignedDate,
					dbo.fn_GetUserPlainModuleItemLastPassedEver(suio.user_id, suio.item_id),
					dbo.fn_GetUserItemStatusWillOverrideDate(suio.user_id, suio.item_id),
					dbo.fn_GetUserItemStatus(suio.user_id, suio.item_id) INT,
					suio.overrideAlertSentDate,
					suio.overrideFinalAlertSentDate,
					case when i.certificationType = 1 then suio.overrideDate
					else ISNULL(suio.overrideDate,dbo.fn_GetUserItemStatusWillOverrideDate(du.user_id, i.id)) 
					end as expireDate
				FROM
					#departmentUsers AS du
					INNER JOIN tblStatusUserItemOverride AS suio ON suio.user_id = du.user_id
					INNER JOIN tblItems AS i ON i.id = suio.item_id
				WHERE
					(
						i.certificationType = 1 AND ISNULL(i.overrideSpanMonths,0) &gt; 0 -- FixInterval
						OR
						i.certificationType = 3 AND GETDATE() &gt;= DATEFROMPARTS(i.certYearlyStartYear + i.certYearlyInterval, 1, 1) -- CalendarYearlyOnce
					)
					AND 
					NOT EXISTS (
						SELECT * FROM tblRecertificationExcludedTargetGroups AS excluded
						INNER JOIN tblUsersTargetGroups AS utg ON excluded.targetGroup_id = utg.targetGroup_id
						AND excluded.item_id = suio.item_id
						WHERE utg.UserCn = suio.user_id)
					AND EXISTS (SELECT 1 FROM tblModuleItems WHERE tblModuleItems.item_id = i.id AND tblModuleItems.module_id = @module_id)

				IF @selection_yesno = 1
				BEGIN
					SELECT
						CASE WHEN userStatus_id = 1 THEN
							'Active'
						ELSE
							CASE WHEN userStatus_id = 3 THEN
								'Absent'
							ELSE
								'Unknown'
							END
						END AS 'User Status',
						descUserCn AS 'User',
						lastName AS 'Last Name',
						firstname AS 'First Name',
						department AS 'Department',
						titleForLearner AS 'Content',
						
						CASE WHEN assigned IS NULL THEN
							NULL
						ELSE
							FORMAT(assigned, 'dd MMMM yyyy', 'en-us')
						END AS 'Assigned',
						
						CASE WHEN lastGreenStatus IS NULL THEN
							NULL
						ELSE
							FORMAT(lastGreenStatus, 'dd MMMM yyyy', 'en-us')
						END AS 'Last successfully performed',
						
						CASE WHEN validTill IS NULL THEN
							NULL
						ELSE
							FORMAT(validTill, 'dd MMMM yyyy', 'en-us')
						END AS 'Valid until',
						
						CASE WHEN userItemStatus = 2 THEN
							'completed processed'
						ELSE
							'not processed'
						END AS 'Status',
						
						CASE WHEN firstMailNotification IS NULL THEN
							NULL
						ELSE
							FORMAT(firstMailNotification, 'dd MMMM yyyy', 'en-us')
						END AS '1. Mail',
						
						CASE WHEN secondMailNotification IS NULL THEN
							NULL
						ELSE
							FORMAT(secondMailNotification, 'dd MMMM yyyy', 'en-us')
						END AS '2. Mail',
						
						CASE WHEN expireDate IS NULL THEN
							NULL
						ELSE
							FORMAT(expireDate, 'dd MMMM yyyy', 'en-us')
						END AS 'Expired on'
					FROM
						#result
					ORDER BY lastName
				END
				ELSE
				BEGIN
					SELECT
						r.lastName AS 'Last Name',
						r.firstname AS 'First Name',
						r.titleForLearner AS 'Content/Training',
						CASE WHEN r.expireDate IS NULL THEN
							NULL
						ELSE
							FORMAT(r.expireDate, 'dd MMMM yyyy', 'en-us')
						END AS 'Certificate expired on'
					FROM
						#result r
						INNER JOIN tblItems i ON i.id = r.item_id
					WHERE
						certificationType = 1 and expireDate IS NOT NULL
						or
						certificationType = 3 and 
							(lastGreenStatus is null 
							or 
							lastGreenStatus &lt; DATEFROMPARTS(i.certYearlyStartYear, 1, 1)
							)
				ORDER BY lastName
				END

				DROP TABLE #departmentUsers
				DROP TABLE #result
			</command>
		</Report>
	</Reports>
	<Parameters>
		<Parameter id="8a788b48-9545-44e3-a700-678759456e6a" isSystem="True" name="Ganze Zahl" reportParameterType_id="51b6166f-7a5a-4db3-b4ae-d9b9632dc129" queryParameterName="@integer" />
		<Parameter id="7a721121-2d2e-4a3d-b9e6-c6aa238e7ab2" isSystem="True" name="Auswahl (ja/nein)" reportParameterType_id="411ec93b-ab23-41ba-91d6-e7dc0235b5af" queryParameterName="@selection_yesno" />
	</Parameters>
	<ParameterTypes>
		<ParameterType id="51b6166f-7a5a-4db3-b4ae-d9b9632dc129" isSystem="True" name="Integer" datatype="Integer" dataValueField="" dataTextField="" />
		<ParameterType id="411ec93b-ab23-41ba-91d6-e7dc0235b5af" isSystem="True" name="Boolean" datatype="StringDDL" dataValueField="Value" dataTextField="Text">
			<query>
				SELECT 0 AS Value, 'Nein' AS Text
				UNION
				SELECT 1 AS Value, 'Ja' AS Text
			</query>
		</ParameterType>
	</ParameterTypes>
</ReportsExport>