/** * @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 getTicketData(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)); } $ticket_id = intval($request->param('TICKET_ID')); $ticket = SummitAttendeeTicket::get_by_id('SummitAttendeeTicket', $ticket_id); if (is_null($ticket)) { throw new NotFoundEntityException('SummitAttendeeTicket', sprintf(' id %s', $ticket_id)); } $ticket_array = $ticket->toMap(); $ticket_array['TicketTypeName'] = $ticket->TicketType()->Name; return $this->ok($ticket_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(); } }