/** * New comment * * @param \Illuminate\Http\Request $request */ public function save(\Illuminate\Http\Request $request) { $comment = \Input::get('comment', ''); $event_id = (int) \Input::get('event_id'); $parent_id = \Input::get('parent_id', null); $label = \Input::get('label', 'public'); $user_id = (int) \Auth::user()->id; $events = new Events(); $line = new NewLine(); $event = $events->getById($event_id); /** * @var $user \Flocc\Profile */ $user = (new User())->getById($user_id)->getProfile(); if ($event === null) { die; // @TODO: } if (!empty($comment)) { if ($label === 'private') { $comments = new Comments(); $comments->setEventId($event_id)->setParentId($parent_id)->setLabelAsPrivate()->setUserId($user_id)->setComment($comment)->setLastCommentTimeAsCurrent()->save(); /** * Update last comment time for parent */ if ($parent_id !== null) { $comment = $comments->getById($parent_id); $comment->setLastCommentTimeAsCurrent()->save(); } /** * Send notifications * * @var $member \Flocc\Events\Members */ foreach ($event->getMembers() as $member) { if ($member->getUserId() !== Auth::getUserId()) { (new NewNotification())->setUserId($member->getUserId())->setUniqueKey('events.comment.' . $event->getId() . '.' . md5($comment))->setTypeId('events.comment')->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->addVariable('user', $user->getFirstName() . ' ' . $user->getLastName())->addVariable('event', $event->getTitle())->save(); } } } else { if (empty($comment) === false) { $line->setTypeAsComment()->setEventId($event_id)->setUserId($user_id)->setComment($comment)->save(); $comment_id = $line->getLastInsertCommentId(); /** * Send notifications * * @var $member \Flocc\Events\Members */ foreach ($event->getMembersAndFollowers() as $member) { if ($member->getUserId() !== Auth::getUserId()) { (new NewNotification())->setUserId($member->getUserId())->setUniqueKey('events.comment.' . $event->getId() . '.' . md5($comment))->setTypeId('events.comment')->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->addVariable('user', $user->getFirstName() . ' ' . $user->getLastName())->addVariable('event', $event->getTitle())->save(); } } } } $request->session()->flash('comments_label', $label); } return redirect()->route('events.event', ['id' => $event->getId(), 'slug' => $event->getSlug()]); }
/** * 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()]); }
/** * Create new event * * @param null|int $id * * @return mixed */ public function newEvent($id = null) { $events = new Events(); $user_id = \Flocc\Auth::getUserId(); $draft = $events->getUserDraft($user_id); if ($draft !== null) { $scoring = (new Scoring())->getByEventId($draft->getId()); $draft->delete(); $scoring->delete(); } if ($id !== null) { $event = $events->getById((int) $id); $event_data = json_decode(json_encode($event), true); unset($event_data['id'], $event_data['views'], $event_data['status'], $event_data['is_inspiration'], $event_data['user_id']); $event_data['user_id'] = $user_id; $draft = $events->createFilledDraft($event_data); /** * Add activities */ foreach ($event->getActivities() as $activity) { (new \Flocc\Events\Activities())->setEventId($draft->getId())->setActivityId($activity->getId())->save(); } /** * Route */ if ($event->getPlaceId() !== null) { $routes = new Routes(); $event_route = $routes->getByEventId($event->getId()); foreach ($event_route as $route) { $routes->addNew($draft->getId(), $route->getPlaceId()); } } } else { $draft = $events->createDraft($user_id); } return redirect()->route('events.edit', ['id' => $draft->getId()]); }