Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const sequelizeInit = require('./sequelize.js')
  2. const sequelize = sequelizeInit.initSequelize()
  3.  
  4. const User = require('./models/userModel.js')
  5. const Role = require('./models/roleModel.js')
  6. const Course = require('./models/courseModel.js')
  7. const Queue = require('./models/queueModel.js')
  8.  
  9. const fs = require('fs')
  10.  
  11. var Users
  12. var Roles
  13. var StudentStatistics
  14. var CourseStatistics
  15. var Courses
  16. var Queues
  17.  
  18. // contains sequelize models of the queues.
  19. // Dynamic length depending on how many queues (=#courses) we have
  20. const queueModels = []
  21.  
  22. const courses = []
  23. const users = []
  24. const roles = []
  25. const queues = []
  26.  
  27. // creating sequelize models
  28. exports.initDatabase = () => {
  29.   // sequelizeInit.autoSequelize()
  30.   initConstants()
  31. }
  32. function initConstants () {
  33.   Users = sequelize.import('./seq_models/users1.js')
  34.   Roles = sequelize.import('./seq_models/roles1.js')
  35.   StudentStatistics = sequelize.import('./seq_models/studentStatistics1.js')
  36.   CourseStatistics = sequelize.import('./seq_models/courseStatistics1.js')
  37.   Courses = sequelize.import('./seq_models/courses1.js')
  38.   Queues = sequelize.import('./seq_models/queues1.js')
  39.  
  40.   linkModels()
  41.   fillCache()
  42.  
  43.   // initQueueModels()
  44. }
  45.  
  46. // creates sequelize models for the queues
  47. function initQueueModels () {
  48.   fs.readdir('./seq_models', function (err, items) {
  49.     if (err) {
  50.       console.error(err)
  51.       throw err
  52.     } else {
  53.       for (let file of items) {
  54.         if (file.substring(0, 2) === file.substring(0, 2).toUpperCase()) {
  55.           let seqConstant = sequelize.import('./seq_models/' + file)
  56.           queueModels.push({ ID: file.substring(0, file.length - 3), model: seqConstant })
  57.         }
  58.       }
  59.       linkModels()
  60.       fillCache()
  61.     }
  62.   })
  63. }
  64.  
  65. function linkModels () {
  66.   Queues.belongsTo(Users, { foreignKey: 'student' })
  67.   Queues.belongsTo(Courses, { foreignKey: 'courseID' })
  68.   console.log('linked')
  69.  
  70.   // for (let i = 0; i < queueModels.length; i++) {
  71.   //   queueModels[i].model.belongsTo(Users, { foreignKey: 'student' })
  72.   // }
  73. }
  74.  
  75. function fillCache () {
  76.   fillUsers()
  77.   fillRoles()
  78.   fillQueuesAndCourses()
  79. }
  80.  
  81. // fill User fillCache
  82. // works
  83. function fillUsers () {
  84.   Users.findAll().then(res => {
  85.     for (let user of res) {
  86.       // console.log(user.ID, user.name, user.email, user.password)
  87.       users.push(new User(
  88.         {
  89.           ID: user.ID,
  90.           name: user.name,
  91.           email: user.email,
  92.           password: user.password
  93.         }
  94.       )
  95.       )
  96.       // console.log(users)
  97.     }
  98.   })
  99. }
  100.  
  101. // fill roles cache
  102. // works
  103. function fillRoles () {
  104.   Roles.findAll().then(res => {
  105.     for (let role of res) {
  106.       roles.push(new Role(
  107.         {
  108.           ID: role.ID,
  109.           courseID: role.courseID,
  110.           role: role.role
  111.         })
  112.       )
  113.     }
  114.   })
  115. }
  116.  
  117. function fillQueuesAndCourses () {
  118.   Queues.findAll({
  119.     include: [
  120.       { model: Users },
  121.       { model: Courses }
  122.     ],
  123.     attributes: ['users1.name', 'student', 'task', 'location', 'comment', 'queueNo', 'enterTime', 'courses1.name', 'courses1.ID']
  124.   }).then(res => {
  125.     for (let queue of res) {
  126.       // console.log('------this queue query',queue.student, queue.users1.name, queue.task, queue.location, queue.queueNo, queue.enterTime, queue.courses1.name, queue.courses1.ID)
  127.       if (courses.some(e => e.ID === queue.courses1.ID)) {
  128.  
  129.       } else {
  130.         courses.push(new Course({
  131.           ID: queue.courses1.ID,
  132.           name: queue.courses1.name
  133.         }))
  134.  
  135.         console.log(courses)
  136.       }
  137.  
  138.       // adds students in queue to given course
  139.       var queueItem = {
  140.         studentID: queue.student,
  141.         studentName: queue.users1.name,
  142.         task: queue.task,
  143.         location: queue.location,
  144.         queueNo: queue.queueNo, // kanske inte behövs
  145.         enterTime: queue.enterTime
  146.       }
  147.  
  148.       if (queues.some(e => e.ID === queue.courses1.ID)) {
  149.         appendToQueue(queue.courses1.ID, queueItem)
  150.       } else {
  151.         console.log('elseQueue')
  152.         queues.push(new Queue({
  153.           ID: queue.courses1.ID,
  154.           name: queue.courses1.name,
  155.           queue: [queueItem]
  156.         }))
  157.       }
  158.     }
  159.   }).catch(error => {
  160.     console.error(error)
  161.     throw error
  162.   })
  163. }
  164.  
  165. function appendToQueue (ID, queueItem) {
  166.   for (let i = 0; i < queues.length; i++) {
  167.     if (queues[i].ID === ID) {
  168.       queues[i].queue.push(queueItem)
  169.       console.log(queues[i].queue)
  170.     }
  171.   }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement