Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* jslint node: true */
- 'use strict'
- const accounts = [
- { name: 'jeannie', password: '1', role: 0, id: 21 },
- { name: 'alex', password: '1', role: 2, id: 22 },
- { name: 'gustav', password: '1', role: 2, id: 23 },
- { name: 'j', password: 'a', role: 0, id: 24 },
- { name: 'e', password: 'b', role: 0, id: 25 }
- ]
- const roleNames = ['Student', 'Assistant', 'Course Manager']
- // id should be autoincremented, open should be false as default
- const courses = [
- { key: 'ADK', id: 1, open: true },
- { key: 'IntProg', id: 2, open: true },
- { key: 'Maskin', id: 3, open: true },
- { key: 'Tilda', id: 4, open: false },
- { key: 'Prutten', id: 5, open: false },
- { key: 'Språktek', id: 6, open: false },
- { key: 'MachineLearning', id: 7, open: false },
- { key: 'DeepLearning', id: 8, open: false }
- ]
- var roles = [
- { course_id: 1, name: 'jeannie', teacher_id: 21, role: 2 },
- { course_id: 1, name: 'alex', teacher_id: 22, role: 1 },
- { course_id: 1, name: 'gustav', teacher_id: 22, role: 1 },
- { course_id: 2, name: 'alex', teacher_id: 22, role: 2 },
- { course_id: 2, name: 'alex', teacher_id: 23, role: 1 },
- { course_id: 3, name: 'alex', teacher_id: 23, role: 2 },
- { course_id: 4, name: 'alex', teacher_id: 23, role: 1 },
- { course_id: 5, name: 'alex', teacher_id: 25, role: 1 },
- { course_id: 6, name: 'alex', teacher_id: 24, role: 2 },
- { course_id: 7, name: 'alex', teacher_id: 22, role: 2 },
- { course_id: 8, name: 'alex', teacher_id: 21, role: 1 }
- ]
- // Queue id should be given by the database automatically in
- // ascending order.
- var queueTemplate = [
- {
- name: 'magdalena',
- queue_id: 1,
- request: 'help',
- comment: 'help lab 2',
- location: 'red 02',
- receivingHelp: false
- },
- {
- name: 'alex',
- queue_id: 2,
- request: 'present',
- comment: 'present lab 24',
- location: 'magenta 04',
- receivingHelp: false
- },
- {
- name: 'jeannie',
- queue_id: 3,
- request: 'present',
- comment: 'presenting all the labs',
- location: 'yellow 23',
- receivingHelp: true
- },
- {
- name: 'alexander',
- request: 'present',
- comment: 'presenting all the labs',
- location: 'yellow 25',
- queue_id: 4,
- receivingHelp: true
- }
- ]
- exports.queueLockSwitch = (id) => {
- console.log('in model: courseid is ', id);
- this.getCourse(id).open = !this.getCourse(id).open;
- // return getCourses();
- return this.getCourse(id).open;
- }
- exports.deleteCourse = (id) => {
- console.log(id);
- courses.splice(this.getCourseIndex(id), 1);
- //return courses;
- }
- exports.getCourseIndex = (id) => {
- for (var i = 0; i < courses.length; i++){
- console.log(courses[i], i);
- if (courses[i].id == id){
- return i;
- }
- }
- return null;
- }
- exports.getCourse = (id) => {
- return courses[this.getCourseIndex(id)];
- }
- exports.getQueues = () => {
- console.log('getting queues in getqueues')
- var queues = new Map()
- for (var i = 0; i < courses.length; i++) {
- queues.set(courses[i].id, queueTemplate)
- };
- return queues
- }
- exports.getCoursesBelongingTo = (id) => {
- console.log('In Model: getcoursesbelonging to: ', id);
- let courseIDs = [];
- for(let i = 0; i < roles.length; i++){
- if(roles[i].name === id){
- courseIDs.push(roles[i].course_id);
- }
- }
- let myCourses = [];
- for(let i = 0; i < courses.length; i++){
- //let = index = courseIDs.indexOf(courses[i].id);
- if(courseIDs.indexOf(courses[i].id) != -1){
- myCourses.push(courses[i]);
- }
- }
- console.log("in model: returning ", myCourses.length);
- return myCourses;
- }
- exports.getMyCourses = (user, role) => {
- console.log('getting courses by ', user)
- var list = []
- // if role == 0: return the courses in which
- // the student has enqueued
- if (role == 0) {
- this.getQueues().forEach((value, key, map) => {
- for (var i = 0; i < value.length; i++) {
- if (value[i].name === user) {
- list.push(this.getCourse(key))
- console.log('queue: ',key)
- }
- }
- })
- } else {
- // else: return the courses the user has the requested access to
- for (var i = 0; i < roles.length; i++) {
- if (roles[i].name == user) {
- if (roles[i].role <= role) {
- list.push(this.getCourse(roles[i].course_id))
- }
- }
- }
- }
- console.log(list)
- return list
- }
- exports.getQueue = (courseID) => {
- console.log('in getQueue!')
- // console.log('getting ', courseID);
- return this.getQueues().get(courseID)
- }
- exports.getCourses = () => {
- var list = []
- for (var i = 0; i < courses.length; i++) {
- list.push(courses[i])
- console.log('added a course.', courses[i])
- }
- return list
- }
- }
- exports.check = (req) => {
- req = JSON.parse(req)
- console.log('checking from model', req.username)
- for (var i = 0; i < accounts.length; i++) {
- console.log(accounts[i].name)
- if (accounts[i].name == req.username) {
- console.log('User found')
- if (accounts[i].role < req.role) {
- console.log('Too low authority', roleNames[req.role])
- return null
- } else if (accounts[i].password == req.password) {
- console.log('Logged in.')
- return {
- courses: this.getCourses(),
- myCourses: this.getMyCourses(req.username, req.role),
- queues: this.getQueues()
- } else {
- console.log('Wrong password')
- return null
- }
- }
- }
- console.log('User not found')
- return null
- }
- exports.updateQueueItem = (courseID, queueItemID) => {
- console.log('in model updateQueueItem: ', courseID, queueItemID, queueTemplate.length)
- for (let i = 0; i < queueTemplate.length; i++) {
- if (queueTemplate[i].queue_id === queueItemID) {
- queueTemplate[i].receivingHelp = !queueTemplate[i].receivingHelp
- break;
- }
- }
- }
- exports.removeQueueItem = (courseID, queueItemID) => {
- console.log("In model removeQueueItem, received: ", courseID, queueItemID);
- for (let i = 0; i < queueTemplate.length; i++){
- if (queueTemplate[i].queue_id === queueItemID) {
- queueTemplate.splice(i, 1);
- }
- }
- }
- exports.createNewCourse = (courseObject) => {
- let errorMessage = "";
- let success = true;
- let managers = courseObject.managers.split(',');
- for(manager of managers){
- manager.trim();
- }
- console.log("Received managers: ", managers);
- let assistants = courseObject.assistants.split(',');
- for(asse of assistants){
- asse.trim();
- }
- console.log("Received assistants: ", assistants);
- let confirmedAssistants = [];
- let confirmedManagers = [];
- for(let i = 0; i < accounts.length; i++){
- let managerIndex = managers.indexOf(accounts[i].name);
- let assistantIndex = assistants.indexOf(accounts[i].name);
- if(managerIndex != -1){
- confirmedManagers.push(accounts[i].name);
- managers.splice(managerIndex, 1);
- }
- if(assistantIndex != -1){
- confirmedAssistants.push(accounts[i].name);
- assistants.splice(assistantIndex);
- }
- }
- for(let i = 0; i < courses.length; i++){
- if(courses[i].key === courseObject.courseName){
- errorMessage += "\nCourse with name " + courseObject.courseName + " already exists.";
- success = false;
- }
- if(courses[i].id === courseObject.courseID){
- errorMessage += '\nCourse with id ' + courseObject.courseID + ' already exists.';
- success = false;
- }
- }
- if(assistants.length > 0){
- success = false;
- errorMessage += '\nThe following assistants were not found: ' + assistants;
- }
- if(managers.length > 0){
- success = false;
- errorMessage += '\nThe following managers were not found: ' + managers;
- }
- /*
- * We have now checked if the course is valid or not.
- */
- if(success){
- courses.push(
- {
- key: courseObject.courseName,
- id: courseObject.courseID,
- open: false,
- }
- );
- for(asse of confirmedAssistants){
- let index = findIndexOfAccount(asse);
- if(accounts[index].role === 0){
- accounts[index].role = 1;
- }
- roles.push({
- course_id: courseObject.courseID,
- name: asse,
- role: 1,
- teacher_id: accounts[index].id,
- });
- }
- for(manager of confirmedManagers){
- let index = findIndexOfAccount(manager);
- if(accounts[index].role < 2){
- accounts[index].role = 2;
- }
- roles.push({
- course_id: courseObject.courseID,
- name: manager,
- role: 1,
- teacher_id: accounts[index].id,
- });
- }
- }
- /*
- for(let i = 0; i < courseObject.managers.length; i++){
- if(courseObject[i].)
- }
- let id = 0;
- */
- return {success: true};
- }
- function findIndexOfAccount(name){
- for(let i = 0; i < accounts.length; i++){
- if(name === accounts[i].name){
- return i;
- }
- }
- return -1;
- }
- exports.addNewCourse = (courseObject) => {
- let id = 0;
- for(let i = 0; i < courses.length; i++){
- if(courseObject.course.key === courses[i].key){
- return false;
- }
- if(courses[i].id === id){
- id++;
- }
- }
- courseObject.course.id = id;
- courses.push(courseObject.course);
- for(let i = 0; i < courseObject.roles.length; i++){
- courseObject.roles[i].course_id = id;
- roles.push(courseObject.roles[i]);
- /*
- * Update privilege of asse
- */
- for(let j = 0; j < accounts.length; j++){
- if(courseObject.roles[i].name === accounts[j].name){
- if(courseObject.roles[i].role > accounts[j].role){
- accounts[j].role = courseObject.roles[i].role;
- }
- }
- }
- }
- return true;
- }
- exports.deleteCourse = (id) => {
- for(let i = 0; i < courses.length; i++){
- if(courses[i].id === id){
- console.log("in model, deleting course with id ", id);
- courses.splice(i, 1);
- break;
- }
- }
- for(let i = 0; i < roles.length; i++){
- if(roles[i].course_id === id){
- roles.splice(i, 1);
- }
- }
- /*
- * TODO: delete the queue for the course.
- */
- }
- exports.addQueueItem = (req) => {
- console.log("in model, addQueueItem, received ", req);
- /*
- * TODO: find the right course using req.CourseID
- */
- for(let i = 0; i < queueTemplate.length; i++){
- console.log("Searching: " + queueTemplate[i].name + ", " + req.queueObject.name);
- if(queueTemplate[i].name == req.queueObject.name){
- console.log("Returning false!");
- return false;
- }
- }
- queueTemplate.push(req.queueObject);
- return true;
- }
- exports.registerNewUser = (userObject) => {
- console.log("In model registerNewUser, received ", userObject);
- let id = 1;
- for(let i = 0; i < accounts.length; i++){
- if(accounts[i].name === userObject.username){
- console.log("username already exists");
- return false;
- }
- if(accounts[i].id === id){
- id++;
- }
- }
- let newUser = {
- name: userObject.username,
- password: userObject.password,
- role: 0,
- id: id,
- }
- accounts.push(newUser);
- console.log("In model, everything successful. accounts is now: ", accounts);
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement