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