/**
  * 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()]);
 }