From 4ca6fd7363778a1d484603ce6c2a68c752074d40 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Tue, 10 Sep 2019 07:21:06 +0200 Subject: [PATCH] Make 'disable send to ord' for current month configurable --- .../GenerateFeesInORDButton/index.js | 38 +++++++------------ constants/constants.js | 5 +++ controllers/integration.js | 15 +++++--- environment.env | 2 + 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/client/src/components/GenerateFeesInORDButton/index.js b/client/src/components/GenerateFeesInORDButton/index.js index ab645c6..8231b50 100644 --- a/client/src/components/GenerateFeesInORDButton/index.js +++ b/client/src/components/GenerateFeesInORDButton/index.js @@ -1,10 +1,8 @@ import React, { Component } from 'react'; import { connect } from 'react-redux'; -import { Button, Modal } from 'semantic-ui-react'; -import moment from 'moment'; +import { Button, Modal, Message } from 'semantic-ui-react'; import { addFeesToOrd } from '../../store/actions'; -import { defaultDateFormat } from '../../constants/constants'; class GenerateFeesInORDButton extends Component { state = { open: false }; @@ -23,25 +21,7 @@ class GenerateFeesInORDButton extends Component { render() { const { open, size } = this.state; - const { singleMember, disabled, dateRange } = this.props; - - let submitIsDisabled = disabled; - - if (dateRange && dateRange.startDate) { - const startDateMoment = moment(dateRange.startDate, defaultDateFormat); - const currentMoment = moment(); - - const startMomentMonth = startDateMoment.month(); - const startMomentYear = startDateMoment.year(); - const currentMonth = currentMoment.month(); - const currentYear = currentMoment.year(); - - const monthSelectorIsInPast = (startMomentYear < currentYear) || - (startMomentYear === currentYear && startMomentMonth < currentMonth); - - submitIsDisabled = disabled || !monthSelectorIsInPast; - } - + const { singleMember, disabled, sendFeesError } = this.props; const modalContent = singleMember ? 'This will remove all existing fees in ORD for selected member in selected date range and generate new fees based on shown incident tables. Do you want to continue ?': @@ -49,7 +29,13 @@ class GenerateFeesInORDButton extends Component { return (
- + + + {sendFeesError && + + {sendFeesError.data ? sendFeesError.data : 'Error sending fees'} + + } Add fees to the ORD @@ -66,8 +52,12 @@ class GenerateFeesInORDButton extends Component { } } +const mapStateToProps = (state) => ({ + sendFeesError: state.addFeesStatus.error, +}); + const mapDispatchToProps = (dispatch) => ({ addFeesToOrd: (dateRange, memberIds) => addFeesToOrd(dispatch, dateRange, memberIds), }); -export default connect(null, mapDispatchToProps)(GenerateFeesInORDButton); +export default connect(mapStateToProps, mapDispatchToProps)(GenerateFeesInORDButton); diff --git a/constants/constants.js b/constants/constants.js index 9ed4a5c..dff9ef5 100644 --- a/constants/constants.js +++ b/constants/constants.js @@ -74,6 +74,8 @@ const integrationServiceErrors = { FAILED_TO_GENERATE_MEMBER_PRACTICE_SUMMARY: 'Failed to generate Member Practice Summary', ERRORS_IN_MEMBER_PRACTICE_SUMMARY_REPORT: 'Member Practice Summary Report is generated but there were some errors and report may be incomplete', EXPECTED_MEMBER_IDS_ARRAY: 'Expected array of member IDs', + SENDING_FEES_DISABLED: 'Sending fees is disabled for current and future months', + MONTH_MISSING: 'Missing month selection for sending fees to ORD', }; const incidentType = { @@ -129,6 +131,8 @@ const CUSTOM_FEES_PREFIXES = process.env.CUSTOM_FEES_PREFIXES.split(',') const UNPAID_FEE_STATUS = 'not_paid'; +const ALLOW_SENDING_FEES = parseInt(process.env.ALLOW_SENDING_FEES_FOR_CURRENT_AND_FUTURE_MONTHS) ? true : false; + module.exports = { VALID_CSV_HEADERS, USER_ENTRY_EVENT, @@ -153,4 +157,5 @@ module.exports = { DISCOUNT_PLANS, UNPAID_FEE_STATUS, CUSTOM_FEES_PREFIXES, + ALLOW_SENDING_FEES, }; diff --git a/controllers/integration.js b/controllers/integration.js index 8830a94..0beca39 100644 --- a/controllers/integration.js +++ b/controllers/integration.js @@ -10,7 +10,7 @@ const { reformatMembershipsName } = require('../services/officeRnD/memberships') const { checkBookingChanges } = require('../services/integration/checkBookingChange'); const { checkIfProcessing } = require('../services/integration/processingStatus'); -const { UI_TIMEZONE, DEFAULT_DATE_FORMAT } = require('../constants/constants'); +const { UI_TIMEZONE, DEFAULT_DATE_FORMAT, ALLOW_SENDING_FEES, integrationServiceErrors } = require('../constants/constants'); const getKnownOfficeResourceMappings = (req, res) => { const dataToFetch = [getMappingsFromDatabase(), fetchOffices(), fetchResources()]; @@ -126,7 +126,10 @@ const addFees = (req, res) => { const currentMonth = currentMoment.month(); const currentYear = currentMoment.year(); - if ((startMomentYear < currentYear) || (startMomentYear === currentYear && startMomentMonth < currentMonth)) { + const allowSendingFees = ALLOW_SENDING_FEES || + ((startMomentYear < currentYear) || (startMomentYear === currentYear && startMomentMonth < currentMonth)); + + if (allowSendingFees) { checkBookingChanges() .then(() => { deleteFeesFromORD(dateRange, memberIds) @@ -169,12 +172,12 @@ const addFees = (req, res) => { res.status(500).send(error); }) }else{ - console.log('Selected month/year pair is current month or in the future'); - res.status(400).send('Selected month/year pair is current month or in the future'); + console.log(integrationServiceErrors.SENDING_FEES_DISABLED); + res.status(400).send(integrationServiceErrors.SENDING_FEES_DISABLED); } }else{ - console.log('Date range is missing to send fees to ORD'); - res.status(400).send('Date range is missing'); + console.log(integrationServiceErrors.MONTH_MISSING); + res.status(400).send(integrationServiceErrors.MONTH_MISSING); } }; diff --git a/environment.env b/environment.env index 826e022..22db46a 100644 --- a/environment.env +++ b/environment.env @@ -39,6 +39,8 @@ ORD_OAUTH_URL=https://identity.officernd.com/oauth/token CUSTOM_FEES_PREFIXES=Array of prefixes to recognize manually added fees. Comma-separated +ALLOW_SENDING_FEES_FOR_CURRENT_AND_FUTURE_MONTHS=0 - false => Sending fees is disabled for current and future months, 1 - true => Sending fees is never disabled + #More about pool option : http://docs.sequelizejs.com/class/lib/sequelize.js~Sequelize.html DB_POOL_MAX_CONNECTIONS=Maximum number of connection in pool (ex. 18) DB_POOL_ACQUIRE=The maximum time, in milliseconds, that pool will try to get connection before throwing error (ex. 120000)