﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="e10c8123-970f-4a38-8c7b-f46e09ca9d2a" codekey="ergo_einstellungstest_ResultPerUser" categoryCodekey="LearningPrograms" name="Einstellungstest: Ergebnis per User" description="Gibt das Testergebnis per Benutzer aus.">
      <MetaData created="2021-08-02T11:39:11" createdBy="Kaiser, Jan-Patrick (245527)" createdBy_user_id="101393" modified="2021-12-02T11:49:06" modifiedBy="Kaiser, Jan-Patrick (245527)" modifiedBy_user_id="101393" />
      <ExecutionDetails format="TableResult" commandType="SqlCommandOrQuery" exportHandler="" adminControl="" exportMultipleTablesToSheets="False" datesWithTime="False" extraParams="" />
      <Mandators mandatorMode="OnlyOwner" mandator_id="bfa70f6b-484c-49da-9ad7-1ccd8f0d684c" mandatorName="ergo-einstellungstest" isStandard="False" isUsedByMenu="False" />
      <Roles />
      <command>/**
 * Setup
**/

DECLARE @mandator_id UNIQUEIDENTIFIER = (SELECT id FROM tblMandators WHERE name = 'ergo-einstellungstest')
DECLARE @script_user_id int = dbo.fn_GetAutoScriptUserId(@mandator_id)

/**
 * 
 * All active users
 * 
**/
SELECT intUserCn, Vorname, Nachname,contact.zipcode, contact.email, created,uc.customAttribute1 AS "BewerberID",uc.customAttribute2 AS "StellenID",u.deleted,u.userStatus,u.userStatusStart
INTO #users
FROM tableUsers u
INNER JOIN tblUserCustomAttributes uc ON uc.user_id = u.intUserCn
INNER JOIN tblUsersContacts contact ON contact.user_id = u.intUserCn AND contactType_id = 1
WHERE mandator_id = @mandator_id
AND createdBy_user_id = @script_user_id
AND SecurityID = 10
AND EXISTS(
	SELECT TOP 1 suih.* FROM tblStatusUserItemHistory suih
	INNER JOIN tblItems i ON i.id = suih.item_id AND i.mandator_id = @mandator_id
	WHERE suih.user_id = u.intUserCn
	AND i.itemType_id = 1
	ORDER BY status DESC
)




/**
 * Find best result for each user
**/

SELECT 
u.*,
items.status,
(select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 4) AS "status1",
(select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 5) AS "status2",
(select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 6) AS "status3",
items.percentage,
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 1) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 1) AS int) 
END AS "score_part1",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 7) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 7) AS int)
END AS "score_part1_raw",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 10) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 10) AS int) 
END AS "max_score_part1",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 2) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 2)  AS int) 
END AS "score_part2",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 8) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 8)  AS int)
END AS "score_part2_raw",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 11) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 11)  AS int) 
END AS "max_score_part2",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 3) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 3)  AS int)
END AS "score_part3",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 9) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 9)  AS int)
END AS "score_part3_raw",
CASE
WHEN (select value from fn_SplitByDelimiter(items.Data,'|')WHERE position = 12) = 'undefined' THEN 0
ELSE CAST((select value from fn_SplitByDelimiter(items.Data,'|') WHERE position = 12)  AS int)
END AS "max_score_part3",
(SELECT score FROM tblThemeSessionSCORMData WHERE themeSession_id = items.session_id AND scoIdentifier = 'ITEM-SUMMARY') AS "score_summary",
items.Data
INTO #usersAndResults
FROM #users u
OUTER APPLY(
	SELECT TOP 1 tblStatusUserItemHistory.*,scorm.Data FROM tblStatusUserItemHistory
	INNER JOIN tblItems i ON i.id = tblStatusUserItemHistory.item_id AND i.mandator_id = @mandator_id
	INNER JOIN tblSCORMData scorm ON scorm.UserID = tblStatusUserItemHistory.user_id AND scorm.theme_id = tblStatusUserItemHistory.item_id and Name ='cmi.viwis.global.suspend_data'
	WHERE user_id = u.intUserCn
	AND i.itemType_id = 1
	ORDER BY status DESC, percentage DESC
) AS items

SELECT 
BewerberID AS "Bewerber.ID",
Vorname AS "Vorname",
Nachname AS "Nachname",
email AS "Email",
zipcode AS "PLZ",
CASE
WHEN (status1 = 'not attempted' AND status2 = 'not attempted' AND status3 = 'not attempted' ) OR (status1 IS NULL AND status2 IS NULL AND status3 IS NULL ) THEN '1000046' -- zum EET eingeladen
WHEN ((status1 = 'not attempted' OR status1 = 'incomplete') OR (status2 = 'not attempted' OR status2 = 'incomplete') OR (status3 = 'not attempted' OR status3 = 'incomplete'))THEN '38999849' -- Teilnahme am EET
WHEN (status1 = 'completed' AND status2 = 'completed' AND status3 = 'completed' )  AND (
	score_part1 &lt; 30 OR
	score_part2 &lt; 30 OR
	score_part3 &lt; 30 
) THEN '1000110'
WHEN (status1 = 'completed' AND status2 = 'completed' AND status3 = 'completed' ) AND (	
	CAST((score_part1_raw + score_part2_raw + score_part3_raw) AS float) / 
	CAST((max_score_part1 + max_score_part2 + max_score_part3) AS float) * 100 
) &gt; 66 THEN '1000045' -- EET bestanden
ELSE '1000110' -- EET nicht bestanden
END AS "Bewerbung.Status",
(SELECT 'Statusänderung durch VIWIS Import') AS "Bewerbung.StatusBemerkung",
score_part1 AS "Bewerber.Stammdaten11", -- Part1
score_part2 AS "Bewerber.Stammdaten13", -- Mathe
score_part3 AS "Bewerber.Stammdaten14", -- Allgemeinwissen
ROUND(
CAST((score_part1_raw + score_part2_raw + score_part3_raw) AS float) / 
CAST((max_score_part1 + max_score_part2 + max_score_part3) AS float) * 100 
,0) AS "Bewerber.Stammdaten15", -- Gesamt
CAST((score_part1_raw + score_part2_raw + score_part3_raw) AS float) / 
CAST((max_score_part1 + max_score_part2 + max_score_part3) AS float) * 100 
AS "Kontrolle", -- Gesamt
StellenID AS "Stelle.ID",
userStatus AS "Status",
status1,
status2,
status3,
userStatus AS "ausgeschieden am",
created AS "Erstellt am ",
deleted AS "gelöscht am",
Data
FROM #usersAndResults
ORDER BY created DESC

IF OBJECT_ID('tempdb..#users') IS NOT NULL
	DROP TABLE #users

IF OBJECT_ID('tempdb..#usersAndResults') IS NOT NULL
	DROP TABLE #usersAndResults</command>
    </Report>
  </Reports>
</ReportsExport>