﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="52a5cb7d-922f-49c4-bd49-39f095bb8d67" codekey="BCA-Academy_ThemeResults" categoryCodekey="LearningPrograms" name="Lists all results for all themes, all target groups and all users" description="Lists all results for all themes, all target groups and all users">
      <MetaData created="2010-04-07T15:14:13" createdBy="Administrator BCA-Academy" createdBy_user_id="12" modified="2012-04-12T13:25:12" modifiedBy="Anton Administrator" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="345bbab2-62a8-424d-a6e6-133aeab480a4" mandatorName="BCA-Academy" isStandard="False" isUsedByMenu="False" />
      <Roles>
        <Role id="90" />
      </Roles>
      <command>create table #tempUsersAndTargetGroups
(
	userId	int,
	targetGroupId int,
	joined datetime,
	removed datetime
)

-- insert all current assignments
insert into #tempUsersAndTargetGroups
	select
		tblUsersTargetGroups.userCn,
		tblUsersTargetGroups.targetGroup_id,
		cast(null as datetime),
		cast(null as datetime)
	
	from tblUsersTargetGroups
	inner join v_Users on v_Users.intUserCn=tblUsersTargetGroups.userCn

	where v_Users.mandator_id=@current_mandator_id

-- insert all deleted assignments
insert into #tempUsersAndTargetGroups
	select
		distinct 
			v_Users.intUserCn,
			tblStatsUsersTargetGroups.targetGroup_id,
			cast(null as datetime),
			cast(null as datetime)
	
	from v_Users
	inner join tblStatsUsersTargetGroups on tblStatsUsersTargetGroups.user_id=v_Users.intUserCn and removedTime is not null
	inner join tblTargetGroups on tblTargetGroups.id=tblStatsUsersTargetGroups.targetGroup_id
	
	where v_Users.mandator_id=@current_mandator_id
		and not exists(select * from #tempUsersAndTargetGroups where #tempUsersAndTargetGroups.userId=v_Users.intUserCn and #tempUsersAndTargetGroups.targetGroupId=tblStatsUsersTargetGroups.targetGroup_id)

update #tempUsersAndTargetGroups
	set 
		joined = (select top 1 addedTime from tblStatsUsersTargetGroups where tblStatsUsersTargetGroups.user_id=#tempUsersAndTargetGroups.userId and tblStatsUsersTargetGroups.targetGroup_id=#tempUsersAndTargetGroups.targetGroupId order by addedTime desc),
		removed = (select top 1 removedTime from tblStatsUsersTargetGroups where tblStatsUsersTargetGroups.user_id=#tempUsersAndTargetGroups.userId and tblStatsUsersTargetGroups.targetGroup_id=#tempUsersAndTargetGroups.targetGroupId order by removedTime desc)

update #tempUsersAndTargetGroups
	set removed=null
	where removed&lt;joined

        create table #tempThemesAndTargetGroups
        (
        themeId uniqueidentifier,
        targetGroupId int
        )

        insert into #tempThemesAndTargetGroups
        select
        tblModuleItems.item_id AS theme_id,
        tblTargetGroups.id
        from
        tblTargetGroups
        inner join tblEduOffersTargetGroups on tblEduOffersTargetGroups.targetGroup_id=tblTargetGroups.id
        inner join tblEduOffersModules on tblEduOffersModules.eduOffer_id=tblEduOffersTargetGroups.eduOffer_id
        inner join tblModuleItems on tblModuleItems.module_id=tblEduOffersModules.module_id
        INNER JOIN tblItems ON tblModuleItems.item_id = tblItems.id
        INNER JOIN tblItemTypes ON tblItems.itemType_id = tblItemTypes.id
        AND tblItemTypes.codekey = 'Theme'


        where
        tblTargetGroups.mandator_id=@current_mandator_id

        select
        v_Users.descUserCn as 'Kennung',
        v_Users.nachname as 'Nachname',
        v_Users.vorname as 'Vorname',
        -- v_Users.created as 'Angelegt',
        tblTargetGroups.title as 'Zielgruppe',
        #tempUsersAndTargetGroups.joined as 'Beitrittsdatum zur Zielgruppe',
        #tempUsersAndTargetGroups.removed as 'Austrittsdatum aus der Zielgruppe',
        tblItems.tag as 'Kurs-Tag',
        (select top 1 startTime from tblStatsThemeSessions where tblStatsThemeSessions.user_id=#tempUsersAndTargetGroups.userId and
        tblStatsThemeSessions.theme_id=#tempThemesAndTargetGroups.themeId
        and  startTime&gt;=#tempUsersAndTargetGroups.joined
	order by startTime asc) as 'Kurs begonnen',
	CASE WHEN tblStatusUserCourse.bestComplete&gt;=100 THEN tblStatusUserCourse.bestCompleteDate ELSE NULL END as 'Kurs bestanden'
        -- tblStatusUserCourse.bestComplete as 'Bearbeitet'

        from
        v_Users
        inner join #tempUsersAndTargetGroups on #tempUsersAndTargetGroups.userId=v_Users.intUserCn
        inner join #tempThemesAndTargetGroups on #tempThemesAndTargetGroups.targetGroupId=#tempUsersAndTargetGroups.targetGroupId
        inner join tblThemes on tblThemes.id=#tempThemesAndTargetGroups.themeId
        inner join tblTargetGroups on tblTargetGroups.id=#tempUsersAndTargetGroups.targetGroupId
        inner join tblItems on tblItems.id = tblThemes.id
        left outer join tblStatusUserCourse on tblStatusUserCourse.theme_id=#tempThemesAndTargetGroups.themeId and tblStatusUserCourse.UserId=#tempUsersAndTargetGroups.userId
        WHERE tblItems.deleted IS NULL
        order by Nachname, Vorname, Zielgruppe, [Kurs-Tag], v_Users.descUserCn

        drop table #tempThemesAndTargetGroups
        drop table #tempUsersAndTargetGroups
      </command>
    </Report>
  </Reports>
</ReportsExport>