﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="1750ecc4-c0ea-4a68-8e44-8cda47293fdd" codekey="ItemStatusPerYear_Wuerttembergische" categoryCodekey="SpecialPurpose" name="Bildungscontrolling WV" description="Anzahl aller Gelb- und Grün-Status und Summe der Bildungszeit pro Baustein für das angegebenen Jahr.">
      <MetaData created="2023-06-29T07:38:19" createdBy="Rolle, Administrator (Administrator)" createdBy_user_id="12" modified="2023-10-27T10:55:07" modifiedBy="Rolle, Administrator (Administrator)" modifiedBy_user_id="12" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="96ba2868-8baf-4e69-b1fb-d2cc6d6832e8" mandatorName="Wuerttembergische" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="f46b7b71-6e05-4db4-830b-ebcc33373755" isRequired="True" allowMultiSelect="False" name="ThemenbereichBA" contextName="Themenbereich" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isRequired="False" allowMultiSelect="False" name="Zielgruppen Multiselektion" contextName="Zielgruppe" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="f6784ff5-3b69-4f6a-82ab-7c8ed45e98ba" isRequired="True" allowMultiSelect="False" name="FreeYear" contextName="Jahr" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles>
        <Role id="90" />
      </Roles>
      <command>

CREATE TABLE #Result (
    id UNIQUEIDENTIFIER,
    itemTitle NVARCHAR(512),
    itemType NVARCHAR(128),
    created DATETIME,
    educationTime INT,
    itemsYellowFirstHalfYear INT,
    itemsGreenFirstHalfYear INT,
    itemsYellowSecondHalfYear INT,
    itemsGreenSecondHalfYear INT,
    itemsYellowInYear INT,
    itemsGreenInYear INT,
    educationTimeInYear INT,
    allYellowItems INT,
    allGreenItems INT
)

CREATE TABLE #AllItems (
    eduOffer_id UNIQUEIDENTIFIER,
    module_id UNIQUEIDENTIFIER,
    item_id UNIQUEIDENTIFIER
)

-- get all candidate items for output
INSERT INTO #AllItems (eduOffer_id, module_id, item_id)
SELECT eduoffers.id AS eduOfferId,
modules.id as moduleId,
items.id AS itemId
FROM tblTopicAreasCurriculumEduOffers
JOIN tblItems AS eduOffers ON tblTopicAreasCurriculumEduOffers.eduOffer_id = eduOffers.id AND eduOffers.deleted IS NULL
JOIN tblEduOffersModules ON tblEduOffersModules.eduOffer_id = eduOffers.id
JOIN tblItems AS modules ON modules.id = tblEduOffersModules.module_id AND modules.deleted IS NULL
JOIN tblModuleItems ON tblModuleItems.module_id = modules.id
JOIN tblItems AS items ON items.id = tblModuleItems.item_id AND items.deleted IS NULL
WHERE topicArea_id = @topicAreaEduOffers
--AND EXISTS(SELECT 1
--    FROM tblStatusUserItemHistory
--    WHERE tblStatusUserItemHistory.item_id = items.id
--           -- OR (items.itemType_id = 8 AND tblStatusUserItemHistory.item_id IN (SELECT id FROM tblTrainings WHERE trainingTitle_id = items.id))    )
--    AND status IN (1,2)
--    AND tblStatusUserItemHistory.startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
--    )


---- add the trainings
--INSERT INTO #AllItems (eduOffer_id, module_id, item_id)
--SELECT distinct null, null, tblTrainings.id
--FROM #AllItems
--JOIN tblTrainingTitles ON tblTrainingTitles.id = item_id
--JOIN tblTrainings ON tblTrainings.trainingTitle_id = tblTrainingTitles.id
--WHERE EXISTS(SELECT 1 FROM tblStatusUserItemHistory
--                WHERE tblStatusUserItemHistory.item_id = tblTrainings.id
--                AND status IN (1,2)
--                AND tblStatusUserItemHistory.startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59')

DECLARE @itemTypes dbo.typeIntStringPairs -- (2, 'Seminartermin') Seminare werden nicht berücksichtigt, da Württembergische keine Seminare hat
INSERT INTO @itemTypes VALUES (0, 'Test'),(1, 'Lernprogramm'),(6, 'Dokument'),(9,'Video'),(1000, 'Bildungsangebot'),(1001,'Modul')

-- insert all items once into result
;WITH allEduOffers AS (
SELECT DISTINCT eduOffer_id
FROM #AllItems
)
-- insert edu offers
INSERT INTO #Result(id,
    itemTitle,
    itemType,
    created,
    educationTime,
    itemsYellowFirstHalfYear,
    itemsGreenFirstHalfYear,
    itemsYellowSecondHalfYear,
    itemsGreenSecondHalfYear,
    itemsYellowInYear,
    itemsGreenInYear,
    educationTimeInYear,
    allYellowItems,
    allGreenItems)
