﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="b9f91a8b-e290-47f0-947f-b8bab8d743ec" codekey="WEKA_StatusAllerLernprogramme" categoryCodekey="LearningPrograms" name="Status aller Lernprogramme" description="Der Report gibt für alle für den aktuellen Nutzer verfügbaren  Lerner den Bearbeitungsstatus für alle diesen Nutzern derzeit zugeordneten Lernprogramme aus.&#xD;&#xA;&#xD;&#xA;Der Report gibt für alle Nutzer der Zielgruppen, für die der aktuelle Nutzer berechtigt ist, den Lernstand “aller” Lernprogramme aus, die diesen Nutzern aktuell zugeordnet sind.&#xD;&#xA;&#xD;&#xA;Besonderheit dabei ist, dass ein Lerprogramm dem Nutzer wahlweise in deutsch oder englisch angeboten wird und dazu jeweils der “beste” status der beiden Varianten ausgegeben werden soll.&#xD;&#xA;&#xD;&#xA;Die auszuwertenden  Lernprogramme haben Kennzeichen nach dem Muster [Bezeichnung]_[Sprache] Z.B. sind die WBTs mit den Kennzeichen A01_DE und A01_EN zwei  Sprachvarianten  eines WBTs. &#xD;&#xA;">
      <MetaData created="2016-06-07T14:50:10" createdBy="Administrator VIWIS (Administrator)" createdBy_user_id="3" modified="2016-07-07T12:21:44" modifiedBy="Gabi Wappler" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="IncludeMandators" mandator_id="cf85efc9-150b-4eee-8c20-929a112b658c" isStandard="False" isUsedByMenu="False">
        <Mandator mandatorName="adidas01" />
      </Mandators>
      <Roles>
        <Role id="30" />
        <Role id="80" />
        <Role id="90" />
      </Roles>
      <command>--DECLARE @current_user_id INT = 101
--DECLARE @current_mandator_id UNIQUEIDENTIFIER = 'CF85EFC9-150B-4EEE-8C20-929A112B658C' --select id from tblMandators where name = 'testallfeatures'


-- select all WBTs fulfilling tag criterium and available to the current user
;
WITH userWBT(user_id, 
             theme_id, 
             isMandatory)
    AS (SELECT v_Users.intUserCn, 
               tblItems.id, 
               MAX(tblEduOffers.isMandatory)AS isMandatory
          FROM tblItems
               INNER JOIN tblModuleItems ON tblModuleItems.item_id = tblItems.id
                                        --AND tblItems.itemType_id = 1
                                        --AND tblItems.deleted IS NULL
               INNER JOIN tblEduOffersModules ON tblEduOffersModules.module_id = tblModuleItems.module_id
               INNER JOIN tblEduOffers ON tblEduOffers.id = tblEduOffersModules.eduOffer_id
               INNER JOIN tblEduOffersTargetGroups ON tblEduOffersTargetGroups.eduOffer_id = tblEduOffersModules.eduOffer_id
               INNER JOIN tblUsersTargetGroups ON tblUsersTargetGroups.targetGroup_id = tblEduOffersTargetGroups.targetGroup_id --  targetGroups.targetGroup_id
               INNER JOIN v_Users ON v_Users.intUserCn = tblUsersTargetGroups.UserCn
               -- LEFT JOIN tblTargetGroupManagers ON tblTargetGroupManagers.targetGroup_id = tblUsersTargetGroups.targetGroup_id AND tblTargetGroupManagers.user_id =  @current_user_id               
         WHERE tblItems.itemType_id = 1 AND tblItems.deleted IS NULL AND (tblItems.tag LIKE '%[_]DE' OR tblItems.tag LIKE '%[_]EN')
                  AND (EXISTS(SELECT * FROM v_Users WHERE intUserCn = @current_user_id AND SecurityID = 100) -- Is Platform Admin
             OR EXISTS(SELECT *   FROM tblRolesFunctions -- Has FcnIsAuthorizedForAllTGs Function
                         WHERE mandator_id = @current_mandator_id AND function_id = 122
                           AND role_id = (SELECT SecurityID FROM v_Users WHERE intUserCn = @current_user_id)) 
             OR EXISTS(SELECT user_id from tblUsersTargetGroups JOIN tblTargetGroupManagers -- Is TGM for the TG
                                ON tblTargetGroupManagers.targetGroup_id = tblUsersTargetGroups.targetGroup_id AND tblTargetGroupManagers.user_id = @current_user_id
                                AND tblUsersTargetGroups.UserCn = v_Users.intUserCn))

         GROUP BY intUserCn, 
                  tblItems.id)

    SELECT DISTINCT v_Users.intUserCn, 
                    v_Users.Nachname, 
                    v_Users.Vorname, 
                    v_Users.descUserCn, 
                    isMandatory, 
                    tblItems.id, 
                    ISNULL(tblItems.titleForLearners, tblItems.title)AS title, 
                    tblItems.tag, 
                    SUBSTRING(tblItems.tag, 0, LEN(tblItems.tag) - 3)AS tagCriterium, 
                    status INTO #temp
      FROM userWBT
           INNER JOIN tblItems ON tblItems.id = theme_id
           INNER JOIN v_Users ON v_users.intUserCn = user_id
           LEFT JOIN tblStatusUserItemHistory ON tblStatusUserItemHistory.item_id = tblItems.id
                                             AND tblStatusUserItemHistory.user_id = v_Users.intUserCn
                                             AND tblStatusUserItemHistory.status = 2
 --    ORDER BY Nachname, Vorname, descUserCn, tag, tagCriterium, title
;
WITH result
    AS (SELECT *, 
               ROW_NUMBER()OVER(PARTITION BY intUserCn, 
                                             CAST(tagcriterium AS NVARCHAR(900))ORDER BY status DESC, tag) AS ranking
          FROM #temp)
    SELECT Nachname, 
           Vorname, 
           descUserCn AS Kennung, 
           title AS Lernprogramm, 
           CASE
               WHEN isMandatory = 1 THEN 'Ja'
               ELSE 'Nein'
           END AS Verpflichtend, 
           CASE
               WHEN status = 2 THEN 'Ja'
               ELSE 'Nein'
           END AS 'Zertifikat erhalten'
      FROM result
     WHERE ranking = 1
     ORDER BY Nachname, Vorname, descUserCn, title

DROP TABLE #temp
</command>
    </Report>
  </Reports>
</ReportsExport>