<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use App\Mail\FormResponseCancelled;
use App\Models\FormResponse;
use Illuminate\Support\Facades\Mail;

class FormRegistrationCancellationController extends Controller
{
    /**
     * Show the cancellation confirmation page.
     * The 'signed' middleware guarantees the request was not tampered with.
     */
    public function showConfirmation(FormResponse $formResponse)
    {
        return view('forms.registration-cancel-confirm', [
            'formResponse' => $formResponse,
            'actionUrl'    => request()->fullUrl(),
        ]);
    }

    /**
     * Cancel a form registration after the user confirmed via the confirmation page.
     * The 'signed' middleware guarantees the request was not tampered with.
     */
    public function cancel(FormResponse $formResponse)
    {
        $alreadyCancelled = $formResponse->isCancelled();

        if (!$alreadyCancelled) {
            $formResponse->status = FormResponse::STATUS_CANCELLED;
            $formResponse->cancelled_at = now();
            $formResponse->save();

            Mail::to([[
                'email' => config('mail.contact.block_form_address'),
                'name'  => config('mail.contact.name'),
            ]])->send(new FormResponseCancelled($formResponse));
        }

        return view('forms.registration-cancelled', [
            'formResponse'     => $formResponse,
            'alreadyCancelled' => $alreadyCancelled,
        ]);
    }
}