SELECT tblItems.id
    ,ISNULL(tblItems.titleForLearners, tblItems.title) as itemTitle
    ,itemTypes.value AS itemType
    ,tblItems.created
    ,tblItems.educationTime
    ,NULL AS itemsYellowFirstHalfYear
    ,NULL AS itemsGreenFirstHalfYear
    ,NULL AS itemsYellowSecondHalfYear
    ,NULL AS itemsGreenSecondHalfYear
    ,NULL AS itemsYellowInYear
    ,NULL AS itemsGreenInYear
    ,NULL AS educationTimeInYear
    ,NULL AS allYellowItems
    ,NULL AS allGreenItems
FROM allEduOffers
JOIN tblItems ON tblItems.id = eduOffer_id
JOIN @itemTypes AS itemTypes ON itemTypes.[key] = tblItems.itemType_id
ORDER BY itemTitle

;WITH modules AS
(
SELECT DISTINCT module_id FROM #AllItems
)
INSERT INTO #Result(id,
    itemTitle,
    itemType,
    created,
    educationTime,
    itemsYellowFirstHalfYear,
    itemsGreenFirstHalfYear,
    itemsYellowSecondHalfYear,
    itemsGreenSecondHalfYear,
    itemsYellowInYear,
    itemsGreenInYear,
    educationTimeInYear,
    allYellowItems,
    allGreenItems)
SELECT tblItems.id
    ,ISNULL(tblItems.titleForLearners, tblItems.title) as itemTitle
    ,itemTypes.value AS itemType
    ,tblItems.created
    ,tblItems.educationTime
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-06-30 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowFirstHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-06-30 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenFirstHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-07-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowSecondHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-07-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenSecondHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowInYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenInYear
    ,(SELECT SUM(educationTime) AS et
        FROM tblUserItemScores
       WHERE tblUserItemScores.item_id = modules.module_id
       AND YEAR(tblUserItemScores.endDate) = @freeYear
       AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblUserItemScores.user_id))
     ) AS educationTimeInYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
     ) AS allYellowItems
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id)))
      AS allGreenItems
FROM modules
JOIN tblItems ON tblItems.id = module_id
JOIN @itemTypes AS itemTypes ON itemTypes.[key] = tblItems.itemType_id
ORDER BY itemTitle

;WITH items AS
(
SELECT DISTINCT item_id FROM #AllItems
)
INSERT INTO #Result(id,
    itemTitle,
    itemType,
    created,
    educationTime,
    itemsYellowFirstHalfYear,
    itemsGreenFirstHalfYear,
    itemsYellowSecondHalfYear,
    itemsGreenSecondHalfYear,
    itemsYellowInYear,
    itemsGreenInYear,
    educationTimeInYear,
    allYellowItems,
    allGreenItems)
