<?php

namespace App\Services;

use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Session;

class TicketService {
    protected $baseUrl = 'https://intersolid.ellevocloud.com/api/';

    public function getChamadosComDetalhes()
    {
        $accessToken = Session::get('access_token');

        if (!$accessToken) {
            return ['error' => 'Você precisa estar logado.'];
        }

        $response = Http::withHeaders([
            'Authorization' => 'Bearer ' . $accessToken,
        ])->get($this->baseUrl . 'chamado' , [
            'ordemTipo' => 'Desc',
            'tipoExibicao' => 'todos',
            'paginaTamanho' => '0']);

        if ($response->failed()) {
            return ['error' => 'Erro ao buscar chamados.'];
        }

        $chamados = collect($response->json());

        $chamadosFiltrados = $chamados->filter(function ($chamado) {
            return in_array($chamado['status'], ['NaoIniciado', 'EmAndamento', 'AguardandoTerceiro',]);
        });

        if ($chamadosFiltrados->isEmpty()) {
            return ['data' => [], 'message' => 'Nenhum chamado encontrado para os filtros aplicados.'];
        }

        $chamadosDetalhados = $chamadosFiltrados->map(function ($chamado) use ($accessToken) {
            $detalheResponse = Http::withHeaders([
                'Authorization' => 'Bearer ' . $accessToken,
            ])->get($this->baseUrl . 'chamado/' . $chamado['chamadoId']);

            if ($detalheResponse->successful()) {
                return array_merge($chamado, $detalheResponse->json());
            } else {
                return $chamado; 
            }
        });

        return ['data' => $chamadosDetalhados, 'message' => null];
    }
}