/** * Create a copy of an Exercise. * * @param Exercise $exercise * * @return Exercise the copy of the Exercise */ public function copyExercise(Exercise $exercise) { $newExercise = new Exercise(); // Populate Exercise properties $newExercise->setName($exercise->getName()); $newExercise->setDescription($exercise->getDescription()); $newExercise->setShuffle($exercise->getShuffle()); $newExercise->setPickSteps($exercise->getPickSteps()); $newExercise->setDuration($exercise->getDuration()); $newExercise->setDoprint($exercise->getDoprint()); $newExercise->setMaxAttempts($exercise->getMaxAttempts()); $newExercise->setCorrectionMode($exercise->getCorrectionMode()); $newExercise->setDateCorrection($exercise->getDateCorrection()); $newExercise->setMarkMode($exercise->getMarkMode()); $newExercise->setDispButtonInterrupt($exercise->getDispButtonInterrupt()); $newExercise->setLockAttempt($exercise->getLockAttempt()); $newExercise->setMinimalCorrection($exercise->isMinimalCorrection()); /** @var \UJM\ExoBundle\Entity\Step $step */ foreach ($exercise->getSteps() as $step) { $newStep = $this->stepManager->copyStep($step); // Add step to Exercise $newExercise->addStep($newStep); } return $newExercise; }