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: 
<?php
/**
 * Upwork auth library for using with public API by OAuth
 * Work with Submissions
 *
 * @final
 * @package     UpworkAPI
 * @since       11/17/2014
 * @copyright   Copyright 2014(c) Upwork.com
 * @author      Maksym Novozhylov <mnovozhilov@upwork.com>
 * @license     Upwork's API Terms of Use {@link https://developers.upwork.com/api-tos.html}
 */

namespace Upwork\API\Routers\Hr;

use Upwork\API\Debug as ApiDebug;
use Upwork\API\Client as ApiClient;

/**
 * Submissions
 *
 * @link https://developers.upwork.com/?lang=php#contracts-and-offers
 */
final class Submissions extends ApiClient
{
    const ENTRY_POINT = UPWORK_API_EP_NAME;

    /**
     * @var Client instance
     */
    private $_client;

    /**
     * Constructor
     *
     * @param   ApiClient $client Client object
     */
    public function __construct(ApiClient $client)
    {
        ApiDebug::p('init ' . __CLASS__ . ' router');
        $this->_client = $client;
        parent::$_epoint = self::ENTRY_POINT;
    }

    /**
     * Freelancer submits work for the client to approve
     *
     * @param   array $params Parameters
     * @return  object
     */
    public function requestApproval($params)
    {
        ApiDebug::p(__FUNCTION__);

        $response = $this->_client->post('/hr/v3/fp/submissions', $params);
        ApiDebug::p('found response info', $response);

        return $response;
    }

    /**
     * Approve an existing Submission
     *
     * @param   integer Submission ID
     * @param   array $params Parameters
     * @return  object
     */
    public function approve($submissionId, $params)
    {
        ApiDebug::p(__FUNCTION__);

        $response = $this->_client->put('/hr/v3/fp/submissions/' . $submissionId . '/approve', $params);
        ApiDebug::p('found response info', $response);

        return $response;
    }

    /**
     * Reject an existing Submission
     *
     * @param   integer Submission ID
     * @param   array $params Parameters
     * @return  object
     */
    public function reject($submissionId, $params)
    {
        ApiDebug::p(__FUNCTION__);

        $response = $this->_client->put('/hr/v3/fp/submissions/' . $submissionId . '/reject', $params);
        ApiDebug::p('found response info', $response);

        return $response;
    }
}