/**
  * Update user status in event
  *
  * @param int $id
  * @param int $user_id
  * @param int $status
  *
  * @return mixed
  *
  * @throws \Exception
  */
 public function status($id, $user_id, $status)
 {
     $this->init($id);
     if ($status == 'member') {
         /**
          * Sprawdzenie limitu
          */
         if ($this->event->getMembers()->count() == $this->event->getUsersLimit()) {
             // @TODO:
             throw new \Exception('Przekroczony limit');
         }
         /**
          * Powiadomienia do pozostałych uczestników
          *
          * @var $user \Flocc\Profile
          */
         $user = (new User())->getById($user_id)->getProfile();
         foreach ($this->event->getMembersAndFollowers() as $member) {
             (new NewNotification())->setUserId($member->getUserId())->setUniqueKey('events.members.new.' . $id . '.' . $user_id)->setTypeId('events.members.new')->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->addVariable('user', $user->getFirstName() . ' ' . $user->getLastName())->addVariable('event', $this->event->getTitle())->save();
         }
         /**
          * Powiadomienie do usera, że został zaakceptowany
          */
         (new NewNotification())->setUserId($user_id)->setUniqueKey('events.members.accept.' . $id)->setTypeId('events.members.accept')->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->addVariable('event', $this->event->getTitle())->save();
         /**
          * Powiadomienie na tablicy wydarzenia
          */
         (new TimeLine\NewLine())->setEventId($id)->setTypeAsMessage()->setMessage(sprintf('[b]%s[/b] dołączył do wydarzenia dnia [b]%s[/b]', $user->getFirstName() . ' ' . $user->getLastName(), date('Y-m-d')))->setUserId(Auth::getUserId())->save();
         /**
          * Zmiana statusu
          */
         (new Members())->updateStatus($user_id, $id, $status);
         /**
          * Po dodaniu tego jest przekroczny limit
          */
         if ($this->event->getUsersLimit() == $this->event->getMembers()->count()) {
             (new Events())->closeEvent($id);
             /**
              * Wysłanie powiadomienia do użytkowników
              */
             foreach ($this->event->getMembersAndFollowers() as $member) {
                 (new NewNotification())->setUserId($member->getUserId())->setUniqueKey('events.limit.' . $this->event->getId())->setCallback('/events/' . $event->getId() . '/' . $event->getSlug())->setTypeId('events.limit')->addVariable('event', $this->event->getTitle())->save();
             }
         }
     }
     if ($status == 'rejected') {
         /**
          * Zmiana statusu
          */
         (new Members())->updateStatus($user_id, $id, 'follower');
     }
     return redirect()->route('events.edit.members', ['id' => $id]);
 }