/** * Toggle subscription states for a user. * * @param Request $request * @param $id * @param $user_id * @return \Illuminate\Http\RedirectResponse */ public function toggleSubscription(Request $request, $id, $user_id) { $user = User::findOrfail($user_id); if ($user->id != Auth::id() && !Auth::user()->can('board')) { abort(403); } $list = EmailList::findOrFail($id); if ($list->isSubscribed($user)) { if ($list->unsubscribe($user)) { $request->session()->flash('flash_message', 'You have been unsubscribed to the list ' . $list->name . '.'); return Redirect::route('user::dashboard', ['id' => $user->id]); } } else { if ($list->is_member_only && !$user->member) { $request->session()->flash('flash_message', 'This list is only for members.'); return Redirect::route('user::dashboard', ['id' => $user->id]); } if ($list->subscribe($user)) { $request->session()->flash('flash_message', 'You have been subscribed to the list ' . $list->name . '.'); return Redirect::route('user::dashboard', ['id' => $user->id]); } } $request->session()->flash('flash_message', 'Something went wrong toggling your subscription for ' . $list->name . '.'); return Redirect::route('user::dashboard', ['id' => $user->id]); }