/**
  * @param int $member_id
  * @param int $summit_id
  * @return ISummitAttendee
  */
 public function getByMemberAndSummit($member_id, $summit_id)
 {
     $cache_key = sprintf('%s_%s', $member_id, $summit_id);
     $attendee = SummitAttendee::get()->filter(array('MemberID' => $member_id, 'SummitID' => $summit_id))->first();
     if (is_null($attendee) && isset($this->cache[$cache_key])) {
         $attendee = $this->cache[$cache_key];
     }
     return $attendee;
 }
 /**
  * @param string $search_term
  * @param int $page
  * @param int $page_size
  * @param int $summit_id
  * @return array
  */
 public function findAttendeesBySummit($search_term, $page, $page_size, $summit_id)
 {
     $where_clause = "SummitAttendee.SummitID = {$summit_id} ";
     if (!empty($search_term)) {
         $where_clause .= "AND (Member.FirstName LIKE '{$search_term}%'\n                                OR Member.Surname LIKE '{$search_term}%'\n                                OR CONCAT(Member.FirstName,' ',Member.Surname) LIKE '{$search_term}%'\n                                OR SummitAttendeeTicket.ExternalOrderId = '{$search_term}'\n                                OR Member.Email LIKE '{$search_term}%' ) ";
     }
     $list = SummitAttendee::get()->leftJoin("Member", "Member.ID = SummitAttendee.MemberID")->leftJoin("SummitAttendeeTicket", "SummitAttendeeTicket.OwnerID = SummitAttendee.ID")->where($where_clause)->distinct(true);
     $count = count($list);
     $offset = ($page - 1) * $page_size;
     $data = $list->limit($page_size, $offset);
     return array($data, $count);
 }
