<?php

declare(strict_types=1);

namespace App\Mcp\Tool\Site;

use App\Mcp\Tool\McpToolHelper;
use App\Repository\SiteRepository;
use Mcp\Capability\Attribute\McpTool;
use Mcp\Schema\Result\CallToolResult;

#[McpTool(
    name: 'get_site',
    description: 'Get a single site by ID with all its details (name, contact info, address).',
)]
class GetSiteTool
{
    use McpToolHelper;

    public function __construct(
        private readonly SiteRepository $sites,
    ) {}

    public function __invoke(string $siteId): CallToolResult
    {
        $site = $this->sites->find($siteId);

        if (!$site) {
            $this->mcpError('not_found', "Site not found: {$siteId}");
        }

        return $this->jsonResponse([
            'id'                => $site->getId(),
            'name'              => $site->getName(),
            'contactName'       => $site->getContactName(),
            'contactPhone'      => $site->getContactPhone(),
            'contactAddress'    => $site->getContactAddress(),
            'contactPostalCode' => $site->getContactPostalCode(),
            'contactCity'       => $site->getContactCity(),
            'color'             => $site->getColor(),
            'createdAt'         => $site->getCreatedAt()->format('Y-m-d H:i:s'),
            'updatedAt'         => $site->getUpdatedAt()->format('Y-m-d H:i:s'),
        ]);
    }
}
