<?php

namespace App\Http\Controllers;

use App\Http\Requests\BackInStockSubscribe;
use App\Http\Requests\EventRegistration;
use App\Services\KlaviyoService;
use ReCaptcha\ReCaptcha;

class FrontendSupportController extends Controller
{
    /**
     * Back in stock subsription - klaviyo proxy
     *
     * @param BackInStockSubscribe $request
     * @return void
     */
    public function backInStockSubscribe(BackInStockSubscribe $request, KlaviyoService $service) {
        $data = $request->validated();

        $success = $service->subscribeBackInStock($data);

        return response()->json([
            'email' => $data['email'],
            'success' => $success
        ], 200);
    }

    /**
     * Event registration for klaviyo with qrcode generation
     *
     * @param BackInStockSubscribe $request
     * @param KlaviyoService $service
     * @return void
     */
    public function eventRegistration(EventRegistration $request, KlaviyoService $service) {
        $data = $request->validated();

        $secret = config('services.recaptcha.secretKey');
        $remoteIp = $request->getClientIp();
        $recaptcha = new ReCaptcha($secret);
        $resp = $recaptcha->verify($data['gtoken'], $remoteIp);
        if (!$resp->isSuccess()) {
            return response()->json([
                'success' => false,
                'error' => 'recaptcha',
            ]);
        }

        $lang = !empty($data['lang']) ? $data['lang'] : '';
        $success = $service->eventRegisterUser($data['email'], $lang, !empty($data['acceptsMarketing']));

        return response()->json([
            'success' => $success
        ], 200);
    }
}
