/** * Resign * * @param \Illuminate\Http\Request $request * @param int $id * @param string $slug * * @return mixed */ public function resign(\Illuminate\Http\Request $request, $id, $slug) { $events = new Events(); $members = new Members(); $event = $events->getById($id); $member = $members->where('event_id', $event->getId())->where('user_id', Auth::getUserId())->first(); if ($event === null) { die; // @TODO: } if ($member->status == 'member') { $ids = []; foreach ($event->getMembers() as $user) { if ($user->getUserId() !== Auth::getUserId()) { $ids[] = $user->getUserId(); } } foreach ($ids as $user_id) { /** * @var $user \Flocc\Profile */ $user = (new User())->getById(Auth::getUserId())->getProfile(); (new NewNotification())->setUserId($user_id)->setUniqueKey('events.resign.' . Auth::getUserId())->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->setTypeId('events.resign')->addVariable('user', $user->getFirstName() . ' ' . $user->getLastName())->addVariable('event', $event->getTitle())->save(); } /** * Notification to owner */ (new NewNotification())->setUserId($event->getUserId())->setUniqueKey('events.reopen.' . $event->getId())->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->setTypeId('events.reopen')->addVariable('user', $user->getFirstName() . ' ' . $user->getLastName())->addVariable('event', $event->getTitle())->save(); /** * Reopen event */ if ($event->isStatusClose()) { $event->setStatusOpen()->save(); } } $member->delete(); $request->session()->flash('message', 'Wypisałeś się z wydarzenia'); return redirect()->route('events.event', ['id' => $event->getId(), 'slug' => $event->getSlug()]); }
/** * Get member and follower events * * @param string|array $status * * @return \Illuminate\Pagination\LengthAwarePaginator * * @throws \Exception */ public function getByMemberId($status) { $user_id = $this->getParam(1); if ($user_id === null) { throw new \Exception('Empty user ID'); } /** * Display my events */ if ($user_id == 'my') { $user_id = (int) \Auth::user()->id; } $get_events_ids = Members::where('user_id', $user_id); if (is_array($status)) { $get_events_ids = $get_events_ids->whereIn('status', $status); } else { $get_events_ids = $get_events_ids->where('status', $status); } $get_events_ids = $get_events_ids->get(); $ids = []; foreach ($get_events_ids as $event) { $ids[] = $event->getEventId(); } return Events::where('status', '<>', 'draft')->whereIn('id', $ids)->orderBy('created_at', 'desc')->paginate($this->on_page); }