45 lines
1.5 KiB
PHP
45 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\SubmitIdentityVerification;
|
|
use App\Enums\IdentityVerificationStatus;
|
|
use App\Http\Requests\StoreIdentityVerificationRequest;
|
|
use App\Http\Resources\IdentityVerificationResource;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class CertificationController extends Controller
|
|
{
|
|
public function show(Request $request): JsonResponse
|
|
{
|
|
$user = $request->user();
|
|
$verificationRequest = $user->identityVerificationRequest()->first();
|
|
|
|
return response()->json([
|
|
'data' => [
|
|
'entitlementPurchased' => $user->hasPurchasedCertification(),
|
|
'accountVerified' => $user->account_verified_at !== null,
|
|
'canSubmitIdentity' => $user->hasPurchasedCertification()
|
|
&& $user->account_verified_at === null
|
|
&& $verificationRequest?->status !== IdentityVerificationStatus::PENDING,
|
|
'verification' => $verificationRequest
|
|
? (new IdentityVerificationResource($verificationRequest))->resolve($request)
|
|
: null,
|
|
],
|
|
]);
|
|
}
|
|
|
|
public function store(
|
|
StoreIdentityVerificationRequest $request,
|
|
SubmitIdentityVerification $submitIdentityVerification,
|
|
): JsonResponse {
|
|
$submitIdentityVerification->execute(
|
|
$request->user(),
|
|
$request->file('document'),
|
|
);
|
|
|
|
return $this->show($request);
|
|
}
|
|
}
|