Использование экземпляров класса в маршруте Laravel - PullRequest
0 голосов
/ 24 апреля 2019

Я создал контроллер 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.

1 Ответ

0 голосов
/ 24 апреля 2019

Я исправил это, сделав детский класс. Затем присваивание свойств дочернему классу. Свойства auth и agent затем устанавливаются равными свойствам дочернего класса. Это делает класс многоразовым.

Конструктор родительского класса

public function __construct() {
    $this->auth = $this->ChildAuth;
    $this->agent = $this->ChildAgent;
} 

Детский класс

class MennoTickets extends V2AgentTicketController
{
    protected $ChildAuth = 'carlo';
    protected $ChildAgent = 314955;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...