From a164ef638dfec56896f3b4bc36eade3f4bb7f177 Mon Sep 17 00:00:00 2001 From: Camel Aissani Date: Tue, 18 May 2021 22:53:46 +0200 Subject: [PATCH] added template contract in leases --- backend/managers/documentmanager.js | 1 + backend/managers/emailmanager.js | 7 ++++--- backend/managers/leasemanager.js | 1 + backend/managers/propertymanager.js | 12 +++++++----- backend/managers/rentmanager.js | 8 +++++--- backend/managers/templatemanager.js | 2 +- backend/models/lease.js | 1 + backend/routes/apiv2.js | 9 +++++++++ 8 files changed, 29 insertions(+), 12 deletions(-) diff --git a/backend/managers/documentmanager.js b/backend/managers/documentmanager.js index dbde122..88e75e1 100644 --- a/backend/managers/documentmanager.js +++ b/backend/managers/documentmanager.js @@ -21,6 +21,7 @@ const get = async (req, res) => { const response = await axios.get(url, { responseType: 'stream', headers: { + organizationId: req.headers.organizationid || String(req.realm._id), 'Accept-Language': language, }, }); diff --git a/backend/managers/emailmanager.js b/backend/managers/emailmanager.js index 4a04942..8539431 100644 --- a/backend/managers/emailmanager.js +++ b/backend/managers/emailmanager.js @@ -5,7 +5,7 @@ const logger = require('winston'); const config = require('../../config'); const occupantModel = require('../models/occupant'); -const _sendEmail = async (locale, message) => { +const _sendEmail = async (req, message) => { const postData = { templateName: message.document, recordId: message.tenantId, @@ -17,7 +17,8 @@ const _sendEmail = async (locale, message) => { try { const response = await axios.post(config.EMAILER_URL, postData, { headers: { - 'Accept-Language': locale, + organizationId: req.headers.organizationid || String(req.realm._id), + 'Accept-Language': req.language, }, }); @@ -69,7 +70,7 @@ module.exports = { const statusList = await Promise.all( messages.map(async (message) => { try { - return await _sendEmail(req.language, message); + return await _sendEmail(req, message); } catch (error) { return [ { diff --git a/backend/managers/leasemanager.js b/backend/managers/leasemanager.js index e878d08..fbc815c 100644 --- a/backend/managers/leasemanager.js +++ b/backend/managers/leasemanager.js @@ -83,6 +83,7 @@ async function update(req, res) { name: lease.name || dbLease.name, description: lease.description || dbLease.description, active: lease.active !== undefined ? lease.active : dbLease.active, + templateId: lease.templateId || '', }; } diff --git a/backend/managers/propertymanager.js b/backend/managers/propertymanager.js index 5e6f276..76641c9 100644 --- a/backend/managers/propertymanager.js +++ b/backend/managers/propertymanager.js @@ -29,10 +29,12 @@ function _toPropertiesData(realm, inputProperties, callback) { property, occupants.reduce( (acc, occupant) => { - const occupant_property = occupant.properties.find( - (currentProperty) => - currentProperty.propertyId === property._id.toString() - ); + const occupant_property = + occupant.properties && + occupant.properties.find( + (currentProperty) => + currentProperty.propertyId === property._id.toString() + ); if (occupant_property) { if (!acc.occupant) { acc.occupant = occupant; @@ -59,7 +61,7 @@ function _toPropertiesData(realm, inputProperties, callback) { { occupant: null } ).occupant, occupants - .filter(({ properties }) => + .filter(({ properties = [] }) => properties .map(({ propertyId }) => propertyId) .includes(property._id) diff --git a/backend/managers/rentmanager.js b/backend/managers/rentmanager.js index 394096a..2ccb85a 100644 --- a/backend/managers/rentmanager.js +++ b/backend/managers/rentmanager.js @@ -52,14 +52,16 @@ const _findOccupants = (realm, occupantId, startTerm, endTerm) => { }); }; -const _getEmailStatus = async (startTerm, endTerm) => { +const _getEmailStatus = async (realm, startTerm, endTerm) => { try { let emailEndPoint = `${config.EMAILER_URL}/status/${startTerm}`; if (endTerm) { emailEndPoint = `${config.EMAILER_URL}/status/${startTerm}/${endTerm}`; } logger.debug(`get email status ${emailEndPoint}`); - const response = await axios.get(emailEndPoint); + const response = await axios.get(emailEndPoint, { + organizationId: String(realm._id), + }); logger.debug(response.data); return response.data.reduce((acc, status) => { const data = { @@ -93,7 +95,7 @@ const _getRentsDataByTerm = async (realm, currentDate, frequency) => { const [dbOccupants, emailStatus = {}] = await Promise.all([ _findOccupants(realm, null, startTerm, endTerm), - _getEmailStatus(startTerm, endTerm).catch(logger.error), + _getEmailStatus(realm, startTerm, endTerm).catch(logger.error), ]); // compute rents diff --git a/backend/managers/templatemanager.js b/backend/managers/templatemanager.js index 9c2bb3b..91bf4a9 100644 --- a/backend/managers/templatemanager.js +++ b/backend/managers/templatemanager.js @@ -1,7 +1,7 @@ const config = require('../../config'); const axios = require('axios'); -//TODO: if no added value to have the api in loca then move that in nginx config +//TODO: if no added value to have the api in loca then move that in nginx config const pdfGeneratorUrl = `${config.PDFGENERATOR_URL}/templates`; diff --git a/backend/models/lease.js b/backend/models/lease.js index bb7b264..e92efce 100644 --- a/backend/models/lease.js +++ b/backend/models/lease.js @@ -13,6 +13,7 @@ class LeaseModel extends Model { timeRange: String, // days, weeks, months, years active: Boolean, system: Boolean, + templateId: String, }); } diff --git a/backend/routes/apiv2.js b/backend/routes/apiv2.js index 492d4bb..8a5727d 100755 --- a/backend/routes/apiv2.js +++ b/backend/routes/apiv2.js @@ -8,6 +8,7 @@ const leaseManager = require('../managers/leasemanager'); const rentManager = require('../managers/rentmanager'); const occupantManager = require('../managers/occupantmanager'); const documentManager = require('../managers/documentmanager'); +const templateManager = require('../managers/templatemanager'); const propertyManager = require('../managers/propertymanager'); const ownerManager = require('../managers/ownermanager'); const notificationManager = require('../managers/notificationmanager'); @@ -96,6 +97,14 @@ module.exports = function () { documentsRouter.patch('/:id', documentManager.update); router.use('/documents', documentsRouter); + const templatesRouter = express.Router(); + templatesRouter.get('/', templateManager.all); + templatesRouter.get('/:id', templateManager.one); + templatesRouter.post('/', templateManager.add); + templatesRouter.put('/', templateManager.update); + templatesRouter.delete('/:ids', templateManager.remove); + router.use('/templates', templatesRouter); + const notificationsRouter = express.Router(); notificationsRouter.get('/', notificationManager.all); router.use('/notifications', notificationsRouter);