42 lines
1.1 KiB
PHP
42 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Activity;
|
|
use App\Models\ActivityNotificationRead;
|
|
use Illuminate\Http\Request;
|
|
|
|
class ActivityNotificationController extends Controller
|
|
{
|
|
/**
|
|
* Handle the incoming request.
|
|
*/
|
|
public function __invoke(Request $request)
|
|
{
|
|
$request->validate([
|
|
'activity_id' => ['required', 'integer', 'exists:activities,id'],
|
|
]);
|
|
|
|
$userId = optional($request->user())->id;
|
|
if (! $userId) {
|
|
abort(403);
|
|
}
|
|
|
|
$activity = Activity::query()->select(['id', 'due_date'])->findOrFail($request->integer('activity_id'));
|
|
$due = optional($activity->due_date) ? date('Y-m-d', strtotime($activity->due_date)) : now()->toDateString();
|
|
|
|
ActivityNotificationRead::query()->updateOrCreate(
|
|
[
|
|
'user_id' => $userId,
|
|
'activity_id' => $activity->id,
|
|
'due_date' => $due,
|
|
],
|
|
[
|
|
'read_at' => now(),
|
|
]
|
|
);
|
|
|
|
return response()->json(['status' => 'ok']);
|
|
}
|
|
}
|