Overview

Namespaces

  • Comprobo
    • Verify
      • Auth
      • Exceptions
      • HTTP

Classes

  • Comprobo\Verify\Api
  • Comprobo\Verify\Auth\Server
  • Comprobo\Verify\Factory
  • Comprobo\Verify\HTTP\Request
  • Comprobo\Verify\State
  • Comprobo\Verify\User
  • Comprobo\Verify\Workflow

Exceptions

  • Comprobo\Verify\Exceptions\Auth
  • Comprobo\Verify\Exceptions\Misconfiguration
  • Comprobo\Verify\Exceptions\User
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 
<?php
namespace Comprobo\Verify;

/**
 * Workflow service integration
 */
class Workflow
{
    private $config;
    private $factory;
    private $state;

    public function __construct(Factory $factory)
    {
        $this->factory = $factory;
        $this->config = $factory->getConfig();
        $this->state = $factory->getState();
    }

    /**
     *
     * @param  string $templateId   the chosen template ID (uuidv4)
     * @param  string $newFlowName  The name that will appear in Reporting and elsewhere, human readable
     * @param  array  $customFields any merge fields defined by the template.
     * @return array                Service response. It is the caller's responsibility to validate and extract information
     *
     * @see Comprobo\Verify\Workflow::listTemplates for how to find available templates
     * @see Comprobo\Verify\Workflow::getMergeFields for how to fetch available merge fields for a template
     */
    public function cloneTemplate($templateId, $newFlowName, array $customFields = [])
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not validate clone template request");
        }

        $url = str_replace('{workflowid}', $templateId, $this->config['urls']['workflowClone']);

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));

        $params = [ 'name' => $newFlowName . ' [' . time() . ']' ];
        if (!empty($customFields)) {
            $params['mergeValues'] = $customFields;
        }

        $response = $request->post($url, ['json' => $params]);
        $body     = json_decode((string) $response->getBody(), true);

        return $body;
    }

    /**
     * Fetch the list of available template types.
     *
     * @return array The list of results from the service
     */
    public function listTemplates()
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not validate list templates request");
        }

        $postDetails = [
            'limit' => -1,
            'offset' => 0,
            'templates' => 'only', // only template workflows
            'includeInactive' => false,
            'order' => 'name',
            'owner' => false, // any workflow in the org
        ];

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));
        $response = $request->get($this->config['urls']['workflowList'], ['query' => $postDetails]);
        $body = json_decode((string) $response->getBody(), true);

        return $body['results'];
    }

    /**
     * Retrieve merge fields for the template.
     *
     * When cloning into a usable workflow values for these fields will be interpolated into some content.
     *
     * @param  string $templateId the template you would like merge fields for
     * @return array             list of field ids that can be sent to the cloneTemplate call
     *
     * @see self::cloneTemplate  for how to submit merge field values
     */
    public function getMergeFields($templateId)
    {
        if (!$this->state->has('token')) {
            throw new Exceptions\Auth("Could not validate list templates request");
        }

        $request = $this->factory->getRequest();
        $request->authorize($this->state->get('token'));

        $url = str_replace('{workflowid}', $templateId, $this->config['urls']['workflowAnalyse']);

        $response = $request->get($url, ['http_errors' => false]);
        $body = json_decode((string) $response->getBody(), true);

        return $body['mergeFields'];
    }

    /**
     * Assign a user to the workflow.
     *
     * @param  string $userId     Comprobo user ID
     * @param  string $templateId Comprobo template ID
     * @return bool
     */
    public function assignUser($userId, $templateId)
    {
        return $this->factory->getUser()->assignWorkflow($userId, $templateId);
    }
}
API documentation generated by ApiGen