src/app/models/supervision-requests.ts
constructor(lrsService: LrsService, page: SupervisionPage, http: HttpClient)
|
| getUsers |
getUsers(idsList: any)
|
|
Returns:
any
|
| getNbUsers |
getNbUsers()
|
|
Returns:
void
|
| getNbExercisesCompletedByUsers |
getNbExercisesCompletedByUsers()
|
|
Returns:
void
|
| getUserStat |
getUserStat(uid: any)
|
|
Returns:
void
|
| getSessionStat |
getSessionStat(session: any)
|
|
Returns:
void
|
| getNbExercisesCompletedByClasses |
getNbExercisesCompletedByClasses()
|
|
Returns:
void
|
| addMandatoryFilter |
addMandatoryFilter(match: any[])
|
|
Returns:
void
|
| addDefaultSort |
addDefaultSort(request: any)
|
|
Returns:
void
|
| getClassData |
getClassData(codeClasse: any)
|
|
Returns:
void
|
import { HttpClient } from "@angular/common/http";
import { addMonths, format, parseISO } from "date-fns";
import { SupervisionPage } from "../pages/supervision/supervision.page";
import { LrsService } from "../services/lrs.service";
import { LrsUtils } from "./lrs/lrsUtils";
import { environment } from "src/environments/environment";
export class SupervisionRequests {
constructor(private lrsService: LrsService, private page: SupervisionPage, private http: HttpClient) {}
getUsers(idsList): Promise<Array<{ level; teacher_id; uid; codeClasse }>> {
return new Promise(resolve => {
if (!environment.kidaia) {
const formData = new FormData();
formData.append("token", "f}wucm8IB}d|5B`qh}Sx5FlD??E{[&Y&");
// tslint:disable-next-line: triple-equals
formData.append("ids", "'" + idsList.join("','") + "'");
this.http.post("https://api.mathia.education/users", formData).subscribe((data: any) => {
resolve(data);
});
} else {
const formData = new FormData();
formData.append("token", "f}wucm8IB}d|5B`qh}Sx5FlD??E{[&Y&");
// tslint:disable-next-line: triple-equals
formData.append("ids", idsList.join(",").replace(/os_/g, ''));
this.http.post(this.lrsService.globalService.postOpenSteamOSE + "?controller=kidaia&action=users", formData).subscribe((data: any) => {
resolve(data);
});
}
});
}
getNbUsers() {
return new Promise<any>(resolve => {
const date = new Date();
const startdate = addMonths(date, -12);
const request = [];
const match: Array<any> = [];
this.addMandatoryFilter(match);
request.push({
$match: {
$and: match
}
});
const $project = {
$project: {
value: "$statement.actor.account.name"
}
};
request.push($project);
request.push({
$group: {
_id: "$value"
}
});
this.lrsService.request(request).then(async (results: any) => {
resolve(results.map(e => e._id));
});
});
}
getNbExercisesCompletedByUsers() {
return new Promise<any>(resolve => {
const request = [];
const match: Array<any> = [
{
"statement.verb.id": {
$in: [(environment.kidaia ? "https://xapi.ose" : "https://xapi.mathia.education")+"/verbs/initialized"]
}
}
];
this.addMandatoryFilter(match);
request.push({
$match: {
$and: match
}
});
const $project = {
$project: {
uid: "$statement.actor.account.name",
value: "$statement.context.extensions."+(environment.kidaia ? "https://xapi&46;ose" : "https://xapi&46;mathia&46;education")+"/extensions/id_session"
}
};
request.push($project);
request.push({
$group: {
_id: { uid: "$uid" },
value: {
//compte le nombre d'exercices terminées
$sum: 1
}
}
});
this.lrsService.request(request).then(async (results: any) => {
console.log(results);
resolve(results);
});
});
}
getUserStat(uid) {
return new Promise<any>(resolve => {
const date = new Date();
const startdate = addMonths(date, -12);
const request = [];
const match: Array<any> = [
{
"statement.actor.account.name": {
$in: [uid]
}
},
{
"statement.verb.id": {
$in: ["https://xapi.mathia.education/verbs/initialized", "https://xapi.mathia.education/verbs/completed"]
}
},
{
"statement.object.definition.type": {
$in: ["https://xapi.mathia.education/objectType/exercise"]
}
}
];
this.addMandatoryFilter(match);
request.push({
$match: {
$and: match
}
});
const $project = {
$project: {
verb: "$statement.verb.id",
date: {
$dateToString: {
format: "%Y-%m-%d %H:%M:%S",
date: {
$toDate: "$statement.timestamp"
}
}
},
session: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/id_session",
story: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/story",
modeJeu: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/mode_jeu",
holo: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/holo",
nomActivite: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/nom_activite",
modeReponse: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/mode_reponse",
nomExercice: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/nom_exercice",
txSuccess: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/pourcentage_bonnes_reponses"
}
};
request.push($project);
this.addDefaultSort(request);
this.lrsService.request(request).then(async (results: any) => {
console.log(results);
const exercices = [];
results.forEach(r => {
if (r.verb === "https://xapi.mathia.education/verbs/initialized") {
r.jour = format(parseISO(r.date), "dd / MM / yyyy");
r.heure = format(parseISO(r.date), "HH:mm:ss");
r.completed = false;
exercices.push(r);
} else {
const e = exercices.find(e => e.session === r.session);
e.completed = true;
e.verb = r.verb;
e.txSuccess = r.txSuccess;
}
});
resolve(exercices);
});
});
}
getSessionStat(session) {
return new Promise<any>(resolve => {
const date = new Date();
const startdate = addMonths(date, -12);
const request = [];
const match: Array<any> = [
{
"statement.context.extensions.https://xapi&46;mathia&46;education/extensions/id_session": {
$in: [session]
}
},
{
"statement.verb.id": {
$nin: [
"https://xapi.mathia.education/verbs/initialized",
"https://xapi.mathia.education/verbs/completed",
"https://xapi.mathia.education/verbs/finished"
]
}
}
];
request.push({
$match: {
$and: match
}
});
const $project = {
$project: {
verb: "$statement.verb.id",
date: {
$dateToString: {
format: "%Y-%m-%d %H:%M:%S",
date: {
$toDate: "$statement.timestamp"
}
}
},
name: "$statement.object.definition.name.en-US",
modeReponse: "$statement.context.extensions.https://xapi&46;mathia&46;education/extensions/mode_reponse",
success: "$statement.result.success"
}
};
request.push($project);
this.addDefaultSort(request);
this.lrsService.request(request).then(async (results: any) => {
resolve(results);
});
});
}
getNbExercisesCompletedByClasses() {
return new Promise<any>(resolve => {
const date = new Date();
const startdate = addMonths(date, -12);
const request = [];
const match: Array<any> = [
{
"statement.verb.id": {
$in: [(environment.kidaia ? "https://xapi.ose" : "https://xapi.mathia.education")+"/verbs/initialized"]
}
}];
if(!environment.kidaia){
match.push({
"statement.object.definition.type": {
$in: [(environment.kidaia ? "https://xapi.ose" : "https://xapi.mathia.education")+"/objectType/exercise"]
}
});
}
this.addMandatoryFilter(match);
request.push({
$match: {
$and: match
}
});
const $project = {
$project: {
uid: "$statement.context.extensions."+(environment.kidaia ? "https://xapi&46;ose" : "https://xapi&46;mathia&46;education")+"/extensions/codeclasse",
value: "$statement.context.extensions."+(environment.kidaia ? "https://xapi&46;ose" : "https://xapi&46;mathia&46;education")+"/extensions/id_session"
}
};
request.push($project);
request.push({
$group: {
_id: { uid: "$uid" },
value: {
//compte le nombre d'exercices terminées
$sum: 1
}
}
});
this.lrsService.request(request).then(async (results: any) => {
console.log(results);
resolve(results);
});
});
}
addMandatoryFilter(match: any[]) {
//
// date filters
//
if (this.page.rangeDate.start || this.page.rangeDate.end) {
if (this.page.rangeDate.start) {
match.push({
timestamp: {
$gte: {
$dte: this.page.rangeDate.start
}
}
});
}
if (this.page.rangeDate.end) {
match.push({
timestamp: {
$lte: {
$dte: this.page.rangeDate.end
}
}
});
}
} else {
match.push({
timestamp: {
$gte: {
$dte: "2021-01-01T08:09:00.000Z"
}
}
});
}
//
// black list and environment
//
match.push(
{
"statement.actor.account.name": {
$nin: LrsUtils.idUsersBlacklist
}
}
);
if (!environment.kidaia) {
match.push({
"statement.context.extensions.https://xapi&46;mathia&46;education/extensions/kidaia": {
$nin: [!environment.kidaia]
}
},
{
"statement.context.extensions.https://xapi&46;mathia&46;education/extensions/codeclasse": {
$nin: LrsUtils.codeClassBlacklist
}
});
}
}
addDefaultSort(request) {
request.push({
$sort: {
date: 1
}
});
}
getClassData(codeClasse) {
return new Promise<any>(resolve => {
if(!environment.kidaia){
this.http.get("https://lms-mathia.api.tralalere.com/api/groups-detail/" + codeClasse).subscribe((data: any) => {
let classeData = data.data[0];
this.http.get("https://lms-mathia.api.tralalere.com/api/users/" + classeData.uid).subscribe((teacher: any) => {
classeData = Object.assign(classeData, teacher.data[0]) as any;
classeData.members = classeData.members.filter(m => m.role !== "trainer");
resolve(classeData);
});
});
} else {
const formData = new FormData();
formData.append("token", "f}wucm8IB}d|5B`qh}Sx5FlD??E{[&Y&");
// tslint:disable-next-line: triple-equals
formData.append("codeclasse", codeClasse);
this.http.post(this.lrsService.globalService.postOpenSteamOSE + "?controller=kidaia&action=classedata", formData).subscribe((data: any) => {
const result = {
id: codeClasse,
email: data[0].email,
members: [{id: data[0].id}]
};
data.forEach(element => {
result.members.push({id: element.id_user});
});
console.log(result);
resolve(result);
});
}
});
}
}