protected function createMessage($from, $msg) { echo sprintf('User %d sending message "%s" to user %d' . "\n", $from->userId, $msg->message, $msg->userTo); $dialog = new Dialog(); $dialog->from = $from->userId; $dialog->to = $msg->userTo; if ($dialog->validate()) { if (($existedDialog = Dialog::byUsers($dialog->from, $dialog->to)->first()) === null) { $dialog->save(); $existedDialog = $dialog; } $message = new Message(); $message->from = $from->userId; $message->dialog_id = $existedDialog->id; $message->text = $msg->message; if ($message->validate()) { $message->save(); foreach ($this->clients as $client) { if ($client->userId == $from->userId || $client->userId == $msg->userTo || $client->isAdmin === true) { $view = view('chat._message', ['messages' => [$message], 'isAdmin' => $client->isAdmin]); $sendData = ['action' => Message::CREATE_ACTION_NAME, 'html' => $view->render()]; $client->send(json_encode($sendData)); } } } } }