﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="05e1de7c-8627-4cc3-ae9d-06957efdb1fa" codekey="TELIS_TestStatistics" categoryCodekey="TestsAndQuestions" name="Teststatistiken TELIS" description="">
      <MetaData created="2012-06-22T08:39:35" createdBy="Administrator VIWIS (Administrator)" createdBy_user_id="1007" modified="2012-07-05T15:42:18" modifiedBy="Administrator TELIS" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="7d465405-cbeb-4c1e-a705-42fcfa3bb08c" mandatorName="Telis" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="799dc313-8ea3-44c1-8364-bda310e433d2" isRequired="False" name="Prüfung" contextName="Prüfung" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="75c0be41-d6f2-4641-95f2-513d4ff412a3" isRequired="False" name="Zielgruppe abhängig vom Test" contextName="Zielgruppe abhängig vom Test" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>-- Start Debugging
--DECLARE @current_mandator_id UNIQUEIDENTIFIER
--DECLARE @test_id UNIQUEIDENTIFIER
--DECLARE @targetGroup_id INT
--SET @current_mandator_id = (SELECT id FROM tblMandators WHERE name = 'TELIS')
--SET @test_id = NULL
--SET @targetGroup_id = NULL
-- End Debugging

-- Prepare Target Groups, Users and Tests
CREATE TABLE #tempTargetGroups( targetGroup_id INT, targetGroup_title NVARCHAR(2048) )
CREATE TABLE #tempTests( test_id UNIQUEIDENTIFIER, test_title NVARCHAR(128) )
CREATE TABLE #tempUsers( user_id INT, Kennung NVARCHAR(64), Nachname NVARCHAR(128), Vorname NVARCHAR(128))
CREATE TABLE #tempStatistics(user_id INT, test_id UNIQUEIDENTIFIER, status NVARCHAR(64), result NVARCHAR(10), datum DATETIME, executions NVARCHAR(15))
CREATE TABLE #Cartesian(user_id INT, test_id UNIQUEIDENTIFIER)

-- Get the tests
IF @test_id IS NULL --OR @test_id = ''
	INSERT INTO #tempTests
		SELECT distinct tblTasTests.id, tblItems.title
		FROM tblTasTests 
         inner join tblItems on tblTasTests.id=tblItems.id
    WHERE tblTasTests.mandator_id = @current_mandator_id 
		-- AND mode = 1 -- Only exam tests 
ELSE
	INSERT INTO #tempTests
		SELECT tblTasTests.id, tblItems.title
	FROM tblTasTests 
         inner join tblItems on tblTasTests.id=tblItems.id
  WHERE tblTasTests.id = @test_id


IF @targetGroup_id IS NULL OR @targetGroup_id = ''
	INSERT INTO #tempTargetGroups 
		SELECT DISTINCT tblTargetGroups.id, tblTargetGroups.title FROM tblTargetGroups
	INNER JOIN tblEduOffersTargetGroups ON tblTargetGroups.id = tblEduOffersTargetGroups.targetGroup_id
	INNER JOIN tblEduOffersModules ON tblEduOffersTargetGroups.eduOffer_id = tblEduOffersModules.eduOffer_id
	INNER JOIN tblModuleItems ON tblEduOffersModules.module_id = tblModuleItems.module_id 
	INNER JOIN #tempTests ON tblModuleItems.item_id = #tempTests.test_id
ELSE
	INSERT INTO #tempTargetGroups
		SELECT tblTargetGroups.id, tblTargetGroups.title FROM
			tblTargetGroups
		WHERE tblTargetGroups.id = @targetGroup_id

-- Get all assigned users				
INSERT INTO #tempUsers
	SELECT distinct v_Users.intUserCn, v_Users.descUserCn, v_Users.Nachname, v_Users.Vorname
	FROM #tempTargetGroups 
	INNER JOIN tblUsersTargetGroups 
	ON #tempTargetGroups.targetGroup_id = tblUsersTargetGroups.targetGroup_id
	INNER JOIN v_Users
	ON tblUsersTargetGroups.UserCn = v_Users.intUserCn

INSERT INTO #Cartesian(user_id, test_id) 
	SELECT distinct #tempUsers.user_id, #tempTests.test_id
	FROM #tempUsers, #tempTests



--select * from #tempTests

