From 563aa7a92330a4752fb862e63783902384cb4771 Mon Sep 17 00:00:00 2001 From: imcaizheng Date: Thu, 7 Jan 2021 22:08:09 +0800 Subject: [PATCH] turn a job into in-review status after it has a candidate --- src/eventHandlers/JobCandidateEventHandler.js | 51 +++++++++++++++++++ src/eventHandlers/index.js | 2 + 2 files changed, 53 insertions(+) create mode 100644 src/eventHandlers/JobCandidateEventHandler.js diff --git a/src/eventHandlers/JobCandidateEventHandler.js b/src/eventHandlers/JobCandidateEventHandler.js new file mode 100644 index 00000000..c199cb7d --- /dev/null +++ b/src/eventHandlers/JobCandidateEventHandler.js @@ -0,0 +1,51 @@ +/* + * Handle events for JobCandidate. + */ + +const models = require('../models') +const logger = require('../common/logger') +const helper = require('../common/helper') +const JobService = require('../services/JobService') + +/** + * Once we create at least one JobCandidate for a Job, the Job status should be changed to in-review. + * + * @param {Object} payload the event payload + * @returns {undefined} + */ +async function inReviewJob (payload) { + const job = await models.Job.findById(payload.value.jobId) + if (job.status === 'in-review') { + logger.debug({ + component: 'JobCandidateEventHandler', + context: 'inReviewJob', + message: `id: ${job.id} job is already in in-review status` + }) + return + } + await JobService.partiallyUpdateJob( + helper.getAuditM2Muser(), + job.id, + { status: 'in-review' } + ).then(result => { + logger.info({ + component: 'JobCandidateEventHandler', + context: 'inReviewJob', + message: `id: ${result.id} job got in-review status.` + }) + }) +} + +/** + * Process job candidate create event. + * + * @param {Object} payload the event payload + * @returns {undefined} + */ +async function processCreate (payload) { + await inReviewJob(payload) +} + +module.exports = { + processCreate +} diff --git a/src/eventHandlers/index.js b/src/eventHandlers/index.js index 40e44864..6de47dc3 100644 --- a/src/eventHandlers/index.js +++ b/src/eventHandlers/index.js @@ -5,11 +5,13 @@ const config = require('config') const eventDispatcher = require('../common/eventDispatcher') const JobEventHandler = require('./JobEventHandler') +const JobCandidateEventHandler = require('./JobCandidateEventHandler') const ResourceBookingEventHandler = require('./ResourceBookingEventHandler') const logger = require('../common/logger') const TopicOperationMapping = { [config.TAAS_JOB_UPDATE_TOPIC]: JobEventHandler.processUpdate, + [config.TAAS_JOB_CANDIDATE_CREATE_TOPIC]: JobCandidateEventHandler.processCreate, [config.TAAS_RESOURCE_BOOKING_UPDATE_TOPIC]: ResourceBookingEventHandler.processUpdate }