in edu-analytics-be/web/app/entity/educatorEntity.js [119:199]
static async assignTask(token, body) {
const tasks = Object.values(JSON.parse(JSON.stringify(await query(`SELECT * FROM tasks where playlistId =${body.playlistId} AND courseId =${body.courseId} ;`))));
if (tasks.length > 0) {
return {
status: 400,
msg: 'Selected playlist already assigned to the selected course'
}
}
try {
const video = Object.values(JSON.parse(JSON.stringify(await query(`SELECT * FROM video where playlistId=${body.playlistId} LIMIT 1;`))));
const result = await axios({
method: "POST",
headers: { Authorization: `Bearer ${token}` },
url: `https://classroom.googleapis.com/v1/courses/${body.courseId}/courseWork`,
data: {
assigneeMode: "ALL_STUDENTS",
courseId: body.courseId,
title: body.taskName,
maxPoints: 100,
workType: "ASSIGNMENT",
state: "PUBLISHED",
materials: [
{
link: {
url: `${process.env.STD_PORTAL}?courseId=${body.courseId}&videoId=${video[0].videoId}`
}
}
]
}
})
console.log(result.data);
body.classRoomTaskId = result.data.id;
} catch (error) {
console.log(error);
return {
status: error.response.status,
msg: error.response.statusText
}
//res.send(error).status(400);
}
const sql = `INSERT INTO tasks(taskName,playlistId,courseId,studentId,classRoomTaskId) VALUES ('${body.taskName}',${body.playlistId},'${body.courseId}',${body.studentId ? body.studentId : null},'${body.classRoomTaskId}');`;
console.log(sql);
const data = await query(sql);
const lastRowId = await query(`SELECT * FROM tasks where taskId=${data.insertId};`);
body.taskId = lastRowId[0].taskId;
const playlistId = body.playlistId;
if (body.studentId && (body.courseId === null || body.courseId === undefined)) {
body.status = 'NotStarted';
await this.taskStatus(body);
}
if (body.courseId && (body.studentId === null || body.studentId === undefined)) {
const students = await query(`SELECT * FROM students;`);
dbConnection.query(
'INSERT INTO tasks_status(taskId,studentId,status,courseId,classRoomTaskId) VALUES ?',
[students.map(item => [body.taskId, item.studentId, 'NotStarted', body.courseId, body.classRoomTaskId])],
(error) => {
console.log(error)
}
);
const videos = Object.values(JSON.parse(JSON.stringify(await this.getPlaylist(playlistId))));
for (let i = 0; i < videos.length; i++) {
dbConnection.query(
'INSERT INTO student_analytics(videoId,studentId,videoStatus,videoProgress,playlistId,courseId,classRoomTaskId) VALUES ?',
[students.map(item => [videos[i].id, item.studentId, 'NotStarted', '00', playlistId, body.courseId, body.classRoomTaskId])],
(error) => {
console.log(error)
}
);
}
}
return {
status: 201,
msg: data
};
}