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: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168:
<?php
/**
* Upwork auth library for using with public API by OAuth
* Time Reporting
*
* @final
* @package UpworkAPI
* @since 05/02/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\Reports;
use Upwork\API\Debug as ApiDebug;
use Upwork\API\Client as ApiClient;
/**
* Financial Reporting
*
* @link http://developers.upwork.com/Time-Reports-API
*/
final class Time extends ApiClient
{
const ENTRY_POINT = UPWORK_GDS_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;
}
/**
* Generate Time Reports for a Specific Team/Comapny/Agency
*
* @param string $company Company ID
* @param string $team (Optional) Team ID
* @param string $agency (Optional) Agency ID
* @param array $params (Optional) Parameters
* @param boolean $hideFinDetails (Optional) Hides all financial details
* @return object
*/
private function _getByType($company, $team = null, $agency = null, $params = array(), $hideFinDetails = false)
{
ApiDebug::p(__FUNCTION__);
$_url = '';
if ($team) {
$_url = '/teams/' . $team;
if ($hideFinDetails) {
$_url .= '/hours';
}
} elseif ($agency) {
$_url = '/agencies/' . $agency;
}
$report = $this->_client->get('/timereports/v1/companies/' . $company . $_url, $params);
ApiDebug::p('found report info', $report);
return $report;
}
/**
* Generate Time Reports for a Specific Team (with financial info)
*
* @param string $company Company ID
* @param string $team Team ID
* @param array $params Parameters
* @return object
*/
public function getByTeamFull($company, $team, $params)
{
ApiDebug::p(__FUNCTION__);
return $this->_getByType($company, $team, null, $params, false);
}
/**
* Generate Time Reports for a Specific Team (hide financial info)
*
* @param string $company Company ID
* @param string $team Team ID
* @param array $params Parameters
* @return object
*/
public function getByTeamLimited($company, $team, $params)
{
ApiDebug::p(__FUNCTION__);
return $this->_getByType($company, $team, null, $params, true);
}
/**
* Generating Agency Specific Reports
*
* @param string $company Company ID
* @param string $agency Agency ID
* @param array $params Parameters
* @return object
*/
public function getByAgency($company, $agency, $params)
{
ApiDebug::p(__FUNCTION__);
return $this->_getByType($company, null, $agency, $params);
}
/**
* Generating Company Wide Reports
*
* @param string $company Company ID
* @param array $params Parameters
* @return object
*/
public function getByCompany($company, $params)
{
ApiDebug::p(__FUNCTION__);
return $this->_getByType($company, null, null, $params);
}
/**
* Generating Freelancer Specific Reports (hide financial info)
*
* @param string $freelancerId Freelancer ID
* @param array $params Parameters
* @return object
*/
public function getByFreelancerLimited($freelancerId, $params)
{
ApiDebug::p(__FUNCTION__);
$report = $this->_client->get('/timereports/v1/providers/' . $freelancerId . '/hours', $params);
ApiDebug::p('found report info', $report);
return $report;
}
/**
* Generating Freelancer Specific Reports (with financial info)
*
* @param string $freelancerId Freelancer ID
* @param array $params Parameters
* @return object
*/
public function getByFreelancerFull($freelancerId, $params)
{
ApiDebug::p(__FUNCTION__);
$report = $this->_client->get('/timereports/v1/providers/' . $freelancerId, $params);
ApiDebug::p('found report info', $report);
return $report;
}
}