﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="796aac3b-9c0c-431d-9d2f-55627cdfa2b8" codekey="Kosmos_IDDEvaluation" categoryCodekey="CreditPoints" name="Auswertung IDD" description="Auswertung IDD">
      <MetaData created="2018-05-14T10:28:40" createdBy="Administrator Zentrale (Administrator)" createdBy_user_id="2" modified="2018-05-14T11:07:46" 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="93460158-2520-48a7-ac64-9350fa3d159f" isRequired="True" allowMultiSelect="True" name="Zielgruppen Multiselektion" contextName="Zielgruppen Multiselektion" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="bbff9061-3e51-4cd8-b055-4bbdea33ff8a" isRequired="True" allowMultiSelect="False" name="IDD Qualifizierung" contextName="Qualifizierung" defaultValue="" renderHint="DropDownList" disableParameter="DontDisable" />
        <Parameter id="9b923abd-0377-4e6f-a345-58798cf88493" isRequired="True" allowMultiSelect="False" name="IDD jahr" contextName="Jahr" defaultValue="" renderHint="DropDownList" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="15" />
        <Role id="16" />
        <Role id="17" />
        <Role id="21" />
        <Role id="22" />
        <Role id="34" />
        <Role id="35" />
        <Role id="36" />
        <Role id="39" />
        <Role id="40" />
        <Role id="41" />
        <Role id="43" />
        <Role id="44" />
        <Role id="46" />
      </Roles>
      <command>
        DECLARE @ResultTable TABLE
        (
        user_id NVARCHAR(64),
        lastname NVARCHAR(128),
        firstname NVARCHAR(128),
		organisationUnits NVARCHAR(MAX),
        targetgroups NVARCHAR(MAX),
        qualification_id NVARCHAR(64),
        qualificationPeriod_id NVARCHAR(64),
        status NVARCHAR(8),
        currentEducationTime REAL,
        seminarEducationTime REAL,
        wbtEducationTime REAL,
        qualificationMinTime INT,
        iddStatus NVARCHAR(64),
        iddStatusStart DATETIME,
        startDate DATETIME,
        endDate DATETIME
        )

        INSERT INTO @ResultTable
        SELECT DISTINCT
        u.intUserCn AS user_id,
        u.Nachname AS lastname,
        u.Vorname AS firstname,
        ISNULL(STUFF((
        SELECT ', ' + ou.title
        FROM tblUsersOrganisationUnits uou
        INNER JOIN tblOrganisationUnits ou ON ou.id = uou.organisationUnit_id
        WHERE uou.user_id = u.intUserCn
        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, ''), '') AS organisationUnits,
        STUFF((
        SELECT ', ' + title
        FROM tblTargetGroups tg
        INNER JOIN tblusersTargetGroups utg ON tg.id = utg.targetGroup_id
        WHERE utg.userCn = u.intUserCn
        AND tg.mandator_id = @current_mandator_id
		AND EXISTS(SELECT 1 FROM @targetGroupId WHERE value = tg.id)
        AND tg.defaultforlibrary = 0
        FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'), 1, 2, '') AS targetgroups,
        q.id,
        uqp.id,
        'Grau' AS status,
        uqp.currentEducationTime,
        0 AS seminarEducationTime,
        0 AS wbtEducationTime,
        q.minTime AS qualificationMinTime,
        customs.CustomAttribute11,
        customs.CustomAttribute12,
        DATEFROMPARTS(@idd_year, 1, 1) AS startDate,
        DATEFROMPARTS(@idd_year, 12, 31) AS endDate
        FROM v_Users u
        INNER JOIN tblUserCustomAttributes customs ON customs.user_id = u.intUserCn
        INNER JOIN tblUserQualificationPeriods uqp ON u.intUserCn = uqp.user_id
        INNER JOIN tblQualifications q ON uqp.qualification_id = q.id
        LEFT OUTER JOIN tblUsersTargetGroups utg ON u.intUserCn = utg.UserCn
        INNER JOIN tblTargetGroups tg ON utg.targetGroup_id = tg.id
        WHERE u.mandator_id = @current_mandator_id
        AND q.id = @qualification_id
        AND @idd_year = YEAR(uqp.startDate)
        AND YEAR(uqp.startDate) &lt;&gt; YEAR(ISNULL(uqp.endDate, DATEADD(MONTH, q.periodDurationMonths, uqp.startDate))) -- to make sure any invalid periods aren't taken
		AND EXISTS(SELECT 1 FROM @targetGroupId WHERE value = tg.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 = tg.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 tg.mandator_id = @current_mandator_id
        AND defaultforlibrary = 0

        UPDATE @ResultTable
        SET currentEducationTime = ISNULL(userScores.totalEducationTime, 0),
        seminarEducationTime = ISNULL(userScores.totalSeminarEducationTime, 0),
        wbtEducationTime = ISNULL(userScores.totalWBTEducationTime, 0)
        FROM @ResultTable AS res
        LEFT JOIN
        (
        SELECT DISTINCT
        user_id,
        qualificationPeriod_id,
        SUM(educationTime) AS totalEducationTime,
        SUM(seminarEducationTime) AS totalSeminarEducationTime,
        SUM(wbtEducationTime) AS totalWBTEducationTime
        FROM
        (
        SELECT
        tbluserItemScores.user_id,
        tblUserQualificationPeriods.id AS qualificationPeriod_id,
        ISNULL(tbluserItemScores.educationTime, 0) AS educationTime,
        (SELECT ISNULL(tbluserItemScores.educationTime, 0)
        FROM tblItems
        WHERE id = item_id
        AND (itemType_id = 2
        OR itemType_id = 8)) AS seminarEducationTime,
        (SELECT ISNULL(tbluserItemScores.educationTime, 0)
        FROM tblItems
        WHERE id = item_id
        AND (itemType_id = 0
        OR itemType_id = 1
        OR itemType_id = 6)) AS wbtEducationTime
        FROM
        tblUserItemScores
        INNER JOIN tblUserItemScoresQualifications
        ON tblUserItemScores.id = tblUserItemScoresQualifications.useritemscore_id
        INNER JOIN tblQualifications ON tblQualifications.id = tblUserItemScoresQualifications.qualification_id
        INNER JOIN tblUserQualificationPeriods
        ON tblUserQualificationPeriods.user_id = tblUserItemScores.user_id
        AND tblUserQualificationPeriods.qualification_id = tblUserItemScoresQualifications.qualification_id
        WHERE
        tblUserItemScoresQualifications.qualification_id = @qualification_id
        AND (tblUserItemScores.endDate IS NULL OR
        YEAR(tblUserItemScores.endDate) = @idd_year)
        ) AS A
        GROUP BY
        qualificationPeriod_id, user_id
        ) AS userScores
        ON userScores.user_id = res.user_id
        AND res.qualificationPeriod_id = userScores.qualificationPeriod_id
        WHERE startDate IS NOT NULL

        UPDATE @ResultTable
        SET status = CASE
        WHEN currentEducationTime &gt;= 15 * 60 THEN 'Grün'
        WHEN currentEducationTime &lt; 15 * 60
        AND currentEducationTime &gt;= 5 * 60 THEN 'Gelb'
        WHEN currentEducationTime &lt; 5 * 60 THEN 'Rot'
        ELSE 'Grau'
        END
        FROM @ResultTable AS res
        LEFT JOIN tblQualificationExchangers
        ON tblQualificationExchangers.qualification_id = res.qualification_id
        AND tblQualificationExchangers.exchangerCodeKey = 'GDVIMPORTPOINT'
        AND tblQualificationExchangers.isActive = 1
        WHERE (ISNULL(res.qualificationMinTime, 0) &gt; 0)	/* hasQuota = 1 */
        AND (tblQualificationExchangers.id IS NULL
        OR /* checking if the user is tpservice */
        (
        SELECT ISNULL(isTpService, 0)
        FROM tblUserGdvAttributes
        WHERE user_id = res.user_id) = 1
        AND /* and the qualification has a exporter of type GDVIMPORTPOINTS */
        tblQualificationExchangers.id IS NOT NULL)

        SELECT
        lastname AS 'Name',
        firstname AS 'Vorname',
		organisationUnits 'OE',
        targetgroups 'Zielgruppe',
        status 'Status',
        dbo.fn_GetEducationTimeString(currentEducationTime) 'Ist-BZ',
        dbo.fn_GetEducationTimeString(seminarEducationTime) 'Seminar',
        dbo.fn_GetEducationTimeString(wbtEducationTime) 'WBT',
        dbo.fn_GetEducationTimeString(qualificationMinTime) 'Soll-BZ',
        DATEADD(dd, 0, DATEDIFF(dd, 0, startDate)) 'Beginn',
        DATEADD(dd, 0, DATEDIFF(dd, 0, endDate)) 'End',
        CASE
        WHEN iddStatus IS NULL THEN 'Unbekannt'
        ELSE iddStatus
        END
        AS 'IDD Status',
        iddStatusStart 'IDD Statusdatum'
        FROM @ResultTable
        ORDER BY lastname ASC, firstname ASC
      </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="bbff9061-3e51-4cd8-b055-4bbdea33ff8a" isSystem="False" name="IDD Qualifizierung" reportParameterType_id="d4ef5ab5-f902-45d1-beb2-2e20b0086ddc" queryParameterName="@qualification_id" />
    <Parameter id="9b923abd-0377-4e6f-a345-58798cf88493" isSystem="False" name="IDD jahr" reportParameterType_id="9a0eea61-5322-4399-9e4e-7a881ea5b9cf" queryParameterName="@idd_year" />
  </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="d4ef5ab5-f902-45d1-beb2-2e20b0086ddc" isSystem="False" name="IDD Qualifizierung" datatype="GuidDDL" dataValueField="id" dataTextField="title">
      <query>
        SELECT tblObjects.id, tblObjects.title
        FROM tblQualifications
        INNER JOIN tblObjects ON tblObjects.id = tblQualifications.id
        WHERE tblObjects.mandator_id = @current_mandator_id AND tblObjects.deleted IS NULL
        AND periodBeginning = 0 -- only applied to IDD type of qualifications
        ORDER BY tblObjects.title
      </query>
    </ParameterType>
    <ParameterType id="9a0eea61-5322-4399-9e4e-7a881ea5b9cf" isSystem="False" name="IDD jahr" datatype="IntegerDDL" dataValueField="year_id" dataTextField="year_name">
      <query>
        ; WITH yearsCTE AS
        (
        SELECT YEAR('2018-01-01') as year
        UNION ALL
        SELECT year + 1
        FROM yearsCTE
        WHERE year &lt; YEAR(GETDATE()) + 1 -- include upcoming year
        )
        SELECT year AS year_id, cast(year as nvarchar(64)) AS year_name
        FROM yearsCTE
      </query>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>