<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\BizCertStoreRequest;
use App\Services\BizCertOcrService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

/**
 * 사업자등록증 OCR API 컨트롤러
 */
class BizCertController extends Controller
{
    public function __construct(
        private BizCertOcrService $service
    ) {}

    /**
     * Claude Vision OCR 처리
     *
     * POST /api/biz-cert/ocr
     */
    public function ocr(Request $request): JsonResponse
    {
        $request->validate([
            'image' => 'required|string',
            'raw_text' => 'nullable|string',
        ]);

        $result = $this->service->processWithClaude(
            $request->input('image'),
            $request->input('raw_text')
        );

        if (! $result['ok']) {
            return response()->json($result, 400);
        }

        return response()->json($result);
    }

    /**
     * 저장된 목록 조회
     *
     * GET /api/biz-cert
     */
    public function index(): JsonResponse
    {
        $list = $this->service->list();

        return response()->json([
            'ok' => true,
            'data' => $list,
        ]);
    }

    /**
     * 사업자등록증 데이터 저장
     *
     * POST /api/biz-cert
     */
    public function store(BizCertStoreRequest $request): JsonResponse
    {
        $bizCert = $this->service->store($request->validated());

        return response()->json([
            'ok' => true,
            'message' => '저장되었습니다.',
            'data' => $bizCert,
        ]);
    }

    /**
     * 삭제
     *
     * DELETE /api/biz-cert/{id}
     */
    public function destroy(int $id): JsonResponse
    {
        $this->service->delete($id);

        return response()->json([
            'ok' => true,
            'message' => '삭제되었습니다.',
        ]);
    }
}
