<?php

namespace App\Api\v1\Controllers;

use App\Api\v1\Requests\QrCodeDecodeRequest;
use App\Facades\QrCode;
use App\Http\Controllers\Controller;
use App\Models\TwoFAccount;

class QrCodeController extends Controller
{
    /**
     * Show a QR code image
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function show(TwoFAccount $twofaccount)
    {
        $this->authorize('view', $twofaccount);

        $uri = $twofaccount->getURI();

        return response()->json(['qrcode' => QrCode::encode($uri)], 200);
    }

    /**
     * Decode an uploaded QR Code image
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function decode(QrCodeDecodeRequest $request)
    {
        $file = $request->file('qrcode');

        return $file instanceof \Illuminate\Http\UploadedFile
            ? response()->json(['data' => QrCode::decode($file)], 200)
            : response()->json(['message' => __('errors.file_upload_failed')], 500);
    }
}
