﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="88814731-eafd-448c-94a3-4bd7561e83d3" codekey="Kosmos_TestStatisticsVertriebsrelevant" categoryCodekey="TestsAndQuestions" name="Teststatistik Vertriebsrelevant" description="">
      <MetaData created="2015-01-30T14:05:52" createdBy="Gabi Wappler (WAPP)" createdBy_user_id="942" modified="2015-06-24T14:15:42" modifiedBy="Administrator Zentrale" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="0ab3e804-57cb-42a7-82a3-a6fd412d317d" mandatorName="Kosmos" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="True" allowMultiSelect="False" name="Mandant" contextName="Mandant" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="35ceb0d3-29e6-4108-910a-89e858dda847" isRequired="False" allowMultiSelect="True" name="Auswahl Target Group" contextName="Zielgruppe" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="70e399d0-0959-4e19-8547-9b21c4cf2a95" isRequired="True" allowMultiSelect="True" name="Tests" contextName="Tests" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>
        -- Debug variables
        --DECLARE @mandator_id UNIQUEIDENTIFIER = '7DA81670-5067-49C3-A371-379BB5DC4F11' --Zentrale

        --DECLARE @targetGroupId typeIntList
        --INSERT INTO @targetGroupId  VALUES(990),   (231)

        --DECLARE @tests TABLE(test_id UNIQUEIDENTIFIER)
        --INSERT INTO @tests VALUES('C2702320-C412-4568-A089-EC4C038D770E'), ('3B3C602B-D826-4E09-9475-03812EE36F37')
        -- Debug variables
        ----------------------------------------------------------------------------



DECLARE @currentAssignments TABLE(test_id UNIQUEIDENTIFIER, 
                                  user_id INT,
                                  vertriebsKanal NVARCHAR(MAX),
                                  targetGroup_id INT)

        DECLARE @orgUnitIds dbo.typeGuidList
        DECLARE @targetGroupList dbo.typeIntList
        SELECT value
        FROM @targetGroupId


DECLARE @testSessions TABLE(testsession_id UNIQUEIDENTIFIER, 
                            test_id UNIQUEIDENTIFIER, 
                            user_id INT, 
                            passed INT, 
                            endDate DATETIME, 
                            pctQuestions FLOAT, 
                            visible BIT, 
                            resetDate DATETIME, 
                            title NVARCHAR(256), 
                            mode INT, 
                            deleted DATETIME, 
                            module_id UNIQUEIDENTIFIER, 
                            resultCalculationMode INT, 
                            testSessiontype INT, 
                            testExecutionCount INT)


--DECLARE cursorMandators CURSOR
--    FOR SELECT id FROM tblMandators
    
--OPEN cursorMandators

--FETCH NEXT FROM cursorMandators INTO @mandator_id
--WHILE @@FETCH_STATUS = 0
--    BEGIN
        INSERT INTO @testSessions
        EXEC sp_GetTasStatsTestSessionsAssignedToTargetGroup @current_user_id, @mandator_id, NULL, NULL, @orgUnitIds, @targetGroupList, 1, 1, NULL, NULL
--    END
--CLOSE cursorMandators
--DEALLOCATE cursorMandators


-- get all tests and users currently assigned with vertirbsrelevant = 1
INSERT INTO @currentAssignments
SELECT DISTINCT selectedTests.value, -- tblTasTests.id, --
       tblUsersTargetGroups.UserCn,
       (SELECT customAttribute3 FROM tblUserCustomAttributes WHERE tblUserCustomAttributes.user_id = tblUsersTargetGroups.UserCn),
        tblUsersTargetGroups.targetGroup_id
  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 @tests AS selectedTests ON selectedTests.value = tblModuleItems.item_id --tblTasTests.id ---- mandatory parameter so no need to check if not set
       INNER JOIN tblItems ON tblItems.id = selectedTests.value  -- tblTasTests.id
       INNER JOIN tblUsersTargetGroups ON tblUsersTargetGroups.targetGroup_id = tblEduOffersTargetGroups.targetGroup_id
       INNER JOIN tblUserCustomAttributes on tblUserCustomAttributes.user_id = tblUsersTargetGroups.UserCn AND customAttribute2 = 'ja'
       INNER JOIN tblTargetGroups ON tblTargetGroups.id = tblUsersTargetGroups.targetGroup_id  AND tblTargetGroups.mandator_id = @mandator_id
        WHERE(NOT EXISTS(SELECT 1 FROM @targetGroupId) OR tblEduOffersTargetGroups.targetGroup_id IN (SELECT * FROM @targetGroupId))
  AND tblItems.deleted IS NULL 

SELECT currentAssignments.test_id, 
    currentAssignments.user_id, 
    ISNULL(MAX(passed), 0) as everPassed, 
    MAX(endDate) AS lastDate, 
    --'ja'  AS vertriebsrelevant, -- because already considered in the inner join tblUserCustomAttributes    
    (
    SELECT customAttribute3
        FROM tblUserCustomAttributes
    WHERE tblUserCustomAttributes.user_id = currentAssignments.user_id) AS vertriebskanal  INTO #lastResults
    FROM @currentAssignments AS currentAssignments
    LEFT JOIN @testSessions AS testSessions ON testSessions.user_id = currentAssignments.user_id AND testSessions.test_id = currentAssignments.test_id -- eliminate not currently assigned tests adn users
    GROUP BY currentAssignments.test_id, 
            currentAssignments.user_id



