delete notification and notification_user when validate

This commit is contained in:
2025-12-16 10:11:08 +01:00
parent eab9565c7d
commit 8e93a0aba2
7 changed files with 51 additions and 9 deletions
@@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Log;
class NotificationsController extends Controller
{
public function create(Request $request, int $id): JsonResponse {
public function createNotification(Request $request, int $id): JsonResponse {
$notification = Notification::create([
"content" => $request["content"]
]);
@@ -23,7 +23,6 @@ class NotificationsController extends Controller
public function getNotifications(Request $request, int $id): JsonResponse {
try {
$user = User::findOrFail($id);
@@ -35,4 +34,24 @@ class NotificationsController extends Controller
return response()->json(['message' => "Server error"], 500);
}
}
public function deleteNotification(int $userId, int $notificationId): JsonResponse {
try {
$user = User::findOrFail($userId);
$user->notifications()->detach($notificationId);
$notification = Notification::find($notificationId);
if ($notification && $notification->users()->count() === 0) {
$notification->delete();
}
return response()->json(['message' => 'Notification supprimée avec succès']);
} catch (\Exception $e) {
Log::info($e->getMessage());
return response()->json(['message' => 'Erreur lors de la suppression'], 500);
}
}
}
+8 -1
View File
@@ -120,12 +120,19 @@ class UserController extends Controller
public function validate(Request $request, int $id): JsonResponse {
if($request->user()->role != 1 || $request->user()->role == null){
if($request->user()->role != 1 && $request->user()->role != 2 || $request->user()->role == null){
return response()->json(["message" => "Can't validate this user"], 403);
}
try {
$user = User::find($id);
$content = "Nouvelle demande d'inscription : {$user->name} {$user->lastname}";
$notification = Notification::where('content', $content)->first();
if ($notification) {
$notification->users()->detach();
$notification->delete();
}
$user->validate = 1;
$user->role = 3;
+6 -1
View File
@@ -12,6 +12,11 @@ class Notification extends Model
public function users(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(User::class, 'notification_user', 'notification_id', 'user_id');
return $this->belongsToMany(
User::class,
'notification_user',
'notification_id',
'user_id'
)->withTimestamps();
}
}
+6 -1
View File
@@ -57,6 +57,11 @@ class User extends Authenticatable
public function notifications(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
{
return $this->belongsToMany(Notification::class, 'notification_user', 'user_id', 'notification_id');
return $this->belongsToMany(
Notification::class,
'notification_user',
'user_id',
'notification_id'
)->withTimestamps();
}
}
+1 -1
View File
@@ -5,7 +5,7 @@
<link rel="icon" type="image/svg+xml" href="logoIcone.png" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Comité des fêtes de Beaupont</title>
<script type="module" crossorigin src="/assets/index-DyR9y3T_.js"></script>
<script type="module" crossorigin src="/assets/index-1oYDhgBl.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DBz-GVvs.css">
</head>
<body>
+8 -2
View File
@@ -37,9 +37,15 @@ Route::middleware(['web', 'auth:sanctum'])->get('/users/{id}/tasks', [UserContro
Route::middleware(['web', 'auth:sanctum'])->get('/users/tasks/{idTask}', [UserController::class, "getUserTaskById"]);
Route::middleware(['web', 'auth:sanctum'])->get('/users/{id}/notifications', [NotificationsController::class, "getNotifications"])->whereNumber('id');
Route::middleware(['web', 'auth:sanctum'])->get('/users/{id}/notifications', [NotificationsController::class, "getNotifications"])
->whereNumber('id');
Route::middleware(['web', 'auth:sanctum'])->post("/users/{id}/create/notification", [NotificationsController::class, "create"])->whereNumber('id');
Route::middleware(['web', 'auth:sanctum'])->post("/users/{id}/create/notification", [NotificationsController::class, "createNotification"])
->whereNumber('id');
Route::middleware(['web', 'auth:sanctum'])->delete('/users/{userId}/delete/notification/{notificationId}', [NotificationsController::class, 'deleteNotification'])
->whereNumber('userId')
->whereNumber('notificationId');
Route::middleware(['web', 'auth:sanctum'])->get('/users/search', [SearchController::class, "searchUsers"]);
+1 -1
View File
@@ -1,4 +1,4 @@
headers {
Accept: application/json
X-XSRF-TOKEN: eyJpdiI6IjdETzVjT3JoTWU2VE5nMVBKNnBUUVE9PSIsInZhbHVlIjoiWjhvNTRqTzY2MEhxM01MK1lSOFB0NnBvRU4rL1U2OEg0RTdvbXc5ZVQvK0JJMFhWUDFWWS9iSEFsZzdtS3hYd1ZkY2tJcWNpMDNVMlVnVGFGdTJGQzhqSFdCc0V4RVlBUkdObkVhdVh4RisxMWEvcFh4NXZkQTZyL3kvbmJ6T0EiLCJtYWMiOiIyYzA2NjkxYjRhMWE5ZGE2ZjNhZGFjOGFkZDBjN2Y0NTBiMDhiMzAwOThlNWVhOWQzYzVmNzU1NzczNWZjMWIzIiwidGFnIjoiIn0=
X-XSRF-TOKEN: eyJpdiI6Ii9YZURUS2taQlBjVXB3azhoelpqS3c9PSIsInZhbHVlIjoiYzdpSmVhVWlZRnlvVWR1RWlHbEtwcUp5R1dQNUJXckFTRm9Tb0xYcGszdmZNb0p4NTFDM2tBMEZjTkdqYWlnSmRWZi9LdFgyczJZam1DdUVUcW84TXBOaDRmU1g5c2pseDVKMW50eTJGd3cxd3p5RjV2b2pGOGNwYzlmWDFkREkiLCJtYWMiOiI5NDY1YWM3YmE0ZDgyNWMxZDQwNTRiZWIxNWU3OTA0NjYxNDkxMjRmZmVkOTA1Y2U3YTE2ZGY2YWViYWE2ZmRjIiwidGFnIjoiIn0=
}