﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="871c8718-0c3e-4255-9017-b9804b6773ad" codekey="questionstats_per_test" categoryCodekey="TestsAndQuestions" name="Testfragenstatistik" description="">
      <MetaData created="2021-03-10T12:45:30" createdBy="expertSuisse, Administrator (Administrator)" createdBy_user_id="20218" modified="2021-03-22T11:18:52" modifiedBy="expertSuisse, Administrator (Administrator)" modifiedBy_user_id="20218" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="25a3d154-1b6e-4607-ab6f-84903384421f" mandatorName="expertsuisse" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isRequired="True" allowMultiSelect="True" name="Zielgruppen Multiselektion" contextName="Zielgruppen Multiselektion" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="dcc129b9-a6af-4893-8960-329bb06af895" isRequired="False" allowMultiSelect="True" name="Tests von Zielgruppen" contextName="Tests von Zielgruppen" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>/*
DECLARE @current_mandator_id UNIQUEIDENTIFIER
SET @current_mandator_id = (SELECT id FROM tblMandators WHERE name = 'expertsuisse')
DECLARE @targetGroupId typeIntList
INSERT INTO @targetGroupId SELECT id FROM tblTargetGroups WHERE mandator_id = @current_mandator_id
DECLARE @tests typeGuidList 
INSERT INTO @tests VALUES ('4165AC63-BFC5-47D2-A908-064ADA8CAFE0')

*/
DECLARE @orgUnit_id typeGuidList
INSERT INTO @orgUnit_id SELECT id FROM tblOrganisationUnits WHERE mandator_id = @current_mandator_id


DECLARE @sortAscending BIT = 0

DECLARE @addQuestionInfo BIT = 1



CREATE TABLE #TasStatsTestSessionQuestionStatistics(

	test_id uniqueidentifier,

	testsession_id uniqueidentifier,

	testpart_id uniqueidentifier,

	question_id uniqueidentifier,

	correct int,

	sortOrder int,

	numberPrefix int,

	numberSuffix int

)



INSERT INTO #TasStatsTestSessionQuestionStatistics

EXEC sp_GetTasStatsTestSessionQuestionStatistics @current_user_id, @tests, @targetGroupId, @orgUnit_id, 0



-- Die einzelnen Tests und ihre Fragen

CREATE TABLE #distinctQuestions(

	test_id uniqueidentifier,

	question_id uniqueidentifier,

	sortOrder int

)


INSERT INTO #distinctQuestions
SELECT DISTINCT test_id, question_id, sortOrder 
FROM #TasStatsTestSessionQuestionStatistics t

DECLARE @deletedCategory UNIQUEIDENTIFIER = (select id from tblTasQuestionCategories where mandator_id='25A3D154-1B6E-4607-AB6F-84903384421F' and specialPurpose = 4)

DECLARE @curr_testid uniqueidentifier



DECLARE testid_Cursor CURSOR FAST_FORWARD FOR

SELECT * FROM @tests

-- Find all assigned Questions for the Test


OPEN testid_Cursor

FETCH NEXT FROM testid_Cursor INTO @curr_testid

WHILE @@FETCH_STATUS = 0

