main_route.js 4.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /**
  2. * Created by chen on 2017/7/17.
  3. */
  4. const BaseController = require("../../common/base/base_controller");
  5. const projectModel = require("../../pm/models/project_model");
  6. const pmFacade = require('../../pm/facade/pm_facade');
  7. const systemSettingModel = require('../../system_setting/model/index');
  8. const OptionsDao = require('../../options/models/optionsModel');
  9. const optionSetting = require('../../options/models/optionTypes');
  10. const billsUnitPriceFeatureFacade = require("../../std_bills_unitprice_feature_lib/facade/bills_unitprice_feature_facade");
  11. let config = require("../../../config/config.js");
  12. const { getTitle } = require("../../../public/titleUtil");
  13. module.exports =function (app) {
  14. const baseController = new BaseController();
  15. app.get('/main', baseController.init, function(req, res) {
  16. let pm = require('../../pm/controllers/pm_controller');
  17. const projectID = +req.query.project;
  18. pm.checkProjectRight(req.session.sessionUser.id, projectID, async function (hasRight, projectData, isOpenShareProject, allowCooperate) {
  19. if (hasRight) {
  20. //分享的项目,只读、协作(允许编辑)
  21. let projectReadOnly = false,
  22. projectCooperate = false;
  23. if(req.session.sessionUser.id !== projectData.userID){
  24. projectData._doc.readOnly = true;
  25. projectCooperate = allowCooperate;
  26. //允许协作的项目允许编辑,非只读
  27. projectReadOnly = !projectCooperate;
  28. }
  29. let optionsDao = new OptionsDao();
  30. let options = await optionsDao.getOptions(req.session.sessionUser.id, req.session.sessionCompilation._id);
  31. if(options){
  32. options = await optionsDao.saveOptions(req.session.sessionUser.id, req.session.sessionCompilation._id, optionSetting);
  33. }
  34. const markReadProjectIDs = isOpenShareProject ? await pmFacade.markShareItemsRead(projectID, req.session.sessionUser.id) : [];
  35. const version = await systemSettingModel.getVersion();
  36. let boqType = null;
  37. const constructProject = await pmFacade.getConstructionProject(projectID);
  38. if (constructProject && constructProject.property && constructProject.property.boqType) {
  39. boqType = constructProject.property.boqType;
  40. }
  41. let filter = {compilationId: req.session.sessionCompilation._id};
  42. let featureLibs = await billsUnitPriceFeatureFacade.findByCondition(filter,{_id:0},false);
  43. // console.log(featureLibs);
  44. let billsUnitPriceFeature = (featureLibs && featureLibs.length > 0)?featureLibs[featureLibs.length - 1]:null;
  45. // console.log(req.session.sessionUser);
  46. res.render('building_saas/main/html/main.html',
  47. {
  48. userAccount: req.session.userAccount,
  49. userID: req.session.sessionUser.id,
  50. userName: req.session.sessionUser.username,
  51. userCompany: req.session.sessionUser.company,
  52. userMobile: req.session.sessionUser.mobile,
  53. projectData: projectData,
  54. compilationName: req.session.sessionCompilation.name,
  55. defaultLocation:req.session.sessionCompilation.defaultLocation,
  56. versionName: req.session.compilationVersion,
  57. projectReadOnly: projectReadOnly,
  58. projectCooperate: projectCooperate,
  59. LicenseKey:config.getLicenseKey(process.env.NODE_ENV),
  60. socketPort:config[process.env.NODE_ENV].socketPort?config[process.env.NODE_ENV].socketPort:5500,
  61. options:JSON.stringify(options),
  62. overWriteUrl:req.session.sessionCompilation.overWriteUrl,
  63. markReadProjectIDs: JSON.stringify(markReadProjectIDs),
  64. boqType,
  65. title:getTitle(req.headers.host),
  66. billsUnitPriceFeature : JSON.stringify(billsUnitPriceFeature),
  67. version
  68. });
  69. } else {
  70. res.redirect('/pm');
  71. }
  72. });
  73. });
  74. }