/** * Adds users to this thread * * @param array $participants list of all participants * @return void */ public function addParticipants(array $participants) { if (count($participants)) { foreach ($participants as $user_id) { Participant::firstOrCreate(['user_id' => $user_id, 'thread_id' => $this->id]); } } }
/** * Adds a new message to a current thread * * @param $id * @return mixed */ public function update($id) { try { $thread = Thread::findOrFail($id); } catch (ModelNotFoundException $e) { Session::flash('error_message', 'The thread with ID: ' . $id . ' was not found.'); return Redirect::to('messages'); } $thread->activateAllParticipants(); // Message Message::create(['thread_id' => $thread->id, 'user_id' => Auth::id(), 'body' => Input::get('message')]); // Add replier as a participant $participant = Participant::firstOrCreate(['thread_id' => $thread->id, 'user_id' => Auth::user()->id]); $participant->last_read = new Carbon(); $participant->save(); // Recipients if (Input::has('recipients')) { $thread->addParticipants(Input::get('recipients')); } return Redirect::to('messages/' . $id); }