GetUserTrainings
Qubes 8.0 Récupération des formations utilisateur
Syntaxe
function GetUserTrainings(docIds: array of Integer; userIds: array of Integer; onlyActiveIfNoFilter: Boolean = True): array of TUserTraining
docIds: filtre sur une liste d'ID de documents (peut être laissé vide)
userIds: filtre sur une liste d'utilisateurs (peut être laissé vide)
onlyActiveIfNoFilter: filtre sur les documents valides et/ou sur les utilisateurs actifs si la liste correspondante est vide
Remarques
La fonction récupère toutes les formations utilisateurs de la base, réalisées ou non.
On peut filtrer sur une liste de documents et/ou une liste d'utilisateurs.
Si la liste docIds est vide et onlyActiveIfNoFilter vaut True, on filtre sur les documents approuvés ou en application.
Si la liste userIds est vide et onlyActiveIfNoFilter vaut True, on filtre sur les utilisateurs actifs de la base de données.
Exemples
- Récupération de la liste des documents pour lesquels un utilisateur a des formations valides
uses QuBESUsers, QubesTrainings, QuBESDocuments;
var userId := UserIDFromLogin('user1');
for var training in GetUserTrainings([], [userId]) do
if training.ValidTo >= Now then
PrintLn(DocRUDForDocID(training.DocId));
var userId := UserIDFromLogin('user1');
for var training in GetUserTrainings([], [userId]) do
if training.ValidTo >= Now then
PrintLn(DocRUDForDocID(training.DocId));
- Récupération de la liste des documents sur lesquels l'utilisateur doit être formé
uses QuBESUsers, QubesTrainings, QuBESDocuments;
var userId := UserIDFromLogin('user1');
for var training in GetUserTrainings([], [userId]) do
if training.SessionId = 0 then
PrintLn(DocRUDForDocID(training.DocId));
var userId := UserIDFromLogin('user1');
for var training in GetUserTrainings([], [userId]) do
if training.SessionId = 0 then
PrintLn(DocRUDForDocID(training.DocId));
- Récupération de la liste des utilisateurs à former sur un document
uses QubesTrainings, QuBESDocuments;
var docId := AppliedDocIDForRUD('maRud');
for var training in GetUserTrainings([docId], []) do
if training.SessionId = 0 then
PrintLn(training.Login);
var docId := AppliedDocIDForRUD('maRud');
for var training in GetUserTrainings([docId], []) do
if training.SessionId = 0 then
PrintLn(training.Login);
- Récupération de la liste des documents pour lesquels l'utilisateur "login_user" est à (re-)former, c'est-à-dire qu'il doit y être formé mais il n'a pas de formation valide
uses QubesTrainings, QuBESDocuments;
var userId : Integer = UserIDFromLogin('login_user');
var docIdsToBeTrained : array of Integer;
// récupération de la liste des formations de l'utilisateur (à la fois attendues et mises en session)
var trainings := GetUserTrainings([], [userId]);
// on ne s'arrête d'abord que sur les formations attendues
for var expectedTraining in trainings do begin
if expectedTraining.SessionId = 0 then begin
// puis on recherche les formations mises en session (réalisées ou prévues) pour cette formation attendue
// et on récupère la date de validité (qui n'est renseignée que pour les formations réalisées)
var maxValidity := 0.0;
for var doneTraining in trainings do
if doneTraining.DocId = expectedTraining.DocId then
maxValidity := Max(maxValidity, doneTraining.ValidTo);
// si la date de validité est dans le passé, c'est qu'il n'y a pas de formation valide
if (maxValidity <= Now) and (docIdsToBeTrained.IndexOf(expectedTraining.DocId) <= 0) then
docIdsToBeTrained.Add(expectedTraining.DocId);
end;
end;
// on peut alors faire des actions (afficher la liste, ou créer des sessions de formation, etc.)
for var docId in docIdsToBeTrained do begin
// ...
end;
var userId : Integer = UserIDFromLogin('login_user');
var docIdsToBeTrained : array of Integer;
// récupération de la liste des formations de l'utilisateur (à la fois attendues et mises en session)
var trainings := GetUserTrainings([], [userId]);
// on ne s'arrête d'abord que sur les formations attendues
for var expectedTraining in trainings do begin
if expectedTraining.SessionId = 0 then begin
// puis on recherche les formations mises en session (réalisées ou prévues) pour cette formation attendue
// et on récupère la date de validité (qui n'est renseignée que pour les formations réalisées)
var maxValidity := 0.0;
for var doneTraining in trainings do
if doneTraining.DocId = expectedTraining.DocId then
maxValidity := Max(maxValidity, doneTraining.ValidTo);
// si la date de validité est dans le passé, c'est qu'il n'y a pas de formation valide
if (maxValidity <= Now) and (docIdsToBeTrained.IndexOf(expectedTraining.DocId) <= 0) then
docIdsToBeTrained.Add(expectedTraining.DocId);
end;
end;
// on peut alors faire des actions (afficher la liste, ou créer des sessions de formation, etc.)
for var docId in docIdsToBeTrained do begin
// ...
end;