-- Dependent on Mode: Fill statistics

	INSERT INTO #tempStatistics
	SELECT
		cartesian.user_id, cartesian.test_id, ISNULL(a.Status, ' - '), ISNULL(a.Ergebnis,' - '), a.Datum, CASE WHEN a.Versuche IS NULL THEN ' - ' ELSE CAST(a.Versuche AS NVARCHAR) + '. Versuch' END 
		--(SELECT CASE WHEN tj.passed = 1 THEN 'bestanden' ELSE 'nicht bestanden' END FROM tblTasStatsTestSessions tj WHERE tj.endDate = MAX(tj.endDate)) As Status,
		--a.Datum,
		--(SELECT CAST(ti.pctQuestions AS NVARCHAR) + '%' FROM tblTasStatsTestSessions ti WHERE ti.endDate = MAX(ti.endDate)) AS Ergebnis  
		FROM
			(select distinct #tempUsers.user_id, #tempTests.test_id FROM #tempUsers, #tempTests ) Cartesian
		LEFT JOIN
			(
			select t.user_id, t.test_id,  
			(SELECT TOP 1 CASE WHEN tj.passed = 1 THEN 'bestanden' ELSE 'nicht bestanden' END FROM tblTasStatsTestSessions tj WHERE tj.endDate = MAX(t.endDate)) As Status,
			(SELECT TOP 1 CAST(ti.pctQuestions AS NVARCHAR) + '%' FROM tblTasStatsTestSessions ti WHERE ti.endDate = MAX(t.endDate)) AS Ergebnis,
			MAX(t.endDate) AS Datum,
			COUNT(t.user_id) AS Versuche
			FROM tblTasStatsTestSessions t
			GROUP BY t.user_id, t.test_id
			)a
		ON Cartesian.user_id = a.user_id
		AND Cartesian.test_id = a.test_id

--SELECT distinct user_id FROM #tempStatistics


-- From now: Telis specific
CREATE TABLE #tempResults(  [Kennung] NVARCHAR(64), [Nachname] NVARCHAR(128), [Vorname] NVARCHAR(128),
	[Abteilung] NVARCHAR(128), [Gebiet] NVARCHAR(128), [Dienststelle] NVARCHAR(128),
	[Test Titel] NVARCHAR(128), [Datum] DATETIME, [Status] NVARCHAR(20), [Ergebnis] NVARCHAR(10), [Anzahl durchgeführt] INT )

DECLARE TestCur CURSOR STATIC FOR
	SELECT #tempTests.test_id FROM #tempTests
