public function friendsSaveMessage(Request $request, $id) { $this->validate($request, ['name' => 'required|min:2', 'body' => 'required']); $user = User::where('id', $request->user()->id)->first(); $friends = User::where('id', $id)->first(); if ($user && $friends) { if (!$user->isFriendsWith($friends) || $user->id == $friends->id) { return redirect()->route('home')->withError('Ошибка, свяжитесь с администратором.'); } $thread = new Thread(); $thread->user_id = $user->id; $thread->name = $request->get('name'); $thread->slug = md5($thread->user_id . '_' . $thread->name . new Carbon()); $thread->save(); $thread->addParticipants($friends->id, $thread->id); $message = new Message(); $message->thread_id = $thread->id; $message->user_id = $user->id; $message->body = $request->get('body'); $message->save(); $participant = new Participant(); $participant->thread_id = $thread->id; $participant->user_id = $user->id; $participant->last_read = new Carbon(); $participant->save(); return redirect()->route('messages')->withMessage('Сообщение отправлено.'); } else { return redirect()->route('messages')->withError('Ошибка, свяжитесь с администратором.'); } }