Add grade and evaluation models and getter socket
This commit is contained in:
parent
9940b11cf4
commit
5b9c7b4d96
6 changed files with 107 additions and 1 deletions
27
models/evaluation.js
Normal file
27
models/evaluation.js
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const { Model } = require("sequelize");
|
||||||
|
|
||||||
|
module.exports = (sequelize, DataTypes) => {
|
||||||
|
class Evaluation extends Model {
|
||||||
|
static associate(models) {
|
||||||
|
Evaluation.belongsToMany(models.User, {through: "EvaluationTeacher"});
|
||||||
|
Evaluation.hasMany(models.Grade);
|
||||||
|
Evaluation.belongsTo(models.UE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Evaluation.init({
|
||||||
|
name: {
|
||||||
|
type: DataTypes.STRING,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
date: {
|
||||||
|
type: DataTypes.DATE,
|
||||||
|
allowNull: false
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
sequelize,
|
||||||
|
modelName: "Evaluation",
|
||||||
|
});
|
||||||
|
return Evaluation;
|
||||||
|
};
|
30
models/grade.js
Normal file
30
models/grade.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const { Model } = require("sequelize");
|
||||||
|
|
||||||
|
module.exports = (sequelize, DataTypes) => {
|
||||||
|
class Grade extends Model {
|
||||||
|
static associate(models) {
|
||||||
|
Grade.belongsTo(models.Evaluation);
|
||||||
|
Grade.belongsTo(models.User, {as: "TeacherGrade"});
|
||||||
|
Grade.belongsTo(models.User, {as: "StudentGrade"});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Grade.init({
|
||||||
|
score: {
|
||||||
|
type: DataTypes.FLOAT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
limit: {
|
||||||
|
type: DataTypes.FLOAT,
|
||||||
|
allowNull: false
|
||||||
|
},
|
||||||
|
comment: {
|
||||||
|
type: DataTypes.TEXT
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
sequelize,
|
||||||
|
modelName: "Grade",
|
||||||
|
});
|
||||||
|
return Grade;
|
||||||
|
};
|
|
@ -20,7 +20,10 @@ module.exports = (sequelize, DataTypes) => {
|
||||||
static associate(models) {
|
static associate(models) {
|
||||||
User.belongsToMany(models.Group, {through: "UserGroup"});
|
User.belongsToMany(models.Group, {through: "UserGroup"});
|
||||||
User.belongsToMany(models.Event, {through: "EventTeacher"});
|
User.belongsToMany(models.Event, {through: "EventTeacher"});
|
||||||
|
User.belongsToMany(models.Evaluation, {through: "EvaluationTeacher"});
|
||||||
User.belongsToMany(models.UE, {through: "UEUser"});
|
User.belongsToMany(models.UE, {through: "UEUser"});
|
||||||
|
//User.hasMany(models.Grade, {as : "TeacherGrade"});
|
||||||
|
//User.hasMany(models.Grade, {as: "StudentGrade"});
|
||||||
}
|
}
|
||||||
|
|
||||||
checkPassword(password) {
|
checkPassword(password) {
|
||||||
|
|
22
sockets/get/evaluationGet.js
Normal file
22
sockets/get/evaluationGet.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
const models = require("../../models");
|
||||||
|
|
||||||
|
module.exports = socket => {
|
||||||
|
return async (data) => {
|
||||||
|
const options = {where: {},
|
||||||
|
include: [models.UE, {model: models.User},
|
||||||
|
{
|
||||||
|
model: models.Grade,
|
||||||
|
include: [{model: models.User, as: "TeacherGrade"}, {model: models.User, as: "StudentGrade"}]
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
if (data && data.id)
|
||||||
|
options.where.id = data.id;
|
||||||
|
|
||||||
|
if (socket.request.session.user.permissions === 2) {
|
||||||
|
options.include[1].where = {email: socket.request.session.user.email};
|
||||||
|
options.include[1].required = true;
|
||||||
|
}
|
||||||
|
socket.emit("evaluationGet", await models.Evaluation.findAll(options));
|
||||||
|
}
|
||||||
|
};
|
22
sockets/get/gradeGet.js
Normal file
22
sockets/get/gradeGet.js
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
const models = require("../../models");
|
||||||
|
|
||||||
|
module.exports = socket => {
|
||||||
|
return async (data) => {
|
||||||
|
const options = {where: {}, include: [models.Evaluation,
|
||||||
|
{model: models.User, as: "TeacherGrade"},
|
||||||
|
{model: models.User, as: "StudentGrade"}]};
|
||||||
|
|
||||||
|
if (data && data.id)
|
||||||
|
options.where.id = data.id;
|
||||||
|
|
||||||
|
switch (socket.request.session.user.permissions) {
|
||||||
|
case 1:
|
||||||
|
options.where.StudentGradeEmail = socket.request.session.user.email;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
options.where.TeacherGradeEmail = socket.request.session.user.email;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
socket.emit("gradeGet", await models.Grade.findAll(options));
|
||||||
|
}
|
||||||
|
};
|
|
@ -1,6 +1,5 @@
|
||||||
module.exports = socket => {
|
module.exports = socket => {
|
||||||
console.log("New connection !");
|
console.log("New connection !");
|
||||||
console.log(socket.request.session.user);
|
|
||||||
if (!socket.request.session.user) {
|
if (!socket.request.session.user) {
|
||||||
socket.on("login", require("./login")(socket));
|
socket.on("login", require("./login")(socket));
|
||||||
socket.on("register", require("./register")(socket));
|
socket.on("register", require("./register")(socket));
|
||||||
|
@ -11,6 +10,9 @@ module.exports = socket => {
|
||||||
socket.on("profileEdit", require("./profile/edit")(socket));
|
socket.on("profileEdit", require("./profile/edit")(socket));
|
||||||
socket.on("logout", require("./logout")(socket));
|
socket.on("logout", require("./logout")(socket));
|
||||||
socket.on("agendaGet", require("./get/agendaGet")(socket));
|
socket.on("agendaGet", require("./get/agendaGet")(socket));
|
||||||
|
socket.on("gradeGet", require("./get/gradeGet")(socket));
|
||||||
|
if (socket.request.session.user.permissions > 1)
|
||||||
|
socket.on("evaluationGet", require("./get/evaluationGet")(socket));
|
||||||
}
|
}
|
||||||
socket.emit("connected");
|
socket.emit("connected");
|
||||||
};
|
};
|
||||||
|
|
Reference in a new issue