<?php

namespace App\Services;

use App\Models\User;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Client\Response;
use App\Services\ApiClient;

class MachineStatusForwarder
{
    protected string $externalUrl;
    protected string $endpoint;
    protected array $validated;
    protected ?User $user = null;

    public function __construct(string $externalUrl, string $endpoint, array $validated)
    {
        $this->externalUrl = $externalUrl;
        $this->endpoint = $endpoint;
        $this->validated = $validated;
    }

    public function forward(): ?Response
    {
        $response = null;

        $this->user = User::find(2); // 或用 dependency injection 把 User 帶進來

        if ($this->user && $this->user->api_plain_token) {
            $client = new ApiClient($this->externalUrl, $this->user->api_plain_token);
            $response = $client->post($this->endpoint, $this->validated);

             Log::info('✅ Machine status forwarded', [
                'endpoint' => $this->endpoint,
                'request'  => $this->validated,
                'status'   => $response->status(),
                'body'     => $response->json(),
            ]); 
        } else {
            Log::warning("🔒 User with ID 2 not found or missing token");
        }

        return $response;
    }
}