dealhub/app/Actions/SendMessageAction.php
2026-02-16 12:30:57 +05:30

28 lines
653 B
PHP

<?php
namespace App\Actions;
use App\Events\MessageSent;
use App\Models\User;
final readonly class SendMessageAction
{
public function __construct(private CreateOrGetInboxAction $inboxAction) {}
/**
* @throws \Throwable
*/
public function execute(User $sender, User $recipient, array $data): void
{
// find the inbox between the two users
$inbox = $this->inboxAction->execute($recipient, $sender);
$message = $inbox->messages()->create([
'message' => $data['message'],
'user_id' => $sender->id,
]);
broadcast(new MessageSent($message))->toOthers();
}
}