<?php
declare(strict_types=1);

/**
 * 洗车数据业务模型
 * 通过注入的 HttpClient 与 ypAPI 通信，不直接依赖具体 HTTP 实现
 */
class Wash
{
    public function __construct(private HttpClient $http) {}

    /**
     * 从配置构造，适合 Action 层一行初始化
     *   $wash = Wash::fromConfig();
     */
    public static function fromConfig(): self
    {
        $cfg = Mvc::$cfg['ypAPI'] ?? [];
        return new self(new HttpClient(
            $cfg['url']       ?? '',
            $cfg['params']    ?? [],
            120,
            $cfg['sslVerify'] ?? true,
        ));
    }

    public function get(string $method, array $params): array
    {
        $data = $this->http->get($method, $params);
        return $this->checkData($data,$method, $params);
    }

    public function post(string $method, array $params): array
    {
        $data = $this->http->post($method, $params);
        return $this->checkData($data,$method, $params);
    }

    public function checkData(array $data, string $method, array $params): array
    {
        if(!$data['status']) {
            dd($method, $params, $data);
        }
        return $data;
    }

    public function getModelByNumber(string $number): array
    {
        return $this->post('number/getModelByNumber', ['number' => $number]);
    }

    public function test(): array
    {
        return $this->getModelByNumber('8K0615601B');
    }
}
