ticket_type_id = $ticket_type_id; $this->qty_to_return = $qty_to_return; } /** * @param ISummitTicketTypeRepository $repository * @param ITransactionService $tx_service * @throws \Exception */ public function handle(ISummitTicketTypeRepository $repository, ITransactionService $tx_service) { $tx_service->transaction(function () use ($repository) { $ticket_type = $repository->getByIdExclusiveLock($this->ticket_type_id); if(is_null($ticket_type) || !$ticket_type instanceof SummitTicketType) return; Log::debug(sprintf("CompensateTickets::handle: compensating ticket type %s on %s usages", $this->ticket_type_id, $this->qty_to_return)); try { $ticket_type->restore($this->qty_to_return); } catch(ValidationException $ex){ Log::error($ex); } }); } }