﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="7f57e66c-4e14-4b96-936c-a47c3a2a7ee5" codekey="bz_per_user" categoryCodekey="SpecialPurpose" name="Bildungszeit für Zeitraum" description="Zeigt die BZ für den gewählten Zeitraum pro Benutzer an. Ignoriert Benutzer, die in diesem Zeitraum keine BZ gesammelt haben.">
      <MetaData created="2022-09-21T12:49:31" createdBy="Kaiser, VIWIS (j.kaiser)" createdBy_user_id="49604" modified="2022-09-26T11:55:04" modifiedBy="Kaiser, VIWIS (j.kaiser)" modifiedBy_user_id="49604" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="3b9841af-1b19-4ca2-8e08-63eb4315d4c7" mandatorName="Wuestenrot" isStandard="False" isUsedByMenu="False" />
      <Parameters>
		  <Parameter id="484671FD-6FAE-4FE5-B95A-201687273C39" isRequired="True" allowMultiSelect="False" name="Startjahr" contextName="Startjahr" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
		  <Parameter id="C6703A6E-C27F-4EFD-8E60-C9D7883C10EC" isRequired="True" allowMultiSelect="False" name="Endjahr" contextName="Endjahr" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
	  </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
		<command>
			/*
			DECLARE @mandator_name NVARCHAR(64)= 'Wuestenrot'
			DECLARE @current_mandator_id UNIQUEIDENTIFIER = (SELECT id FROM tblMandators WHERE name = @mandator_name)
			*/

			DECLARE @startDate DATETIME = cast(datefromparts(@startYear,1,1) as datetime)
			DECLARE @endDate DATETIME = dateadd(second,-1,cast(datefromparts(@endYear+1,1,1) as datetime))

			if @startDate > @endDate
				select 'Falscher Datumsbereich'
			else
			begin
				SELECT *
				INTO #users
				FROM v_Users vu
				WHERE vu.mandator_id = @current_mandator_id
				--AND Exists(SELECT *
				--	FROM tblUserItemScores
				--	WHERE tblUserItemScores.user_id = vu.intUserCn
				--	and tblUserItemScores.startDate &gt; @startDate
				--	AND tblUserItemScores.endDate &lt; @endDate
				--)
				AND vu.SecurityID &lt; 100


				-- Get Scores for all Users (all Qualifications)
				CREATE TABLE #all_times(
					[id] UNIQUEIDENTIFIER,
					[item_id]UNIQUEIDENTIFIER,
					[user_id] INT,
					[startDate] DATETIME NULL,
					[endDate] DATETIME NULL,
					[created] DATETIME NULL,
					[createdBy] NVARCHAR(325) NULL,
					[createdBy_user_id] INT NULL,
					[modified] DATETIME NULL,
					[modifiedBy] NVARCHAR(325) NULL,
					[modifiedBy_user_id] INT NULL,
					[referenceScore_id] UNIQUEIDENTIFIER NULL,
					[isExported] BIT NULL,
					[isAcknowledged] BIT NULL,
					educationTime INT,
					title NVARCHAR(255) NULL,
					titleForLearners NVARCHAR(255) NULL,
					tag NVARCHAR(255) NULL,
					isExternal BIT NULL,
					itemType_id INT,
					learningContent NVARCHAR(50) NULL,
					learningTypeCodeKey NVARCHAR(50) NULL,
					itemVersion INT NULL
				)

				CREATE TABLE #user_qualifcations(
					qualification_id UNIQUEIDENTIFIER,
					title NVARCHAR(255),
					titleForLearners NVARCHAR(255),
					referenceKey NVARCHAR(20),
					isDeleted BIT,
					referenceKey2 NVARCHAR(20)
				)

				DECLARE @User_id INT
				DECLARE @Quali_id UNIQUEIDENTIFIER

				DECLARE user_cur CURSOR FAST_FORWARD FOR
				SELECT intUserCn FROM #users

				-- 1) Iterate over all Users with scores in the dates
				OPEN user_cur
				FETCH NEXT FROM user_cur INTO @User_id
				WHILE @@FETCH_STATUS = 0
				BEGIN
					PRINT 'Getting scores for user: ' + ISNULL(TRY_CAST(@User_id AS NVARCHAR),'Unknown')
					-- Get the user qualifications
					INSERT INTO #user_qualifcations EXEC sp_GetUserQualifications @User_id, @current_mandator_id, 0, 0, 0
	
					-- get the scores from the diffrent qualifications
					DECLARE quali_cur CURSOR FAST_FORWARD FOR
					SELECT qualification_id FROM #user_qualifcations
	
					OPEN quali_cur
					FETCH NEXT FROM quali_cur INTO @Quali_id
					WHILE @@FETCH_STATUS = 0
					BEGIN
						PRINT 'Getting scores for user qualifcation: ' + ISNULL(TRY_CAST(@Quali_id AS NVARCHAR(255)),'Unknown')
						INSERT INTO #all_times EXEC dbo.sp_GetUserItemScores @User_id, @startDate, @endDate,@Quali_id,1,DEFAULT
						FETCH NEXT FROM quali_cur INTO @Quali_id
					END
					DELETE FROM #user_qualifcations
					CLOSE quali_cur
					DEALLOCATE quali_cur
					FETCH NEXT FROM user_cur INTO @User_id
				END
				CLOSE user_cur
				DEALLOCATE user_cur

				SELECT 
					(SELECT COUNT(*) FROM v_UserQualifications WHERE v_UserQualifications.UserCn = vu.intUserCn) AS "Qualis",
					Nachname,
					Vorname,
					descUserCn AS "Kennung",
					ISNULL(STUFF((
					SELECT ', ' + title + ' (' + CASE WHEN position = 0 THEN 'M' WHEN position = 1 THEN 'F' WHEN position = 2 THEN 'V' END + ')'
					FROM tblOrganisationUnits
					JOIN tblUsersOrganisationUnits ON tblUsersOrganisationUnits.organisationUnit_id = tblOrganisationUnits.id
					WHERE tblUsersOrganisationUnits.user_id = vu.intUserCn
					ORDER BY title
					FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''), '') AS "Org. Einheit MA",
					ISNULL(STUFF((
					SELECT ', ' + tblTargetGroups.title
					FROM tblTargetGroups
					JOIN tblUsersTargetGroups ON tblUsersTargetGroups.targetGroup_id = tblTargetgroups.id
					WHERE tblUsersTargetGroups.UserCn = vu.intUserCn
					ORDER BY title
					FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''), '') AS "Zielgruppen",
					CASE
						WHEN vu.SecurityID = 90 THEN 'Admin'
						WHEN vu.SecurityID = 80 THEN 'VizeAdmin'
						WHEN vu.SecurityID = 70 THEN 'Koordinator'
						WHEN vu.SecurityID = 55 THEN 'Führungskraft'
						WHEN vu.SecurityID = 51 THEN 'Seminar-Organisator'
						WHEN vu.SecurityID = 50 THEN 'MDL'
						WHEN vu.SecurityID = 40 THEN 'Backoffice'
						WHEN vu.SecurityID = 30 THEN 'Trainer'
						WHEN vu.SecurityID = 20 THEN 'Büroleiter'
						WHEN vu.SecurityID = 19 THEN 'exerner Trainer'
						WHEN vu.SecurityID = 10 THEN 'Lerner'
					END AS "Rolle",
					vu.accountExpiresOn AS "Gültig bis",
					CASE
						WHEN blocked = 0 THEN 'nein'
						ELSE 'Ja'
					END AS "Gesperrt",
					CASE
						WHEN vu.userStatus = 0 THEN 'unbekannt'
						WHEN vu.userStatus = 1 THEN 'aktiv'
						WHEN vu.userStatus = 2 THEN 'ausgeschieden'
						WHEN vu.userStatus = 3 THEN 'abwesend'
						WHEN vu.userStatus = 3 THEN 'Neueinstellung'
					END AS "Status",
					vu.employeeId AS "Interne-ID",
					vu.registernumber AS "Externe_ID",
					created AS "Eintritt",
					CASE
					WHEN vu.userStatus = 2 THEN userStatusStart
					ELSE NULL
					END AS "Austritt",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created BETWEEN '2019-01-01 00:00:00.000' AND '2019-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2019",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created BETWEEN '2020-01-01 00:00:00.000' AND '2020-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2020",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created &gt;= '2021-01-01 00:00:00.000'
						AND created &lt;= '2021-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2021",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created &gt;= '2022-01-01 00:00:00.000'
						AND created &lt;= '2022-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2022",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created &gt;= '2023-01-01 00:00:00.000'
						AND created &lt;= '2023-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2023",
					dbo.fn_GetEducationTimeString((
						SELECT SUM(educationTime) 
						FROM #all_times
						WHERE #all_times.user_id = vu.intUserCn
						AND created &gt;= '2024-01-01 00:00:00.000'
						AND created &lt;= '2024-12-31 23:59:59.999'
					)) AS "IDD Zeiten 2024",
					CASE
					WHEN gdv.agentStatus = 'AgentStatus0' THEN 'Sonstiges'
					WHEN gdv.agentStatus = 'AgentStatus1' THEN 'Mitarbeiter eines Vermittlers&lt;'
					WHEN gdv.agentStatus = 'AgentStatus2' THEN 'Makler'
					WHEN gdv.agentStatus = 'AgentStatus3' THEN 'Angestellter Außendienst'
					WHEN gdv.agentStatus = 'AgentStatus4' THEN 'Ausschließlichkeitsvermittler'
					WHEN gdv.agentStatus = 'AgentStatus5' THEN 'Mehrfachagent'
					WHEN gdv.agentStatus = 'AgentStatus6' THEN 'Vertrieblich Tätige eines Versicherungsunternehmens'
					WHEN gdv.agentStatus = 'AgentStatus7' THEN 'Vermittler in Nebentätigkeit&lt;'
					END AS "IDD-Personenkreis",
					uca.customAttribute1 AS "Stellenbezeichnung",
					uca.customAttribute2 AS "Vertreternummer",
					uca.customAttribute3 AS "Agenturnummer"
				FROM #users vu
				LEFT JOIN tblUserCustomAttributes uca ON uca.user_id = vu.intUserCn
				LEFT JOIN tblUserGdvAttributes gdv ON gdv.user_id = vu.intUserCn

				DROP TABLE #users
				DROP TABLE #all_times
				DROP TABLE #user_qualifcations
			end
		</command>
    </Report>
  </Reports>
  <Parameters>
	  <Parameter id="484671FD-6FAE-4FE5-B95A-201687273C39" isSystem="False" name="Startjahr" reportParameterType_id="0DC63A9E-0CC5-43B7-B260-DEDFBF962D90" queryParameterName="@startYear" />
	  <Parameter id="C6703A6E-C27F-4EFD-8E60-C9D7883C10EC" isSystem="False" name="Endjahr" reportParameterType_id="0DC63A9E-0CC5-43B7-B260-DEDFBF962D90" queryParameterName="@endYear" />
  </Parameters>
  <ParameterTypes>
	  <ParameterType id="0DC63A9E-0CC5-43B7-B260-DEDFBF962D90" isSystem="False" name="Jahr" datatype="IntegerDDL" dataValueField="year_id" dataTextField="year_name">
		  <query>
			  ; WITH yearsCTE AS
			  (
			  SELECT YEAR('2019-01-01') as year
			  UNION ALL
			  SELECT year + 1
			  FROM yearsCTE
			  WHERE year &lt; YEAR(GETDATE())
			  )
			  SELECT year AS year_id, cast(year as nvarchar(64)) AS year_name
			  FROM yearsCTE
		  </query>
	  </ParameterType>
  </ParameterTypes>
</ReportsExport>