tx_service->transaction(function() use($summit, $payload){ $selection_plan = SummitSelectionPlanFactory::build($payload, $summit); $former_selection_plan = $summit->getSelectionPlanByName($selection_plan->getName()); if(!is_null($former_selection_plan)){ throw new ValidationException(trans( 'validation_errors.SummitSelectionPlanService.addSelectionPlan.alreadyExistName', [ 'summit_id' => $summit->getId() ] )); } // validate selection plan $summit->checkSelectionPlanConflicts($selection_plan); $summit->addSelectionPlan($selection_plan); return $selection_plan; }); } }