feat: remote user, ack/done actions and /me API
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BCrwHHnGCB5XH968Nxokqw
This commit is contained in:
54
core/app/Http/Controllers/Me/EventsController.php
Normal file
54
core/app/Http/Controllers/Me/EventsController.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Me;
|
||||
|
||||
use App\Delivery\EventActions;
|
||||
use App\Enums\EventState;
|
||||
use App\Http\Controllers\Api\EventsController as ApiPresenter;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Event;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class EventsController extends Controller
|
||||
{
|
||||
public function __construct(private readonly EventActions $actions) {}
|
||||
|
||||
public function index(Request $request): JsonResponse
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $request->attributes->get('user');
|
||||
$states = $request->query('state')
|
||||
? [$request->query('state')]
|
||||
: EventState::nonTerminalValues();
|
||||
|
||||
$events = $user->events()->whereIn('state', $states)->orderBy('due_date')->orderBy('due_instant')->get();
|
||||
|
||||
return response()->json(['events' => $events->map(fn (Event $e) => ApiPresenter::present($e) + ['source' => $e->source->name])->values()]);
|
||||
}
|
||||
|
||||
public function ack(Request $request, int $event): JsonResponse
|
||||
{
|
||||
$model = $this->own($request, $event);
|
||||
$this->actions->ack($model);
|
||||
|
||||
return response()->json(ApiPresenter::present($model->fresh()));
|
||||
}
|
||||
|
||||
public function done(Request $request, int $event): JsonResponse
|
||||
{
|
||||
$model = $this->own($request, $event);
|
||||
$this->actions->done($model);
|
||||
|
||||
return response()->json(ApiPresenter::present($model->fresh()));
|
||||
}
|
||||
|
||||
private function own(Request $request, int $id): Event
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $request->attributes->get('user');
|
||||
|
||||
return $user->events()->whereKey($id)->firstOrFail();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user