Example #3
0
    $event->EntityID = $item->ID;
    $event->Type = 'INSERT';
    $event->OwnerID = $attendee->MemberID;
    $event->SummitID = $summit_id;
    $event->Metadata = $metadata;
    $event->write();
});
PublisherSubscriberManager::getInstance()->subscribe('manymanylist_removed_item', function ($list, $item) {
    if (!$item instanceof ISummitEvent) {
        return;
    }
    $summit_id = $item->getField("SummitID");
    if (is_null($summit_id) || $summit_id == 0) {
        $summit_id = Summit::ActiveSummitID();
    }
    $metadata = '';
    $join_table = $list->getJoinTable();
    if ($join_table !== 'SummitAttendee_Schedule') {
        return;
    }
    $attendee_id = $list->getForeignID();
    $attendee = SummitAttendee::get()->byID($attendee_id);
    $event = new SummitEntityEvent();
    $event->EntityClassName = 'MySchedule';
    $event->EntityID = $item->ID;
    $event->Type = 'DELETE';
    $event->OwnerID = $attendee->MemberID;
    $event->SummitID = $summit_id;
    $event->Metadata = $metadata;
    $event->write();
});
 protected function validate()
 {
     $valid = parent::validate();
     if (!$valid->valid()) {
         return $valid;
     }
     if (intval($this->MemberID) == 0) {
         return $valid->error('Member is required!');
     }
     if (intval($this->SummitID) == 0) {
         return $valid->error('Summit is required!');
     }
     $old_ones = intval(SummitAttendee::get()->filter(array('MemberID' => $this->MemberID, 'SummitID' => $this->SummitID))->where(" ID <> {$this->ID} ")->count());
     if ($old_ones > 0) {
         return $valid->error(sprintf('There is already an attendee for member %s on summit %s!', $this->MemberID, $this->SummitID));
     }
     return $valid;
 }
 public function editAttendee(SS_HTTPRequest $request)
 {
     $summit_id = intval($request->param('SummitID'));
     $summit = Summit::get()->byID($summit_id);
     $attendee_id = intval($request->param('AttendeeID'));
     $attendee = SummitAttendee::get()->byID($attendee_id);
     Requirements::css('summit/css/simple-sidebar.css');
     Requirements::css('themes/openstack/bower_assets/chosen/chosen.min.css');
     Requirements::css('themes/openstack/bower_assets/sweetalert/dist/sweetalert.css');
     Requirements::javascript('themes/openstack/bower_assets/sweetalert/dist/sweetalert.min.js');
     Requirements::javascript('themes/openstack/bower_assets/jquery-validate/dist/jquery.validate.min.js');
     Requirements::javascript('themes/openstack/bower_assets/jquery-validate/dist/additional-methods.min.js');
     Requirements::javascript('themes/openstack/bower_assets/chosen/chosen.jquery.min.js');
     Requirements::javascript('themes/openstack/bower_assets/bootstrap3-typeahead/bootstrap3-typeahead.min.js');
     Requirements::javascript('summit/javascript/simple-sidebar.js');
     Requirements::javascript('//tinymce.cachefly.net/4.3/tinymce.min.js');
     Requirements::javascript('summit/javascript/summitapp-editattendee.js');
     return $this->getViewer('EditAttendee')->process($this->customise(array('Summit' => $summit, 'Attendee' => $attendee)));
 }
 /**
  * @param ISummit $summit
  * @param $ticket_id
  * @param $member_id
  * @return mixed
  */
 public function reassignTicket(ISummit $summit, $ticket_id, $member_id)
 {
     $attendee_repository = $this->attendee_repository;
     return $this->tx_service->transaction(function () use($summit, $ticket_id, $member_id, $attendee_repository) {
         if (!$ticket_id) {
             throw new EntityValidationException('missing required param: id');
         }
         $attendee = $attendee_repository->getByMemberAndSummit($member_id, $summit->getIdentifier());
         $ticket = SummitAttendeeTicket::get_by_id('SummitAttendeeTicket', $ticket_id);
         $previous_owner = $ticket->Owner();
         if ($attendee) {
             if ($attendee->Tickets()->count() > 0) {
                 throw new EntityValidationException('This member is already assigned to another tix');
             } else {
                 $previous_owner->Tickets()->remove($ticket);
                 $attendee->Tickets()->add($ticket);
             }
         } else {
             $previous_owner->Tickets()->remove($ticket);
             $attendee = new SummitAttendee();
             $attendee->MemberID = $member_id;
             $attendee->SummitID = $summit->getIdentifier();
             $attendee->Tickets()->add($ticket);
         }
         $attendee->write();
         // if the attendee has no more tickets we delete it
         if ($previous_owner->Tickets()->count() == 0) {
             $previous_owner->delete();
         }
         return $attendee;
     });
 }
 public function getSchedule(SS_HTTPRequest $request)
 {
     try {
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = Summit::get_by_id('Summit', $summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $attendee_id = intval($request->param('ATTENDEE_ID'));
         $attendee = SummitAttendee::get_by_id('SummitAttendee', $attendee_id);
         if (is_null($attendee)) {
             throw new NotFoundEntityException('SummitAttendee', sprintf(' id %s', $attendee_id));
         }
         $events_array = array();
         $events = $attendee->Schedule()->sort('StartDate');
         foreach ($events as $event) {
             $event_start_unix = strtotime($event->getStartDateUTC());
             $event_end_unix = strtotime($event->getEndDateUTC());
             $current_event = time() > $event_start_unix && time() < $event_end_unix;
             $events_array[] = array('title' => $event->Title, 'location' => $event->getLocationNameNice(), 'time' => $event->getDateNice(), 'current_event' => $current_event);
         }
         return $this->ok($events_array);
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2->getMessage(), SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $this->serverError();
     }
 }
 /**
  * @param ISummit $summit
  * @param int $eb_attendee_id
  * @param int $member_id
  * @return ISummitAttendee
  */
 public function matchEventbriteAttendee(ISummit $summit, $eb_attendee_id, $member_id)
 {
     $attendee_repository = $this->attendee_repository;
     $eventbrite_attendee_repository = new SapphireEventbriteAttendeeRepository();
     $member_repository = $this->member_repository;
     return $this->tx_service->transaction(function () use($summit, $eb_attendee_id, $member_id, $attendee_repository, $eventbrite_attendee_repository, $member_repository) {
         $eb_attendee = $eventbrite_attendee_repository->getByAttendeeId($eb_attendee_id);
         if (is_null($eb_attendee)) {
             throw new NotFoundEntityException('Attendee', sprintf(' id %s', $eb_attendee_id));
         }
         $member = $member_repository->getById($member_id);
         if (is_null($member)) {
             throw new NotFoundEntityException('Member', sprintf(' id %s', $member_id));
         }
         $attendee = $attendee_repository->getByMemberAndSummit($member_id, $summit->getIdentifier());
         if (!$attendee) {
             $attendee = new SummitAttendee();
             $attendee->MemberID = $member_id;
             $attendee->SummitID = $summit->getIdentifier();
             $attendee->write();
         }
         list($eb_attendees, $count) = $eventbrite_attendee_repository->getByEmail($eb_attendee->Email);
         foreach ($eb_attendees as $eb_ticket) {
             $attendee_ticket = SummitAttendeeTicket::get()->where("ExternalAttendeeId = " . $eb_ticket->ExternalAttendeeId)->first();
             if (!$attendee_ticket) {
                 $attendee_ticket = new SummitAttendeeTicket();
                 $ticket_type = SummitTicketType::get()->where("ExternalId = " . $eb_ticket->ExternalTicketClassId)->first();
                 $external_event = EventbriteEvent::get()->where("ID = " . $eb_ticket->EventbriteOrderId)->first();
                 $attendee_ticket->ExternalOrderId = $external_event->ExternalOrderId;
                 $attendee_ticket->ExternalAttendeeId = $eb_ticket->ExternalAttendeeId;
                 $attendee_ticket->TicketTypeID = $ticket_type ? $ticket_type->ID : 0;
             }
             $attendee_ticket->OwnerID = $attendee->ID;
             $attendee_ticket->write();
         }
         return $attendee;
     });
 }
 /**
  * @param int $member_id
  * @param int $summit_id
  * @return ISummitAttendee
  */
 public function getByMemberAndSummit($member_id, $summit_id)
 {
     return SummitAttendee::get()->filter(array('MemberID' => $member_id, 'SummitID' => $summit_id))->first();
 }