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:
nikita.hohlov
2026-09-04 07:05:50 -03:00
parent 5ea5c045a7
commit 1b03fe0796
6 changed files with 320 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Delivery;
use App\Enums\EventState;
use App\Models\Event;
use App\Scheduling\DueResolver;
use App\Scheduling\QuietRule;
final class EventActions
{
public function __construct(
private readonly DueResolver $due,
private readonly QuietRule $quiet,
) {}
/** «Помню»: молчать до следующей контрольной точки текущего состояния. */
public function ack(Event $event): void
{
if ($event->isTerminal()) {
return;
}
$user = $event->user;
$now = $user->now();
$event->quiet_until = $this->quiet->afterAck($event, $user, $event->state, $this->due->resolve($event, $user), $now);
$event->save();
}
/** «Сделано»: закрыть событие целиком. */
public function done(Event $event): void
{
if ($event->isTerminal()) {
return;
}
$event->state = EventState::Done;
$event->done_at = now();
$event->save();
}
}