﻿<?xml version="1.0" encoding="utf-8"?>
<ReportsExport>
  <Reports>
    <Report id="3ae86e49-b71c-4a2d-85d6-7b77175d60b3" codekey="ergo_einstellungstest_UsersWithAbortedTests" categoryCodekey="UserStats" name="Benutzer mit Status &quot;EET abgebrochen / nicht durchgeführt (7 Tage-Frist)&quot;" description="Gibt alle Benutzer mit userstatus 2 zurück, die in dem Test mindestens eine Kategorie nicht abgeschlossen haben.">
      <MetaData created="2021-10-05T12:14:22" createdBy="Kaiser, Jan-Patrick (245527)" createdBy_user_id="101393" modified="2022-02-16T09:47:04" 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>
        <Role id="90" />
      </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,userStatus,userStatusStart,uc.customAttribute1 AS "BewerberID",uc.customAttribute2 AS "StellenID"
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 userStatus = 2
AND CAST(userStatusStart AS DATE) = CAST(GETDATE() AS DATE)
AND deleted IS NULL
AND SecurityID = 10
AND NOT 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
	AND suih.status = 2
	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 "Bewerber.Vorname",
Nachname AS "Bewerber.Name",
email AS "Bewerber.Email",
zipcode AS "Bewerber.PLZ",
'38999850' 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
score_summary AS "Bewerber.Stammdaten15", -- Gesamt
StellenID AS "Stelle.ID",
created,
userStatusStart
FROM #usersAndResults
WHERE ((status1 IS NULL OR status1 = 'not attempted' OR status1 = 'incomplete') OR (status2 IS NULL OR status2 = 'not attempted' OR status2 = 'incomplete') OR (status3 IS NULL OR  status3 = 'not attempted' OR status3 = 'incomplete'))
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>