Пример #1
0
 /**
  * Join to event
  *
  * @param \Illuminate\Http\Request $request
  * @param int $id
  * @param string $slug
  * @param string $type
  *
  * @return mixed
  */
 public function join(\Illuminate\Http\Request $request, $id, $slug, $type)
 {
     $events = new Events();
     $members = new Members();
     $profile = new User();
     $event = $events->getById($id);
     $user_id = (int) \Auth::user()->id;
     $user = $profile->getById($user_id);
     $user_name = $user->getProfile()->getFirstName() . ' ' . $user->getProfile()->getLastName();
     if ($event === null) {
         die;
         // @TODO:
     }
     if ($event->isMine() === false) {
         $user_in_event = $members->getUserInEvent($event->getId(), $user_id);
         $can_add = true;
         /**
          * If user in
          */
         if ($user_in_event !== null) {
             $can_add = false;
             /**
              * Delete if follower
              */
             if ($type == 'member' and $user_in_event->isStatusFollower()) {
                 $can_add = true;
                 $members->deleteUserFromEvent($event->getId(), $user_id);
             }
         }
         /**
          * Add
          */
         if ($can_add === true) {
             /**
              * Prepare notification
              */
             $notification = (new NewNotification())->setUserId($event->getUserId())->setUniqueKey('events.members.join.' . $type . '.' . $event->getId())->setTypeId('events.members.join.' . $type)->addVariable('user', $user_name)->addVariable('event', $event->getTitle());
             switch ($type) {
                 case 'follower':
                     $members->addNewFollower($event->getId(), $user_id);
                     // New line on event time line
                     (new NewLine())->setEventId($event->getId())->setTypeAsMessage()->setMessage($user_name . ' zaczął obserwować to wydarzenie')->save();
                     $notification->setCallback('/events/' . $event->getId() . '/' . $event->getSlug());
                     $request->session()->flash('message', 'Obserwujesz to wydarzenie');
                     break;
                 case 'member':
                     $members->addNewMember($event->getId(), $user_id);
                     $notification->setCallback('/events/edit/' . $event->getId() . '/members');
                     $request->session()->flash('message', 'Zapisałeś się do wydarzenia. Zostaniesz poinformwany, gdy organizator Cie zaakceptuje');
                     break;
             }
             /**
              * Send notification to owner
              */
             $notification->save();
         }
     }
     return redirect()->route('events.event', ['id' => $event->getId(), 'slug' => $event->getSlug()]);
 }