Home Reference Source

service/userManager.js

const soapUtil = require('../utils/soapUtil')
const logger = require('../utils/logger')
const MODULE_NAME = 'userManager'
let userManager = {}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 */
userManager.getUser = async function (req, res) {
  const SERVICE_NAME = 'getUser'
  logger.info(MODULE_NAME + ' :: Entering into getUser()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.getUserInformationRequest = {}
    reqParams.getUserInformationRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.getUserInformationRequest.seatId = reqData.seatId
    reqParams.getUserInformationRequest.version = reqData.version
    client.getUserInformation(reqParams, function (err, result, envelope, soapHeader) {
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while getting user information. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: User information getting successfully.')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while getting user information. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 * @type {number}
 */
userManager.createOrUpdatePasscode = async function (req, res) {
  const SERVICE_NAME = 'createOrUpdatePasscode'
  logger.info(MODULE_NAME + ' :: Entering into createOrUpdatePasscode()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.createOrUpdatePasscodeRequest = {}
    reqParams.createOrUpdatePasscodeRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation = {}
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.passcode = reqData.passcode
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.seatId = reqData.seatId
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.firstName = reqData.firstName
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.lastName = reqData.lastName
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.email = reqData.email
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.certificateProfileOid = reqData.certificateProfileOid
    reqParams.createOrUpdatePasscodeRequest.passcodeInformation.userAttribute = []

    reqData.userAttribute.forEach(function (user) {
      reqParams.createOrUpdatePasscodeRequest.passcodeInformation.userAttribute.push(user)
    })

    reqParams.createOrUpdatePasscodeRequest.version = reqData.version

    if (reqData.passcode) {
      reqParams.createOrUpdatePasscodeRequest.passcode = reqData.passcode // optional param
    }

    if (reqData.numberOfBadAttempts) {
      reqParams.createOrUpdatePasscodeRequest.numberOfBadAttempts = reqData.numberOfBadAttempts // optional param
    }

    if (reqData.passcodeStatus) {
      reqParams.createOrUpdatePasscodeRequest.passcodeStatus = reqData.passcodeStatus // optional param
    }

    if (reqData.expiryDateTime) {
      reqParams.createOrUpdatePasscodeRequest.expiryDateTime = reqData.expiryDateTime // optional param
    }

    if (reqData.creationDateTime) {
      reqParams.createOrUpdatePasscodeRequest.creationDateTime = reqData.creationDateTime // optional param
    }

    if (reqData.seatId) {
      reqParams.createOrUpdatePasscodeRequest.seatId = reqData.seatId // optional param
    }

    if (reqData.firstName) {
      reqParams.createOrUpdatePasscodeRequest.firstName = reqData.firstName // optional param
    }

    if (reqData.lastName) {
      reqParams.createOrUpdatePasscodeRequest.lastName = reqData.lastName // optional param
    }

    if (reqData.email) {
      reqParams.createOrUpdatePasscodeRequest.email = reqData.email // optional param
    }

    if (reqData.certificateProfileOid) {
      reqParams.createOrUpdatePasscodeRequest.certificateProfileOid = reqData.certificateProfileOid // optional param
    }

    if (reqData.enrollmentURL) {
      reqParams.createOrUpdatePasscodeRequest.enrollmentURL = reqData.enrollmentURL // optional param
    }

    client.createOrUpdatePasscode(reqParams, function (err, result, envelope, soapHeader) {
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while create or update passcode. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Create or update passcode successfully.')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while create or update passcode. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 * @type {number}
 */
userManager.createOrUpdateUser = async function (req, res) {
  const SERVICE_NAME = 'createOrUpdateUser'
  logger.info(MODULE_NAME + ' :: Entering into createOrUpdateUser()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.createOrUpdateUserRequest = {}
    reqParams.createOrUpdateUserRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.createOrUpdateUserRequest.userInformation = {}
    reqParams.createOrUpdateUserRequest.userInformation.seatId = reqData.seatId
    reqParams.createOrUpdateUserRequest.userInformation.firstName = reqData.firstName
    reqParams.createOrUpdateUserRequest.userInformation.lastName = reqData.lastName
    reqParams.createOrUpdateUserRequest.userInformation.emailAddress = reqData.emailAddress

    if (reqData.deskPhoneNumber) {
      reqParams.createOrUpdateUserRequest.userInformation.deskPhoneNumber = reqData.deskPhoneNumber // optional param
    }

    if (reqData.mobilePhoneNumber) {
      reqParams.createOrUpdateUserRequest.userInformation.mobilePhoneNumber = reqData.mobilePhoneNumber // optional param
    }

    reqParams.createOrUpdateUserRequest.userInformation.userAttribute = []
    reqData.userAttribute.forEach(function (user) {
      reqParams.createOrUpdateUserRequest.userInformation.userAttribute.push(user)
    })
    reqParams.createOrUpdateUserRequest.version = reqData.version
    client.createOrUpdateUser(reqParams, function (err, result, envelope, soapHeader) {
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while create or update user. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Create or update user successfully')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while create or update user. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 * @type {number}
 */
userManager.deleteUser = async function (req, res) {
  const SERVICE_NAME = 'deleteUser'
  logger.info(MODULE_NAME + ' :: Entering into deleteUser()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.deleteUserRequest = {}
    reqParams.deleteUserRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.deleteUserRequest.seatId = reqData.seatId
    reqParams.deleteUserRequest.revocationReason = reqData.revocationReason
    reqParams.deleteUserRequest.version = reqData.version
    client.deleteUser(reqParams, function (err, result, envelope, soapHeader) {
      // console.log(client.lastRequest)
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while deleting user. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: User deleted successfully')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while deleting user. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 * @type {number}
 */
userManager.bulkDeleteUser = async function (req, res) {
  const SERVICE_NAME = 'bulkDeleteUser'
  logger.info(MODULE_NAME + ' :: Entering into bulkDeleteUser()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.bulkDeleteUserRequest = {}
    reqParams.bulkDeleteUserRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.bulkDeleteUserRequest.seatId = []
    reqData.seatId.forEach(function (seatId) {
      reqParams.bulkDeleteUserRequest.seatId.push(seatId)
    })
    reqParams.bulkDeleteUserRequest.revocationReason = reqData.revocationReason
    reqParams.bulkDeleteUserRequest.version = reqData.version
    client.bulkDeleteUser(reqParams, function (err, result, envelope, soapHeader) {
      // console.log(client.lastRequest)
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while deleting bulk user. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: bulk user deleted successfully')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while deleting bulk user. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

/**
 * Adds two numbers.
 * @param {any} req request format.
 * @param {any} res response format.
 * @return {any} Returns response.
 * @type {number}
 */
userManager.getPasscodeInformation = async function (req, res) {
  const SERVICE_NAME = 'getPasscodeInformation'
  logger.info(MODULE_NAME + ' :: Entering into getPasscodeInformation()')
  let response = {}
  try {
    let [client, reqData] = await soapUtil.getSOAPClientAndReqData(req, 'usermanagement', process.env.USER_MANAGEMENT_WSDL)
    let reqParams = {}
    reqParams.getPasscodeInformationRequest = {}
    reqParams.getPasscodeInformationRequest.clientTransactionID = reqData.clientTransactionID
    reqParams.getPasscodeInformationRequest.seatId = reqData.seatId
    reqParams.getPasscodeInformationRequest.certificateProfileOid = reqData.certificateProfileOid
    reqParams.getPasscodeInformationRequest.version = reqData.version

    client.getPasscodeInformation(reqParams, function (err, result, envelope, soapHeader) {
      if (err) {
        logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while getting passcode information. Error :' + err)
        response.status = 'ERROR'
        response.errorDescription = err
        res.send(response)
      } else {
        logger.info(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Passcode information getting successfully.')
        response.status = 'SUCCESS'
        response.data = result
        res.send(response)
      }
    })
  } catch (err) {
    logger.error(MODULE_NAME + ' :: ' + SERVICE_NAME + ' :: Error while getting passcode information. Error :' + err)
    response.status = 'ERROR'
    response.errorDescription = err
    res.send(response)
  }
}

module.exports = userManager