﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="9e16000f-2f3b-43a4-9854-4110c97300c4" codekey="ADAC_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="ExcludeMandators" mandator_id="7da81670-5067-49c3-a371-379bb5dc4f11" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="True" allowMultiSelect="False" name="Mandant" contextName="Mandant" defaultValue="" renderHint="DropDownList" 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="bc95c858-cac7-4bd4-80e9-d617dabe70bd" isRequired="False" allowMultiSelect="False" name="Zielgruppe abhängig vom Mandanten" contextName="Zielgruppe" 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="21" />
        <Role id="70" />
        <Role id="80" />
        <Role id="90" />
        <Role id="93" />
      </Roles>
      <command>
        DECLARE @ResultTable TABLE
        (
        user_id NVARCHAR(64),
        lastname NVARCHAR(128),
        firstname NVARCHAR(128),
        username NVARCHAR(128),
        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,
        u.descUserCn AS username,
        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 = @mandator_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 = @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 ISNULL(@targetGroup_id, tg.id) = 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 = @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',
        username 'Kennung',
        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="a785aecc-668a-4609-9613-394bd4d708c2" isSystem="True" name="Mandant" reportParameterType_id="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" queryParameterName="@mandator_id" />
    <Parameter id="bbff9061-3e51-4cd8-b055-4bbdea33ff8a" isSystem="False" name="IDD Qualifizierung" reportParameterType_id="d4ef5ab5-f902-45d1-beb2-2e20b0086ddc" queryParameterName="@qualification_id" />
    <Parameter id="bc95c858-cac7-4bd4-80e9-d617dabe70bd" isSystem="False" name="Zielgruppe abhängig vom Mandanten" reportParameterType_id="cb2591ab-7198-4b1a-a411-12e325f6465b" queryParameterName="@targetGroup_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="6b8fa242-5449-45b3-a81a-65a7e5e3b51d" isSystem="True" name="Mandator" datatype="Mandator" dataValueField="" dataTextField="" />
    <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 = @mandator_id AND tblObjects.deleted IS NULL
        AND periodBeginning = 0 -- only applied to IDD type of qualifications
        ORDER BY tblObjects.title
      </query>
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="True" allowMultiSelect="False" name="Mandant" contextName="Qualifizierung abhängig vom Mandanten" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
    <ParameterType id="cb2591ab-7198-4b1a-a411-12e325f6465b" isSystem="False" name="Zielgruppe abhängig vom Mandanten" 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
        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>
      <Parameters>
        <Parameter id="a785aecc-668a-4609-9613-394bd4d708c2" isRequired="True" allowMultiSelect="False" name="Mandant" contextName="Zielgruppen abhängig vom Mandanten" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </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>