Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

190 linhas
5.8 KiB

  1. /* eslint-disable vars-on-top */
  2. /* eslint-disable no-var */
  3. const express = require('express');
  4. const router = express.Router();
  5. const mountRegisterRoutes = require('../features/register/routes');
  6. const mountLoginRoutes = require('../features/login/routes');
  7. const mountLogoutRoutes = require('../features/logout/routes');
  8. const mountResetPasswordRoutes = require('../features/reset-password/routes');
  9. const mountProfileRoutes = require('../features/profile/routes');
  10. const companyApi = require('../api/company');
  11. const materialApi = require('../api/material');
  12. const divisionApi = require('../api/division');
  13. const userApi = require('../api/users');
  14. const editApi = require('../api/editable');
  15. const clearApi = require('../api/auto-clear');
  16. const summaryApi = require('../api/summary');
  17. async function isAuthenticated(req, res, next) {
  18. if (req.user && req.isAuthenticated()) {
  19. var editable = await editApi.isEditable(req.session.passport.user.jwt);
  20. var autoClear = await clearApi.autoClear(req.session.passport.user.jwt);
  21. res.locals.editable = editable ? editable.attributes.Active : false;
  22. res.locals.autoClear = autoClear ? autoClear.attributes : null;
  23. res.locals.role = req.session.passport.user.role ? req.session.passport.user.role.name : null;
  24. if(res.locals.role !='Admin'){
  25. req.session.companySelected = req.session.passport.user.company;
  26. req.session.divisionSelected = req.session.passport.user.division;
  27. }
  28. return next();
  29. }
  30. return res.redirect('/login');
  31. }
  32. /* GET home page. */
  33. router.get('/', isAuthenticated, async (req, res) => {
  34. let divisions = [];
  35. let materials = [];
  36. let summaries = [];
  37. const companies = await companyApi.companyList(req.session.passport.user.jwt);
  38. const { session } = req;
  39. if(req.session.passport.user.role&&req.session.passport.user.role.name=='Admin'){
  40. summaries = await summaryApi.summaryList(req.session.passport.user.jwt);
  41. }
  42. if(session.companySelected){
  43. divisions = await divisionApi.divisionList(
  44. session.companySelected,
  45. req.session.passport.user.jwt
  46. );
  47. }
  48. if (session.companySelected && session.divisionSelected && session.categorySelected) {
  49. materials = await materialApi.materialList(
  50. session.categorySelected,
  51. session.companySelected,
  52. session.divisionSelected,
  53. req.session.passport.user.jwt
  54. );
  55. }
  56. res.render('pages/dashboard', {
  57. pageTitle: 'Dashboard',
  58. material: materials,
  59. division: session.divisionSelected,
  60. company: session.companySelected,
  61. divisions,
  62. companies,
  63. category: session.categorySelected,
  64. summaries:summaries
  65. });
  66. });
  67. router.post('/', isAuthenticated, async (req, res) => {
  68. let divisions = [];
  69. let materials = [];
  70. let summaries = [];
  71. const { session } = req;
  72. if(req.session.passport.user.role&&req.session.passport.user.role.name=='Admin'){
  73. summaries = await summaryApi.summaryList(req.session.passport.user.jwt);
  74. }
  75. if ((req.body.division||session.divisionSelected) && req.body.company && req.body.Category) {
  76. session.companySelected = req.body.company;
  77. session.divisionSelected = req.body.division || session.divisionSelected;
  78. session.categorySelected = req.body.Category;
  79. divisions = await divisionApi.divisionList(req.body.company, req.session.passport.user.jwt);
  80. materials = await materialApi.materialList(
  81. req.body.Category,
  82. req.body.company,
  83. req.body.division,
  84. req.session.passport.user.jwt
  85. );
  86. }
  87. const companies = await companyApi.companyList(req.session.passport.user.jwt);
  88. res.render('pages/dashboard', {
  89. pageTitle: 'Dashboard',
  90. material: materials,
  91. division: req.body.division,
  92. company: req.body.company,
  93. divisions,
  94. companies,
  95. category: req.body.Category,
  96. summaries:summaries
  97. });
  98. });
  99. router.get('/material/:id', isAuthenticated, async (req, res) => {
  100. const { id } = req.params;
  101. const material = await materialApi.material(id, req.session.passport.user.jwt);
  102. if (material) {
  103. res.render('pages/material', {
  104. pageTitle: 'Materi',
  105. id,
  106. ...material,
  107. });
  108. } else {
  109. res.status(404);
  110. }
  111. });
  112. router.get('/settings', isAuthenticated, async (req, res) => {
  113. res.render('pages/settings', {
  114. pageTitle: 'Settings',
  115. });
  116. });
  117. router.get('/icons', isAuthenticated, (req, res) => {
  118. res.render('pages/icons');
  119. });
  120. router.get('/maps', isAuthenticated, (req, res) => {
  121. res.render('pages/maps');
  122. });
  123. router.get('/users', isAuthenticated, async (req, res) => {
  124. var error = req.query.s;
  125. const companies = await companyApi.companyList(req.session.passport.user.jwt);
  126. const users = await userApi.getUsers(req.session.passport.user.jwt, 1);
  127. if (users) {
  128. res.render('pages/users', {
  129. pageTitle: 'Users',
  130. users,
  131. page: 1,
  132. companies,
  133. error: error!= undefined,
  134. alert:(error)?"Operasi gagal. Terjadi kesalahan!":undefined,
  135. });
  136. } else {
  137. res.status(404);
  138. }
  139. });
  140. router.post('/users', isAuthenticated, async (req, res) => {
  141. let divisions = [];
  142. const companies = await companyApi.companyList(req.session.passport.user.jwt);
  143. if (req.body.company) {
  144. divisions = await divisionApi.divisionList(req.body.company, req.session.passport.user.jwt);
  145. }
  146. const users = await userApi.getUsers(
  147. req.session.passport.user.jwt,
  148. req.body.page,
  149. req.body.company,
  150. req.body.division
  151. );
  152. if (users) {
  153. res.render('pages/users', {
  154. pageTitle: 'Users',
  155. users,
  156. page: req.body.page,
  157. company: req.body.company,
  158. division: req.body.division,
  159. companies,
  160. divisions,
  161. });
  162. } else {
  163. res.status(404);
  164. }
  165. });
  166. mountRegisterRoutes(router);
  167. mountLoginRoutes(router);
  168. mountLogoutRoutes(router, [isAuthenticated]);
  169. mountResetPasswordRoutes(router);
  170. mountProfileRoutes(router, [isAuthenticated]);
  171. module.exports = router;