BEGIN

	;WITH assignedQuestions As 
	( 
		SELECT *, 0 AS Depth
		FROM tblTasQuestionPools e
		WHERE parent_id IN (
			SELECT basepool_id 
			FROM tblTasTestParts
			INNER JOIN tblTasQuestionBlocks ON tblTasQuestionBlocks.testpart_id = tblTasTestParts.id
			WHERE test_id =  @curr_testid
		)
		UNION All 
		SELECT e2.*, Depth +1
		FROM tblTasQuestionPools e2
			JOIN assignedQuestions 
				On assignedQuestions.id = e2.parent_id 
	) 
	SELECT q.*
	INTO #assignedQs
	FROM assignedQuestions aq
	INNER join tblTasQuestionPoolQuestions poolq ON poolq.questionPool_id = aq.id
	INNER Join tblTasQuestions q ON q.id = poolq.question_id
	ORDER BY question_id


	SELECT 

	(SELECT title FROM tblItems WHERE id = dq.test_id) AS 'Titel des Tests',

	(CONCAT(questions.numberPrefix,' ',questions.numberSuffix)) AS 'Fragennummer',

	(SELECT description FROM tblTasStatsQuestionTypes WHERE id = questions.type) AS 'Fragentyp', 

	dbo.fn_GetResourceString((SELECT c.name_resource_id FROM tblTasQuestions c WHERE c.id =  questions.id), 1031,1,1033) AS 'Fragentitel',

	CASE

		WHEN questions.difficulty = 0 THEN 'Einfach'

		WHEN questions.difficulty = 1 THEN 'Mittel'

		WHEN questions.difficulty = 2 THEN 'Schwer'

		ELSE 'Unbekannt'

	END AS 'Schwierigkeitsgrad',

	sortOrder AS 'Gewichtung',

	(SELECT SUM(correct) FROM #TasStatsTestSessionQuestionStatistics WHERE question_id = dq.question_id AND test_id = dq.test_id) AS 'Anzahl richtige Beantwortungen',

	(SELECT (COUNT(correct)-SUM(correct)) FROM #TasStatsTestSessionQuestionStatistics WHERE question_id = dq.question_id AND test_id = dq.test_id) AS 'Anzahl falsche Beantwortungen',

	(SELECT (SUM(correct) * 100 /COUNT(correct)) FROM #TasStatsTestSessionQuestionStatistics WHERE question_id = dq.question_id AND test_id = dq.test_id) AS 'Richtig beantwortet in %'
	
	FROM #distinctQuestions dq
	INNER JOIN #assignedQs aq ON aq.id = dq.question_id
	INNER JOIN (SELECT id,type,name_resource_id,difficulty,numberPrefix,numberSuffix FROM tblTasQuestions WHERE mandator_id = @current_mandator_id) AS questions ON questions.id = dq.question_id and deleted IS NULL


	WHERE dq.test_id = @curr_testid
	AND NOT EXISTS(SELECT * FROM tblTasQuestionCategoryQuestions cat WHERE cat.question_id = dq.question_id AND cat.category_id = @deletedCategory )
	ORDER By Fragentitel ASC

	DROP TABLE #assignedQs
	FETCH NEXT FROM testid_Cursor INTO @curr_testid

END

CLOSE testid_cursor

DEALLOCATE testid_Cursor



DROP TABLE #TasStatsTestSessionQuestionStatistics

DROP TABLE #distinctQuestions</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isSystem="True" name="Zielgruppen Multiselektion" reportParameterType_id="f4c178f7-fa5a-4229-92ea-2839c7c82ea4" queryParameterName="@targetGroupId" />
    <Parameter id="dcc129b9-a6af-4893-8960-329bb06af895" isSystem="True" name="Tests von Zielgruppen" reportParameterType_id="fdf34b0e-b637-48af-a319-710774eba482" queryParameterName="@tests" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="f4c178f7-fa5a-4229-92ea-2839c7c82ea4" isSystem="False" name="Auswhal Target Groups CurrentMandator" 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
        AND tblFunctions.shortcut = 'FcnIsAuthorizedForAllTGs'
        INNER JOIN v_Users
        ON  v_Users.SecurityID = tblRoles.id
        WHERE
        tblRolesFunctions.mandator_id = @current_mandator_id
        AND v_Users.intUserCn = @current_user_id
        )
        )
        AND defaultforlibrary = 0
        ORDER BY
        title
      </query>
    </ParameterType>
    <ParameterType id="fdf34b0e-b637-48af-a319-710774eba482" isSystem="True" name="Auswahl Tests von Zielgruppen" datatype="GuidDDL" dataValueField="value" dataTextField="text">
      <query>
        SELECT distinct tblTasTests.id as value, tblItems.title as text
        FROM tblEduOffersTargetGroups
        INNER JOIN tblEduOffersModules ON tblEduOffersModules.eduOffer_id = tblEduOffersTargetGroups.eduOffer_id
        INNER JOIN tblModuleItems ON tblModuleItems.module_id = tblEduOffersModules.module_id
        INNER JOIN tblTasTests ON tblTasTests.id = tblModuleItems.item_id
        INNER JOIN tblItems ON tblItems.id = tblTasTests.id
        WHERE tblTasTests.mandator_id = @current_mandator_id
        AND (NOT EXISTS (SELECT * FROM @targetGroupId)
        OR tblEduOffersTargetGroups.targetGroup_id IN (SELECT * FROM @targetGroupId))
        AND tblItems.deleted IS NULL
        ORDER BY title
      </query>
      <Parameters>
        <Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isRequired="False" allowMultiSelect="True" name="Zielgruppen Multiselektion" contextName="Zielgruppen Multiselektion" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>