﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="6aea1041-1e92-4cdc-bbdc-c3c250d68099" codekey="EduOffer Versioning Overview" categoryCodekey="Testing" name="EduOffer Versioning Overview" description="Display the version history of the Education Offer">
      <MetaData created="2013-11-13T15:13:28" createdBy="Administrator VIWIS (Administrator)" createdBy_user_id="3" modified="2014-08-04T12:38:30" modifiedBy="Administrator VIWIS" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="cf85efc9-150b-4eee-8c20-929a112b658c" isStandard="False" isUsedByMenu="False" />
      <Parameters>
        <Parameter id="fe768a68-c33b-4be0-815b-10405ccf541d" isRequired="True" name="Bildungsangebot" contextName="Bildungsangebot" defaultValue="" renderHint="Undefined" disableParameter="DontDisable" />
        <Parameter id="17e1339a-f602-4ddb-a763-50b517d774de" isRequired="True" name="Wahrheitswert" contextName="Nur aktuelle Version" defaultValue="1" renderHint="Undefined" disableParameter="DontDisable" />
      </Parameters>
      <Roles />
      <command>
        --DECLARE @eduOffer_id UNIQUEIDENTIFIER
        --SET @eduOffer_id = 'E8FBAC90-F333-4A8F-A150-3EE86E85B103' --'29C6E80F-DF5C-4F5F-B8B1-12638B91966F'

        DECLARE @colName NVARCHAR(100)
        DECLARE @maxItemVersion TABLE
        (
        item_id UNIQUEIDENTIFIER,
        version INT
        )

        /*this is the current module item definition*/
        SELECT(
        SELECT MAX(mainVersion)
        FROM tblVersionMap
        WHERE id = @eduOffer_id)AS 'Current ModuleStructure Version',
        tblItemTypes.codekey,
        tblItems.id,
        tblItems.version AS 'ModuleVersion',
        tblItems.title,
        tblItems.titleForLearners
        FROM tblEduOffersModules INNER JOIN tblItems ON tblItems.id = tblEduOffersModules.module_id
        INNER JOIN tblItemTypes ON tblItemTypes.id = tblItems.itemType_id
        WHERE eduOffer_id = @eduOffer_id
        ORDER BY sortOrder

		IF ISNULL(@boolean,0) &lt;&gt; 1 
		BEGIN
		SELECT * INTO #tmpHelper
        FROM tblVersionMap
        WHERE id = @eduOffer_id AND tableName = 'tblEduOffersModulesVersions'

        /* version of module, items themselves, item version*/
        DECLARE @eduOfferVersion INT
        DECLARE @nextEduOfferCreateDate DATETIME
        DECLARE @curEduOfferCreateDate DATETIME
        DECLARE modCursor CURSOR
        FOR SELECT DISTINCT mainVersion, created
        FROM #tmpHelper
        ORDER BY mainVersion DESC
        OPEN modCursor
        FETCH modCURSOR INTO @eduOfferVersion, @curEduOfferCreateDate
        WHILE @@FETCH_STATUS = 0
        BEGIN
        CREATE TABLE #tmpModuleVersionItems(eduOfferVersion INT NULL,
        ModuleVersion INT,
        title NVARCHAR(200),
        titelForLearners NVARCHAR(200),
        sortOrder INT,
        item_id UNIQUEIDENTIFIER)
        SET @colName = 'EduOffer Structure Version ' + CAST(@eduOfferVersion AS NVARCHAR(20))
        /* clear table before inserting items*/
        TRUNCATE TABLE #tmpModuleVersionItems
        EXEC tempdb..sp_rename '#tmpModuleVersionItems.eduOfferVersion', @colName, 'COLUMN'

        INSERT INTO #tmpModuleVersionItems
        SELECT NULL,
        tblModuleVersions.version,
        tblItemVersions.title,
        tblItemVersions.titleForLearners,
        tblEduOffersModulesVersions.sortOrder,
        tblModuleVersions.id
        FROM #tmpHelper AS EduOffers INNER JOIN tblEduOffersModulesVersions ON tblEduOffersModulesVersions.eduOffer_id = EduOffers.id
        AND tblEduOffersModulesVersions.version = EduOffers.subVersion
        INNER JOIN tblModuleVersions ON tblModuleVersions.id = tblEduOffersModulesVersions.module_id
        INNER JOIN tblItemVersions ON tblItemVersions.id = tblModuleVersions.id AND tblModuleVersions.version = tblItemVersions.version
        WHERE eduOffer_id = @eduOffer_id AND EduOffers.mainVersion = @eduOfferVersion
        ORDER BY tblEduOffersModulesVersions.sortOrder

        /*we have to find all items only which were created or modifed in the daterange between this version*/
        SET @nextEduOfferCreateDate = NULL
        IF EXISTS(SELECT created
        FROM tblVersionMap
        WHERE id = @eduOffer_id
        AND mainVersion = @eduOfferVersion + 1
        AND tableName = 'tblEduOffersModulesVersions')
        SELECT @nextEduOfferCreateDate = created
        FROM tblVersionMap
        WHERE id = @eduOffer_id
        AND mainVersion = @eduOfferVersion + 1
        AND tableName = 'tblEduOffersModulesVersions'


        IF @nextEduOfferCreateDate IS NOT NULL
        BEGIN
        SELECT A.*
        FROM #tmpModuleVersionItems AS A
        INNER JOIN
        tblItemVersions ON tblItemVersions.id = A.item_id AND A.ModuleVersion = tblItemVersions.version
        WHERE (modified IS NULL OR modified &lt; @nextEduOfferCreateDate)
        ORDER BY sortOrder, Moduleversion DESC
        END
        ELSE
        BEGIN
        SELECT
        DISTINCT A.*
        FROM #tmpModuleVersionItems AS A
        INNER JOIN
        tblItemVersions ON tblItemVersions.id = A.item_id AND A.ModuleVersion = tblItemVersions.version
        WHERE
        ModuleVersion &gt;= (SELECT MAX(version) FROM tblItemVersions WHERE id = A.item_id AND ISNULL(modified,created) &lt; @curEduOfferCreateDate)
        AND
        (modified &gt; @curEduOfferCreateDate OR (created &lt; @curEduOfferCreateDate AND modified IS NULL) OR (ModuleVersion = 0 AND modified &lt; @curEduOfferCreateDate))
        ORDER BY sortOrder, ModuleVersion DESC
        END
        DROP TABLE #tmpModuleVersionItems
        FETCH modCURSOR INTO @eduOfferVersion, @curEduOfferCreateDate
        END
        CLOSE modCursor
        DEALLOCATE modCursor
        DROP TABLE #tmpHelper
		END</command>
    </Report>
  </Reports>
  <Parameters>
    <Parameter id="fe768a68-c33b-4be0-815b-10405ccf541d" isSystem="True" name="Bildungsangebot" reportParameterType_id="1c8f3253-b45b-491e-8539-5214604e259c" queryParameterName="@eduOffer_id" />
    <Parameter id="17e1339a-f602-4ddb-a763-50b517d774de" mandator_id="cf85efc9-150b-4eee-8c20-929a112b658c" isSystem="False" name="Wahrheitswert" reportParameterType_id="411ec93b-ab23-41ba-91d6-e7dc0235b5af" queryParameterName="@boolean" />
  </Parameters>
  <ParameterTypes>
    <ParameterType id="1c8f3253-b45b-491e-8539-5214604e259c" isSystem="True" name="EduOffer" datatype="EduOffer" dataValueField="" dataTextField="" />
    <ParameterType id="411ec93b-ab23-41ba-91d6-e7dc0235b5af" isSystem="True" name="Boolean" datatype="StringDDL" dataValueField="Value" dataTextField="Text">
      <query>
        SELECT 0 AS Value, 'Nein' AS Text
        UNION
        SELECT 1 AS Value, 'Ja' AS Text
      </query>
    </ParameterType>
  </ParameterTypes>
</ReportsExport>