 ###############################################################################
 
 rerunGetTaskTransactionsData = (taskID, transactionID, callback) ->
+
   # find the tasks object for the transaction being processed
   TaskModel.findById taskID, (err, task) ->
     if err

  TaskModel.findOne
    _id: taskID
  , (err, task) ->

    if task.status == 'NotStarted'
      task.status = 'Processing'
    
    task.transactions.forEach (tx) ->
      if tx.tid == transactionID

http = require 'http'
TransactionModel = require("../model/transactions").Transaction


#####################################################################################################
# Worker Process - Register the worker - Start the worker - Consume 'jobs' awaiting to be processed #
#####################################################################################################

worker = client.worker([ "transactions" ])
worker.register rerun_transaction: (params, callback) ->

  transactionID = params.transactionID;
  taskID = params.taskID;

  # Get the task object and update
  # ensure transactionID is within task object
  # pull and respond with transaction object
  rerunGetTaskTransactionsData taskID, transactionID, (err, transaction) ->

    if err
      logger.error(err)
      return callback err, null

    # setup the option object for the HTTP Request
    rerunSetHTTPRequestOptions transaction, (err, options) ->

      if err
        logger.error(err)
        return callback err, null

      #############################################################################
      ### The job has processed correctly and is preparing to send HTTP Request ###
      ### Move on to another job while this one waits for HTTPResponse to save  ###
      ###     the result - "callback null, trasnactionID" completes the job     ###
      #############################################################################
      callback null, transactionID
      
      # Run the HTTP Request with details supplied in options object
      rerunHttpRequestSend options, transaction, (err, HTTPResponse) ->

        if err
          logger.error(err)
          return callback err, null

        # Update the task object with the response details
        rerunUpdateTaskObject taskID, transactionID, HTTPResponse, (err, updatedTask) ->

          if err
            logger.error(err)
            return callback err, null

logger.info('Starting the workers')
worker.start()

#####################################################################################################
# Worker Process - Register the worker - Start the worker - Consume 'jobs' awaiting to be processed #
#####################################################################################################



###############################################################################
