<?php
// src/Service/UserService.php
namespace App\Service\Xero;
use App\Authenticator\XeroAuthenticator;
use App\Exception\ServiceException;
use App\Serializer\XeroObjectConverter;
use App\Service\Xero\XeroService;
use XeroAPI\XeroPHP\Models\Accounting\TrackingOption;
class SettingService extends XeroService
{
public function __construct(XeroAuthenticator $xeroAuthenticator)
{
parent::__construct($xeroAuthenticator);
}
/**
* Create tracking option
*
* @param string $trackingCategoryID
* @param string $optionName
* @return string|null
*/
public function createTrackingOption(string $trackingCategoryID, string $optionName): string
{
$trackingOption = (new TrackingOption())
->setName($optionName)
;
$apiResponse = $this->xeroAccountingManager->createTrackingOptions($this->xeroTenantId, $trackingCategoryID, $trackingOption);
if ($apiResponse[0]['has_validation_errors']) {
throw new ServiceException($apiResponse[0]['validation_errors'][0]['message']);
}
return $apiResponse[0]['tracking_option_id'];
}
/**
* Get Tracking option from Xero straight
*/
public function getTrackingOption(string $trackingCategoryID, $optionName): ?string
{
$apiResponse = $this->xeroAccountingManager->getTrackingCategory($this->xeroTenantId, $trackingCategoryID);
if (!isset($apiResponse[0]['options'])) {
return null;
}
foreach($apiResponse[0]['options'] as $option) {
if ($option['name'] == $optionName && $option['status'] == 'ACTIVE') {
return $option['tracking_option_id'];
}
}
return null;
}
}