﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="ca6b1f38-cf43-4f64-aca9-2ab811ca1833" codekey="ADAC_IDDEvaluationDynamic" categoryCodekey="CreditPoints" name="Auswertung IDD dynamisch" description="Auswertung IDD dynamisch">
      <MetaData created="2019-01-24T11:58:02" createdBy="Administrator Zentrale (Administrator)" createdBy_user_id="2" modified="2019-01-24T11:58:02" 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="dc1cded4-8e57-43a0-b61c-eac741de2286" isRequired="True" allowMultiSelect="False" name="Mandant Name" contextName="Mandant" defaultValue="Zentrale" renderHint="DropDownList" disableParameter="DontDisable" />
        <Parameter id="43003502-6093-40eb-9900-015d4d65bb06" isRequired="True" allowMultiSelect="False" name="IDD Qualifizierung CodeKey" contextName="Qualifizierung" defaultValue="" renderHint="DropDownList" disableParameter="DontDisable" />
        <Parameter id="755fd2e8-65c6-4a51-9d8e-a9a3f4940f97" isRequired="False" allowMultiSelect="False" name="Zielgruppe abhängig vom Mandanten (Mandant Name)" 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>
      </Roles>
      <command>
        --declare @mandator_name nvarchar(128)
        --declare @qualification_referenceKey nvarchar(128)
        --declare @targetGroup_title nvarchar(128)
        --declare @current_user_id int
        --DECLARE @current_mandator_id UNIQUEIDENTIFIER
        --declare @idd_year int

        --set @mandator_name = 'TestAllFeatures'
        --set @qualification_referenceKey = 'ANOVA'
        --set @targetGroup_title = 'ANOVA'
        --SET @current_user_id = 12
        --SELECT @current_mandator_id = id from tblMandators where name = @mandator_name
        --set @idd_year = 2018


        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
        INNER JOIN tblMandators m ON tg.mandator_id = m.id
        WHERE utg.userCn = u.intUserCn
        AND m.name = @mandator_name
        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 tblMandators m ON u.mandator_id = m.id
        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
        INNER JOIN tblMandators tgmandator ON tg.mandator_id = tgmandator.id
        WHERE m.name = @mandator_name
        AND q.referenceKey = @qualification_referenceKey
        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_title, tg.title) = tg.title
        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 tgmandator.name = @mandator_name
        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
        tblQualifications.referenceKey = @qualification_referenceKey
        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="dc1cded4-8e57-43a0-b61c-eac741de2286" isSystem="True" name="Mandant Name" reportParameterType_id="974902ef-fc47-4481-8adb-f07f400fea29" queryParameterName="@mandator_name" />
    <Parameter id="43003502-6093-40eb-9900-015d4d65bb06" isSystem="False" name="IDD Qualifizierung CodeKey" reportParameterType_id="813e2412-97e9-460b-a2e8-4d8e7bcbe402" queryParameterName="@qualification_referenceKey" />
    <Parameter id="755fd2e8-65c6-4a51-9d8e-a9a3f4940f97" isSystem="False" name="Zielgruppe abhängig vom Mandanten (Mandant Name)" reportParameterType_id="edc0f636-4626-4f0f-b3fe-6266551eb227" queryParameterName="@targetGroup_title" />
    <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="974902ef-fc47-4481-8adb-f07f400fea29" isSystem="False" name="Mandator Name" datatype="StringDDL" dataValueField="key" dataTextField="value">
      <query>
        SELECT name AS [key], name AS value
        FROM tblMandators
        WHERE tblMandators.isTemplate = 0
        ORDER BY value ASC
      </query>
    </ParameterType>
    <ParameterType id="813e2412-97e9-460b-a2e8-4d8e7bcbe402" isSystem="False" name="IDD Qualifizierung CodeKey" datatype="StringDDL" dataValueField="referenceKey" dataTextField="title">
      <query>
        SELECT tblQualifications.referenceKey, tblObjects.title
        FROM tblQualifications
        INNER JOIN tblObjects ON tblObjects.id = tblQualifications.id
        INNER JOIN tblMandators ON tblObjects.mandator_id = tblMandators.id
        WHERE tblMandators.name = @mandator_name AND tblObjects.deleted IS NULL
        AND periodBeginning = 0 -- only applied to IDD type of qualifications
        ORDER BY tblObjects.title
      </query>
      <Parameters>
        <Parameter id="dc1cded4-8e57-43a0-b61c-eac741de2286" isRequired="True" allowMultiSelect="False" name="Mandant Name" contextName="Qualifizierung abhängig vom Mandanten" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
    </ParameterType>
    <ParameterType id="edc0f636-4626-4f0f-b3fe-6266551eb227" isSystem="False" name="Zielgruppe abhängig vom Mandanten (Mandant Name)" datatype="StringDDL" dataValueField="key" dataTextField="value">
      <query>
        SELECT tblTargetGroups.title AS [key], tblTargetGroups.title AS value
        FROM tblTargetGroups
        INNER JOIN tblMandators ON tblMandators.id = tblTargetGroups.mandator_id
        WHERE tblMandators.name = @mandator_name
        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="dc1cded4-8e57-43a0-b61c-eac741de2286" isRequired="True" allowMultiSelect="False" name="Mandant Name" contextName="Zielgruppen abhängig vom Mandanten (Mandant Name)" 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>