SELECT tblItems.id
    ,ISNULL(tblItems.titleForLearners, tblItems.title) as itemTitle
    ,itemTypes.value AS itemType
    ,tblItems.created
    ,tblItems.educationTime
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-06-30 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowFirstHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-06-30 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenFirstHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-07-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowSecondHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-07-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenSecondHalfYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsYellowInYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2 AND startDate BETWEEN CAST(@freeYear AS VARCHAR(4)) + '-01-01' AND CAST(@freeYear AS VARCHAR(4)) + '-12-31 23:59:59'
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS itemsGreenInYear
    ,(SELECT SUM(educationTime) AS et
        FROM tblUserItemScores
       WHERE tblUserItemScores.item_id = items.item_id
       AND YEAR(tblUserItemScores.endDate) = @freeYear
       AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblUserItemScores.user_id))
      ) AS educationTimeInYear
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 1
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS allYellowItems
    ,(SELECT count(user_id)
        FROM tblStatusUserItemHistory
        WHERE tblStatusUserItemHistory.item_id = tblItems.id
        AND status = 2
        AND (@targetGroupId IS NULL
        OR EXISTS(SELECT 1 FROM tblUsersTargetGroups
                   WHERE tblUsersTargetGroups.targetGroup_id = @targetGroupId
                   AND tblUsersTargetGroups.UserCn = tblStatusUserItemHistory.user_id))
    ) AS allGreenItems
FROM items
JOIN tblItems ON tblItems.id = item_id
JOIN @itemTypes AS itemTypes ON itemTypes.[key] = tblItems.itemType_id -- with this JOIN we eliminate Trainings
ORDER BY itemType, itemTitle

SELECT -- id,
itemTitle AS 'Bildungsangebote / Modul / Baustein',
itemType AS Bausteintyp,
created AS 'Veröffentlichungsdatum',
educationTime AS Bildungszeit,
itemsYellowFirstHalfYear AS 'Bausteine in Bearbeitung im ersten Halbjahr',
itemsGreenFirstHalfYear AS 'Bausteine erfüllt im ersten Halbjahr',
itemsYellowSecondHalfYear AS 'Bausteine in Bearbeitung im zweiten Halbjahr',
itemsGreenSecondHalfYear AS 'Bausteine erfüllt im zweiten Halbjahr',
itemsYellowInYear AS 'Bausteine in Bearbeitung im Jahr',
itemsGreenInYear AS 'Bausteine erfüllt im Jahr',
educationTimeInYear as 'Bildungszeit im Jahr',
allYellowItems AS 'Bausteine in Bearbeitung seit Veröffentlichung',
allGreenItems AS 'Bausteine erfüllt seit Veröffentlichung'
FROM #Result
ORDER BY created

DROP TABLE #AllItems

DROP TABLE #Result
</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="f46b7b71-6e05-4db4-830b-ebcc33373755" isSystem="False" name="ThemenbereichBA" reportParameterType_id="7385637e-e34b-40e3-b872-208190ccbf32" queryParameterName="@topicAreaEduOffers" />
    <Parameter id="93460158-2520-48a7-ac64-9350fa3d159f" isSystem="True" name="Zielgruppen Multiselektion" reportParameterType_id="f4c178f7-fa5a-4229-92ea-2839c7c82ea4" queryParameterName="@targetGroupId" />
    <Parameter id="f6784ff5-3b69-4f6a-82ab-7c8ed45e98ba" mandator_id="96ba2868-8baf-4e69-b1fb-d2cc6d6832e8" isSystem="False" name="FreeYear" reportParameterType_id="51b6166f-7a5a-4db3-b4ae-d9b9632dc129" queryParameterName="@freeYear" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="7385637e-e34b-40e3-b872-208190ccbf32" isSystem="False" name="Auswahlliste ThemenbereichBA" datatype="GuidDDL" dataValueField="id" dataTextField="title">
      <query>SELECT DISTINCT topicArea_id AS id,
 dbo.fn_GetResourceString(localizedTitle_id, 1031, 1, 1031) AS title
FROM tblTopicAreasCurriculumEduOffers
JOIN tblTopicAreas ON tblTopicAreas.id = tblTopicAreasCurriculumEduOffers.topicArea_id AND deleted IS NULL
WHERE tblTopicAreas.mandator_id = @current_mandator_id
ORDER BY title
</query>
    </ParameterType>
    <ParameterType id="f4c178f7-fa5a-4229-92ea-2839c7c82ea4" isSystem="False" name="Auswahl 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="51b6166f-7a5a-4db3-b4ae-d9b9632dc129" isSystem="True" name="Integer" datatype="Integer" dataValueField="" dataTextField="" />
  </ParameterTypes>
</ReportsExport>