function __construct($controller, $name) { $fields = new FieldList(array($t1 = new TextField('ExternalOrderId', 'Eventbrite Order #'), $checkbox = new CheckboxField('SharedContactInfo', 'Allow to share contact info?'))); $t1->setAttribute('placeholder', 'Enter your Eventbrite order #'); $t1->addExtraClass('event-brite-order-number'); $attendees = Session::get('attendees'); if (count($attendees) > 0) { $t1->setValue(Session::get('ExternalOrderId')); $t1->setReadonly(true); $checkbox->setValue(intval(Session::get('SharedContactInfo')) === 1); $fields->add(new LiteralField('ctrl1', 'Current Order has following registered attendees, please select one:')); $options = array(); foreach ($attendees as $attendee) { $ticket_external_id = intval($attendee['ticket_class_id']); $ticket_type = SummitTicketType::get()->filter('ExternalId', $ticket_external_id)->first(); if (is_null($ticket_type)) { continue; } $options[$attendee['id']] = $attendee['profile']['name'] . ' (' . $ticket_type->Name . ')'; } $attendees_ctrl = new OptionSetField('SelectedAttendee', '', $options); $fields->add($attendees_ctrl); $validator = new RequiredFields(array('ExternalOrderId')); // Create action $actions = new FieldList($btn_clear = new FormAction('clearSummitAttendeeInfo', 'Clear'), $btn = new FormAction('saveSummitAttendeeInfo', 'Done')); $btn->addExtraClass('btn btn-default active'); $btn_clear->addExtraClass('btn btn-danger active'); } else { $validator = new RequiredFields(array('ExternalOrderId')); // Create action $actions = new FieldList($btn = new FormAction('saveSummitAttendeeInfo', 'Get Order')); $btn->addExtraClass('btn btn-default active'); } parent::__construct($controller, $name, $fields, $actions, $validator); }
/** * Implement this method in the task subclass to * execute via the TaskRunner */ public function run($request) { set_time_limit(0); $summit_id = intval($request->getVar('summit_id')); if (empty($summit_id)) { throw new InvalidArgumentException('missing summit_id param!'); } $summit_external_id = intval($request->getVar('summit_external_id')); if (empty($summit_external_id)) { throw new InvalidArgumentException('missing summit_external_id param!'); } // get ticket types ... $summit = Summit::get()->byID($summit_id); if (is_null($summit)) { throw new InvalidArgumentException("non existent summit!"); } $summit->ExternalEventId = $summit_external_id; $summit->write(); Summit::seedBasicEventTypes($summit_id); Summit::seedSummitTypes($summit_id); $client = new GuzzleHttp\Client(); $query = array('token' => EVENTBRITE_PERSONAL_OAUTH2_TOKEN); $response = $client->get(sprintf("https://www.eventbriteapi.com/v3/events/%s/ticket_classes/", $summit_external_id), array('query' => $query)); if ($response->getStatusCode() !== 200) { throw new Exception('invalid status code!'); } $content_type = $response->getHeader('content-type'); if (empty($content_type)) { throw new Exception('invalid content type!'); } if ($content_type !== 'application/json') { throw new Exception('invalid content type!'); } $json = $response->getBody()->getContents(); $ticket_types = json_decode($json, true); $ticket_types = $ticket_types['ticket_classes']; foreach ($ticket_types as $t) { $new_ticket = new SummitTicketType(); $new_ticket->ExternalId = $t["id"]; if (SummitTicketType::get()->filter(array('SummitID' => $summit_id, 'ExternalId' => $new_ticket->ExternalId))->count() > 0) { continue; } $new_ticket->Name = $t["name"]; $new_ticket->Description = $t["description"]; $new_ticket->SummitID = $summit_id; $new_ticket->write(); } }
protected function validate() { $valid = parent::validate(); if (!$valid->valid()) { return $valid; } $summit_id = isset($_REQUEST['SummitID']) ? $_REQUEST['SummitID'] : $this->SummitID; $summit = Summit::get()->byID($summit_id); if (!$summit) { return $valid->error('Invalid Summit!'); } $count = intval(SummitTicketType::get()->filter(array('SummitID' => $summit->ID, 'Name' => trim($this->Name), 'ID:ExactMatch:not' => $this->ID))->count()); if ($count > 0) { return $valid->error(sprintf('Summit Ticket Type "%s" already exists!. please set another one', $this->Name)); } return $valid; }
public function getCMSFields() { $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', new HiddenField('OwnerID', 'OwnerID')); $f->addFieldsToTab('Root.Main', new TextField('ExternalOrderId', '#Order')); $f->addFieldsToTab('Root.Main', new TextField('ExternalAttendeeId', '#Attendee')); $f->addFieldsToTab('Root.Main', $date = new DatetimeField('TicketBoughtDate', 'Bought Date')); $date->getDateField()->setConfig('showcalendar', true); $f->addFieldsToTab('Root.Main', $date = new DatetimeField('TicketChangedDate', 'Changed Date')); $date->getDateField()->setConfig('showcalendar', true); $summit_id = $_REQUEST['SummitID']; if (empty($summit_id)) { $summit_id = $this->Owner()->exists() ? $this->Owner()->SummitID : Summit::get_active()->ID; } $f->addFieldsToTab('Root.Main', $ddl = new DropdownField('TicketTypeID', 'Ticket Type', SummitTicketType::get()->filter('SummitID', $summit_id)->map("ID", "Name"))); return $f; }
public function getCMSFields() { $f = new FieldList($rootTab = new TabSet("Root", $tabMain = new Tab('Main'))); $f->addFieldToTab('Root.Main', new HiddenField('SummitID', 'SummitID')); $f->addFieldsToTab('Root.Main', new CheckboxField('SharedContactInfo', 'Allow Shared Contact Info?')); $f->addFieldsToTab('Root.Main', new CheckboxField('SummitHallCheckedIn', 'Is SummitHall checked In?')); $f->addFieldsToTab('Root.Main', $checked_in_date = new DatetimeField('SummitHallCheckedInDate', 'SummitHall checked In Date')); $checked_in_date->getDateField()->setConfig('showcalendar', true); $checked_in_date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldsToTab('Root.Main', $ticket_bought_date = new DatetimeField('TicketBoughtDate', 'Ticket Bought Date')); $ticket_bought_date->getDateField()->setConfig('showcalendar', true); $ticket_bought_date->setConfig('dateformat', 'dd/MM/yyyy'); $f->addFieldsToTab('Root.Main', new TextField('ExternalOrderId', 'Eventbrite Order ID')); $summit_id = isset($_REQUEST['SummitID']) ? $_REQUEST['SummitID'] : $this->SummitID; $ticket_types = SummitTicketType::get()->filter('SummitID', $summit_id)->map('ID', 'Name'); $f->addFieldsToTab('Root.Main', $ddl_ticket = new DropdownField('TicketTypeID', 'TicketType', $ticket_types)); $ddl_ticket->setEmptyString('-- Select One --'); $f->addFieldsToTab('Root.Main', new MemberAutoCompleteField('Member', 'Member')); if ($this->ID > 0) { // schedule $config = GridFieldConfig_RelationEditor::create(); $config->removeComponentsByType('GridFieldAddNewButton'); $config->getComponentByType('GridFieldAddExistingAutocompleter')->setSearchList($this->getAllowedSchedule()); $config->addComponent(new GridFieldAjaxRefresh(1000, false)); $detailFormFields = new FieldList(); $detailFormFields->push(new CheckBoxField('ManyMany[IsCheckedIn]', 'Is Checked In?')); $config->getComponentByType('GridFieldDetailForm')->setFields($detailFormFields); $gridField = new GridField('Schedule', 'Schedule', $this->Schedule(), $config); $f->addFieldToTab('Root.Schedule', $gridField); } return $f; }
/** * @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; }); }