UNPKG

fh-wfm-result

Version:

A result module for WFM, for working with the results of pushing a workorder through a workflow

43 lines (36 loc) 1.55 kB
var CONSTANTS = require('../../constants'); var _ = require('lodash'); /** * Initialsing a subscriber for updating a result. * * @param {object} resultEntityTopics * @param {ManagerWrapper} resultClient */ module.exports = function updateResultSubscriber(resultEntityTopics, resultClient) { /** * * Handling the update of a result * * @param {object} parameters * @param {object} parameters.resultToUpdate - The result item to update * @param {string/number} parameters.topicUid - (Optional) A unique ID to be used to publish completion / error topics. * @returns {*} */ return function handleUpdateTopic(parameters) { var self = this; parameters = parameters || {}; var resultUpdateErrorTopic = resultEntityTopics.getTopic(CONSTANTS.TOPICS.UPDATE, CONSTANTS.ERROR_PREFIX, parameters.topicUid); var resultUpdateDoneTopic = resultEntityTopics.getTopic(CONSTANTS.TOPICS.UPDATE, CONSTANTS.DONE_PREFIX, parameters.topicUid); var resultToUpdate = parameters.resultToUpdate; //If no result is passed, can't update one. Also require the ID of the workorde to update it. if (!_.isPlainObject(resultToUpdate)) { return self.mediator.publish(resultUpdateErrorTopic, new Error("Invalid Data To Update A Result.")); } resultClient.manager.update(resultToUpdate) .then(function(updatedResult) { self.mediator.publish(resultUpdateDoneTopic, updatedResult); }).catch(function(error) { self.mediator.publish(resultUpdateErrorTopic, error); }); }; };