Fix on reassign attendee tix

tix was not assigned correctly to new attendee

Change-Id: I378573d456b3db16fae944c1673de50f9799beab
This commit is contained in:
Sebastian Marcet 2018-09-20 10:36:04 -03:00
parent 6688606abe
commit 8ffec4ed79
5 changed files with 38 additions and 3 deletions

View File

@ -201,7 +201,6 @@ Route::group([
Route::delete('', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2SummitAttendeesApiController@deleteAttendeeTicket']);
Route::put('reassign/{other_member_id}', [ 'middleware' => 'auth.user:administrators|summit-front-end-administrators', 'uses' => 'OAuth2SummitAttendeesApiController@reassignAttendeeTicket']);
});
});
});
});

View File

@ -118,7 +118,7 @@ class SummitAttendee extends SilverstripeBaseModel
}
/**
* @ORM\OneToMany(targetEntity="SummitAttendeeTicket", mappedBy="owner", cascade={"persist"}, orphanRemoval=true)
* @ORM\OneToMany(targetEntity="SummitAttendeeTicket", mappedBy="owner", cascade={"persist", "remove"})
* @var SummitAttendeeTicket[]
*/
private $tickets;

View File

@ -30,6 +30,7 @@ final class SummitAttendeeTicketFactory
public static function build(SummitAttendee $attendee, SummitTicketType $type, array $data){
$ticket = new SummitAttendeeTicket();
$attendee->addTicket($ticket);
if(isset($data['external_order_id']))
$ticket->setExternalOrderId($data['external_order_id']);
if(isset($data['external_attendee_id']))

View File

@ -311,13 +311,17 @@ final class AttendeeService extends AbstractService implements IAttendeeService
if(is_null($ticket)){
throw new EntityNotFoundException("ticket not found");
}
$new_owner = $this->attendee_repository->getBySummitAndMember($summit, $other_member);
if(is_null($new_owner)){
$new_owner = SummitAttendeeFactory::build($summit, $other_member, []);
$this->attendee_repository->add($new_owner);
}
$new_owner->addTicket($ticket);
$attendee->removeTicket($ticket);
$new_owner->addTicket($ticket);
if(!$attendee->hasTickets()){
$this->attendee_repository->delete($attendee);
}

View File

@ -292,4 +292,35 @@ class OAuth2AttendeesApiTest extends ProtectedApiTest
$this->assertResponseStatus(204);
}
public function testReassignAttendeeTicket($summit_id = 25){
$params = [
'id' => $summit_id,
'attendee_id' => 14938,
'ticket_id' => 15070,
'other_member_id' => 13867,
];
$headers = [
"HTTP_Authorization" => " Bearer " . $this->access_token,
"CONTENT_TYPE" => "application/json"
];
$response = $this->action(
"PUT",
"OAuth2SummitAttendeesApiController@reassignAttendeeTicket",
$params,
[],
[],
[],
$headers,
''
);
$content = $response->getContent();
$this->assertResponseStatus(201);
$ticket = json_decode($content);
$this->assertTrue(!is_null($ticket));
return $ticket;
}
}