SELECT #lastResults.Vertriebskanal, 
       --tblItems.title, 
       #lastResults.test_id, 
       SUM(everPassed) AS passedCount, 
       SUM(CASE WHEN lastDate IS NULL THEN 0 ELSE 1 END) AS totalUsers,
       COUNT(*)  as totalAssigned INTO #orderedResult
  FROM #lastResults
       LEFT JOIN @testSessions AS testSessions ON testSessions.test_id = #lastResults.test_id
                                         AND testSessions.user_id = #lastResults.user_id
                                         AND testSessions.endDate = #lastResults.lastDate
 WHERE #lastResults.Vertriebskanal IS NOT NULL --AND Vertriebsrelevant = 'ja'
 GROUP BY #lastResults.Vertriebskanal, 
          #lastResults.test_id
          --,tblitems.title

-- table with all target groups from all users considered in the statistic underneath
SELECT DISTINCT title AS Zielgruppe --,tblTargetGroups.id
FROM (SELECT DISTINCT user_id FROM #lastResults) AS selectdUsers
INNER JOIN tblUsersTargetGroups ON tblUsersTargetGroups.UserCn = selectdUsers.user_id
INNER JOIN tblTargetGroups ON tblTargetGroups.id = tblUsersTargetGroups.targetGroup_id  AND defaultforlibrary &lt;&gt; 1
INNER JOIN @currentAssignments AS currentAssignements ON currentAssignements.targetGroup_id = tblTargetGroups.id

--DROP TABLE #lastResults
-- now output grouping Vertriebskanal
DECLARE @kanalTable TABLE(sortOrder int, name NVARCHAR(128))
INSERT INTO @kanalTable VALUES(1, 'Geschäftsstelle'), (2, 'Telefonvertrieb'), (3, 'Vertretungen'), (4, 'Sonstiges'), (5, 'Zentrale')

DECLARE @kanal NVARCHAR(MAX)
DECLARE cursorKanal CURSOR
FOR SELECT name FROM @kanalTable ORDER BY sortOrder

OPEN cursorKanal

FETCH NEXT FROM cursorKanal INTO @kanal
WHILE @@FETCH_STATUS = 0
    BEGIN
        SELECT @kanal AS Vertriebskanal --, (select count(distinct user_id) from #lastResults where vertriebskanal = @kanal) as 'Gesamt Vertriebskanal' -- output Vertibskanal name
        SELECT title AS 'Tests',
               totalAssigned AS  'Anzahl der Benutzer mit Vertriebsrelevanz insgesamt',
               --(SELECT COUNT(*) FROM @currentAssignments AS currentAssignments WHERE currentAssignments.test_id = #orderedResult.test_id AND currentAssignments.vertriebsKanal = @kanal) AS 'Anzahl der Benutzer mit Vertiebsrelevanz insgesamt',
                totalusers AS 'Anzahl der Benutzer Vertriebsrelevanz Test bearbeitet',
                passedCount AS 'Anzahl der Benutzer Vertriebsrelevanz Test bestanden',
                totalUSers - passedCount AS 'Anzahl der Benutzer Vertriebsrelevanz Test nicht bestanden',
                CASE WHEN totalUsers &gt; 0 
                    THEN CAST(ROUND(CAST(passedCount AS FLOAT) / totalAssigned * 100, 0) AS VARCHAR) + ' %'
                    ELSE '0 %'
                END AS 'Quote der bestandenen Tests'
          FROM #orderedResult
          JOIN tblItems ON tblItems.id = #orderedResult.test_id
         WHERE #orderedResult.Vertriebskanal = @kanal
         FETCH NEXT FROM cursorKanal INTO @kanal
    END

DROP TABLE #lastResults
CLOSE cursorKanal
DEALLOCATE cursorKanal
DROP TABLE #orderedResult
</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isSystem="True" name="Mandant" reportParameterType_id="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" queryParameterName="@mandator_id" />
    <Parameter id="35ceb0d3-29e6-4108-910a-89e858dda847" isSystem="False" name="Auswahl Target Group" reportParameterType_id="dbbd7bc6-a373-4ddc-b6a5-f8cbe242217d" queryParameterName="@targetGroupId" />
    <Parameter id="70e399d0-0959-4e19-8547-9b21c4cf2a95" isSystem="False" name="Tests" reportParameterType_id="dd051205-6716-422d-a51e-25dfd484c083" queryParameterName="@tests" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" isSystem="True" name="Mandator" datatype="Mandator" dataValueField="" dataTextField="" />
    <ParameterType id="dbbd7bc6-a373-4ddc-b6a5-f8cbe242217d" isSystem="False" name="Auswahlliste Target Groups" datatype="IntegerDDL" dataValueField="id" dataTextField="title">
      <query>
SELECT id, 
       title
  FROM tblTargetGroups
 WHERE(mandator_id = @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>
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="False" allowMultiSelect="False" name="Mandant" contextName="Mandant" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
    <ParameterType id="dd051205-6716-422d-a51e-25dfd484c083" isSystem="False" name="Auswahllist Tests" datatype="GuidDDL" dataValueField="id" dataTextField="title">
      <query>
        SELECT distinct tblTasTests.id, tblItems.title
  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 = @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="35ceb0d3-29e6-4108-910a-89e858dda847" isRequired="False" allowMultiSelect="True" name="Auswahl Target Group" contextName="Auswahl Target Group" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="False" allowMultiSelect="False" name="Mandant" contextName="Mandant" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>