Added endpoint update ticket type
PUT /api/v1/summits/{id}/ticket-types/{ticket_type_id}
Payload
* name (sometimes|string)
* external_id (sometimes|string|max:255
* description (sometimes|string)
Change-Id: Id9736e2151a8c69441e29e4167f3d1a83ecf1434
This commit is contained in:
@@ -29,4 +29,14 @@ interface ISummitTicketTypeService
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function addTicketType(Summit $summit, array $data);
|
||||
|
||||
/**
|
||||
* @param Summit $summit
|
||||
* @param int $ticket_type_id
|
||||
* @param array $data
|
||||
* @return SummitTicketType
|
||||
* @throws EntityNotFoundException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function updateTicketType(Summit $summit, $ticket_type_id, array $data);
|
||||
}
|
||||
@@ -95,4 +95,73 @@ final class SummitTicketTypeService
|
||||
return $ticket_type;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Summit $summit
|
||||
* @param int $ticket_type_id
|
||||
* @param array $data
|
||||
* @return SummitTicketType
|
||||
* @throws EntityNotFoundException
|
||||
* @throws ValidationException
|
||||
*/
|
||||
public function updateTicketType(Summit $summit, $ticket_type_id, array $data)
|
||||
{
|
||||
return $this->tx_service->transaction(function() use ($summit, $ticket_type_id, $data){
|
||||
|
||||
if(isset($data['name'])) {
|
||||
$former_ticket_type = $summit->getTicketTypeByName(trim($data['name']));
|
||||
|
||||
if (!is_null($former_ticket_type) && $former_ticket_type->getId() != $ticket_type_id) {
|
||||
throw new ValidationException
|
||||
(
|
||||
trans
|
||||
(
|
||||
'validation_errors.SummitTicketTypeService.updateTicketType.NameAlreadyExists'
|
||||
),
|
||||
[
|
||||
'name' => trim($data['name']),
|
||||
'summit_id' => $summit->getId()
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($data['external_id'])) {
|
||||
$former_ticket_type = $summit->getTicketTypeByExternalId(trim($data['external_id']));
|
||||
if (!is_null($former_ticket_type) && $former_ticket_type->getId() != $ticket_type_id) {
|
||||
throw new ValidationException
|
||||
(
|
||||
trans
|
||||
(
|
||||
'validation_errors.SummitTicketTypeService.updateTicketType.ExternalIdAlreadyExists'
|
||||
),
|
||||
[
|
||||
'external_id' => trim($data['external_id']),
|
||||
'summit_id' => $summit->getId()
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$ticket_type = $summit->getTicketTypeById($ticket_type_id);
|
||||
|
||||
if(is_null($ticket_type)){
|
||||
throw new EntityNotFoundException
|
||||
(
|
||||
trans
|
||||
(
|
||||
'not_found_errors.SummitTicketTypeService.updateTicketType.TicketTypeNotFound',
|
||||
[
|
||||
'ticket_type_id' => $ticket_type_id,
|
||||
'summit_id' => $summit->getId()
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$ticket_type = SummitTicketTypeFactory::populate($ticket_type, $data);
|
||||
|
||||
return $ticket_type;
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user