File: D:/HostingSpaces/farmfun/reserveren.farmfun.be/app/Komma/Teamleader/Endpoints/InvoiceEndpoint.php
<?php
namespace App\Komma\Teamleader\Endpoints;
use App\Komma\Teamleader\Base\ApiException;
use App\Komma\Teamleader\Base\ApiResponse;
use App\Komma\Teamleader\Base\Endpoint;
use App\Komma\Teamleader\Resources\Invoice;
use App\Komma\Teamleader\TeamleaderApi;
use GuzzleHttp\Psr7\Request;
final class InvoiceEndpoint extends Endpoint
{
protected string $resourceClass = Invoice::class;
/**
* Get a list of the recipes
*
* @param array $params
* @return ApiResponse
* @throws ApiException
*/
public function list(array $params = []): ApiResponse
{
$apiResponse = new ApiResponse($this->resourceClass, 'list');
$apiResponse->setApiPath('invoices.list');
return $apiResponse->fill(
$this->apiClient->send(
new Request(
TeamleaderApi::HTTP_GET,
$apiResponse->getApiPath(),
$this->buildHttpHeaders(),
json_encode($params)
)
)
);
}
/**
* @param array $invoiceData
* @return ApiResponse
* @throws ApiException
*/
public function draft(array $invoiceData): ApiResponse
{
$apiResponse = new ApiResponse($this->resourceClass, 'detail');
$apiResponse->setApiPath('invoices.draft');
return $apiResponse->fill(
$this->apiClient->send(
new Request(
TeamleaderApi::HTTP_POST,
$apiResponse->getApiPath(),
$this->buildHttpHeaders(),
json_encode($invoiceData)
)
)
);
}
/**
* Get an invoice by its id
*
* @param string $id
* @return ApiResponse
* @throws ApiException
*/
public function info(string $id): ApiResponse
{
$apiResponse = new ApiResponse($this->resourceClass, 'detail');
$apiResponse->setApiPath('invoices.info');
return $apiResponse->fill(
$this->apiClient->send(
new Request(
TeamleaderApi::HTTP_GET,
$apiResponse->getApiPath(),
$this->buildHttpHeaders(),
json_encode(['id' => $id])
)
)
);
}
}