OPEN TestCur
DECLARE @currentTestID UNIQUEIDENTIFIER
DECLARE @OUTER_FS INT
FETCH NEXT FROM TestCur INTO @currentTestID
SET @OUTER_FS = @@FETCH_STATUS
WHILE @OUTER_FS=0
BEGIN
	DECLARE TGCur CURSOR STATIC FOR 
		SELECT #tempTargetGroups.targetGroup_id FROM #tempTargetGroups 
	
	DECLARE @currentTargetGroupID INT
	OPEN TGCur
	DECLARE @INNER_FS INT
	FETCH NEXT FROM TGCur INTO @currentTargetGroupID
	SET @INNER_FS = @@FETCH_STATUS
	WHILE @INNER_FS = 0
	BEGIN
	-- Only take those that are not empty (To Discuss)
	IF (SELECT COUNT(*) FROM tblUsersTargetGroups a
		INNER JOIN #tempUsers b ON a.UserCn = b.user_id AND a.targetGroup_id = @currentTargetGroupID
		INNER JOIN #tempStatistics c ON b.user_id = c.user_id
		WHERE c.test_id = @currentTestID) &gt; 0
        BEGIN
        -- Title with test, targetgroup for next statistics block
        SELECT 'Test: ' + #tempTests.test_title AS ' ' FROM #tempTests WHERE #tempTests.test_id = @currentTestID
        SELECT 'Zielgruppe: ' + #tempTargetGroups.targetGroup_title AS ' ' FROM #tempTargetGroups
        WHERE #tempTargetGroups.targetGroup_id = @currentTargetGroupID
        -- The actual statistics block
        SELECT
        #tempUsers.Nachname, #tempUsers.Vorname, #tempUsers.Kennung,
        ISNULL(v_Users.division,'') AS [Abteilung], ISNULL(v_Users.area,'') AS [Gebiet], ISNULL(v_Users.office,'') AS [Dienststelle],
        #tempStatistics.datum AS [Datum], #tempStatistics.status AS [Status],
        #tempStatistics.result AS [Ergebnis], #tempStatistics.executions AS [Versuche]
        FROM tblUsersTargetGroups utg
        INNER JOIN #tempUsers ON utg.UserCn = #tempUsers.user_id
        AND utg.targetGroup_id = @currentTargetGroupID
        INNER JOIN
        #tempStatistics ON #tempUsers.user_id = #tempStatistics.user_id
        INNER JOIN
        v_Users ON #tempStatistics.user_id = v_Users.intUserCn
        WHERE
        #tempStatistics.test_id = @currentTestID
        ORDER BY #tempUsers.Nachname, #tempUsers.Vorname
        SELECT '' AS ' '
        END
        FETCH NEXT FROM TGCur INTO @currentTargetGroupID
        SET @INNER_FS = @@FETCH_STATUS
        END
        CLOSE TGCur
        DEALLOCATE TGCur
        FETCH NEXT FROM TestCur INTO @currentTestID
        SET @OUTER_FS = @@FETCH_STATUS
        END
        CLOSE TestCur
        DEALLOCATE TestCur

        DROP TABLE #tempResults

        -- End telis specific
        DROP TABLE #Cartesian
        DROP TABLE #tempStatistics
        DROP TABLE #tempUsers
        DROP TABLE #tempTests
        DROP TABLE #tempTargetGroups</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="799dc313-8ea3-44c1-8364-bda310e433d2" mandator_id="7d465405-cbeb-4c1e-a705-42fcfa3bb08c" isSystem="False" name="Prüfung" reportParameterType_id="84b64945-2e40-430d-921c-6b4fa191a988" queryParameterName="@test_id" />
    <Parameter id="75c0be41-d6f2-4641-95f2-513d4ff412a3" mandator_id="7d465405-cbeb-4c1e-a705-42fcfa3bb08c" isSystem="False" name="Zielgruppe abhängig vom Test" reportParameterType_id="eb1b254d-e920-43f2-8d5b-52510017d16e" queryParameterName="@targetGroup_id" />
    <Parameter id="4aaf4f45-f70a-452a-92b5-f8e9b8b0dfb6" isSystem="True" name="Test" reportParameterType_id="c613c165-96af-465b-bf6c-c0cba9a2dc5d" queryParameterName="@test_id" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="84b64945-2e40-430d-921c-6b4fa191a988" mandator_id="7d465405-cbeb-4c1e-a705-42fcfa3bb08c" isSystem="False" name="Prüfung" datatype="GuidDDL" dataValueField="id" dataTextField="title">
      <query>
        SELECT tblTasTests.id, tblItems.title 
        FROM tblTasTests 
             inner join tblItems on tblTasTests.id=tblItems.id
        WHERE tblTasTests.mandator_id = @current_mandator_id AND tblTasTests.mode = 1 
        ORDER BY tblItems.title
      </query>
    </ParameterType>
    <ParameterType id="eb1b254d-e920-43f2-8d5b-52510017d16e" isSystem="False" name="Zielgruppe abhängig von Test" datatype="IntegerDDL" dataValueField="id" dataTextField="title">
      <query>
        SELECT DISTINCT tblTargetGroups.title, tblTargetGroups.id 
        FROM          tblTargetGroups   
        INNER JOIN tblEduOffersTargetGroups ON tblTargetGroups.id = tblEduOffersTargetGroups.targetGroup_id   
        INNER JOIN tblEduOffersModules ON tblEduOffersTargetGroups.eduOffer_id = tblEduOffersModules.eduOffer_id   
        INNER JOIN tblModuleItems ON tblEduOffersModules.module_id = tblModuleItems.module_id    
        WHERE tblModuleItems.item_id = @test_id</query>
      <Parameters>
        <Parameter id="4aaf4f45-f70a-452a-92b5-f8e9b8b0dfb6" isRequired="False" name="Test" contextName="Test" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
    <ParameterType id="c613c165-96af-465b-bf6c-c0cba9a2dc5d" isSystem="True" name="Test" datatype="Test" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>