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