Я создал контроллер Laravel, который выполняет вызовы к стороннему API и сохраняет данные по каждому агенту. Мне нужно будет сделать несколько таких вызовов, и чтобы они оставались сухими, я решил создать один класс, а затем с конструктором, чтобы код не был слишком запутанным. Поскольку существует более одного агента, мне придется повторить этот процесс. Могу ли я использовать экземпляр класса ниже в Laravel Route?
К сожалению, поиск по моей проблеме не дал результата.
class AgentTicketController extends Controller
{
protected $auth;
protected $agent;
public function __construct() {
$this->auth = 'menno';
$this->agent = 428448;
}
public function getTickets() {
$client = new \GuzzleHttp\Client([
'base_uri' => config('teamwork.apilink'),
'auth' => [config('teamwork.'.$this->auth), 'x'],
'verify' => false
]);
$PreResponse = $client->get('v1/tickets/search.json', [
'query' => ['page' => 200, 'assignedTo[]' => $this->agent, 'statuses[]' => ['active', 'waiting', 'backlog', 'on-hold']]
]);
$PreJson = (string)$PreResponse->getBody()->getContents();
$pages = json_decode($PreJson, true);
$agentsActive = 0;
$agentsOnHold = 0;
$agentsUnread = 0;
for($i = 1; $i < $pages['maxPages']+1; $i++) {
$response = $client->get('v1/tickets/search.json', [
'query' => ['page' => $i, 'assignedTo[]' => $this->agent, 'statuses[]' => ['active', 'waiting', 'backlog', 'on-hold'], 'sortDir' => 'desc', 'sortBy' => 'updatedAt']
]);
//Verwekt de data gekregen van de API
$json = (string)$response->getBody()->getContents();
$decoded = json_decode($json, true);
//Haalt de lengte van de result array op
$arrayLength = sizeof($decoded['tickets']);
for($int = 0; $int < $arrayLength; $int++) {
// Als het ticket aan Menno assigned is
if($decoded['tickets'][$int]['assignedTo']['id'] === $this->agent) {
if($decoded['tickets'][$int]['status'] === 'active' || $decoded['tickets'][$int]['status'] === 'waiting') {
$agentsActive++;
if($decoded['tickets'][$int]['status'] === 'active' && $decoded['tickets'][$int]['isRead'] === false) {
$agentsUnread++;
}
}
else if($decoded['tickets'][$int]['status'] === 'backlog' || $decoded['tickets'][$int]['status'] === 'on-hold') {
$agentsOnHold++;
}
}
}
}
$result = array(
$this->auth.'sActive' => $agentsActive,
$this->auth.'sOnHold' => $agentsOnHold,
$this->auth.'sUnread' => $agentsUnread
);
foreach($result as $key => $value) {
if(is_null($value)) {
$result[$key] = 0;
}
}
return $result;
}
}
(Конструктор будет завершен, когда я выясню, как использовать экземпляры в качестве маршрутов)
Итак, я хочу знать, как экземпляр класса, вставленного выше, можно использовать в маршрутах web.php, чтобы я мог получить его с помощью внешнего интерфейса Vue.