api/app/Http/Controllers/DeviceTokenController.php

51 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\DeviceTokenRequest;
use App\Models\DeviceToken;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class DeviceTokenController extends Controller
{
public function store(DeviceTokenRequest $request): JsonResponse
{
$data = $request->validated();
$deviceToken = DeviceToken::updateOrCreate(
['expo_push_token' => $data['expo_push_token']],
[
'platform' => $data['platform'] ?? null,
'user_id' => $request->user()->getKey(),
],
);
return response()->json([
'message' => $deviceToken->wasRecentlyCreated
? 'Token appareil enregistré.'
: 'Token appareil mis à jour.',
'deviceToken' => [
'id' => $deviceToken->id,
'expoPushToken' => $deviceToken->expo_push_token,
'platform' => $deviceToken->platform,
],
], $deviceToken->wasRecentlyCreated ? 201 : 200);
}
public function destroy(Request $request): Response
{
$data = $request->validate([
'expo_push_token' => ['required', 'string', 'max:255'],
]);
DeviceToken::query()
->where('user_id', $request->user()->getKey())
->where('expo_push_token', $data['expo_push_token'])
->delete();
return response()->noContent();
}
}