confirmationRepository = $confirmationRepository; } /** * Create a new confirmation. * * @param Confirmation $confirmationData * * @return int Confirmation ID */ public function createConfirmation(Confirmation $confirmationData): int { // Create confirmation via repository and return new confirmation ID return $this->confirmationRepository->add($confirmationData); } /** * Update an existing confirmation. * * @param int $confirmationId * @param Confirmation $confirmationData * * @return bool */ public function updateConfirmation(int $confirmationId, Confirmation $confirmationData): bool { return $this->confirmationRepository->update($confirmationId, $confirmationData); } /** * Get confirmations by form ID. * * @param int $id * * @return mixed[]|null * * @throws NotFoundException If no confirmations are found */ public function getConfirmationsById(int $id): ?array { $confirmation = $this->confirmationRepository->getAllById($id); if (!$confirmation) { throw new NotFoundException( BackendStrings::getExceptionStrings()['confirmation_not_found'] ); } return $confirmation; } /** * Get a specific form by its ID. * * @param int $id * * @return object ConfirmationEntity * * @throws NotFoundException If the confirmation is not found */ public function getConfirmationById(int $id): object { $confirmation = $this->confirmationRepository->getById($id); if (!$confirmation) { throw new NotFoundException( BackendStrings::getExceptionStrings()['confirmation_not_found'] ); } return $confirmation; } /** * Delete confirmations by form ID. * * @param int $id * * @return void * @throws NotFoundException */ public function deleteConfirmationsByFormId(int $id): void { $confirmations = $this->getConfirmationsById($id); if (!$confirmations) { return; } foreach ($confirmations as $confirmation) { $this->confirmationRepository->delete($confirmation->getId()); } } /** * Duplicate confirmations from one form to another. * * @param int $originalFormId * @param int $newFormId * * @return void * @throws NotFoundException */ public function duplicateConfirmations(int $originalFormId, int $newFormId): void { $confirmations = $this->getConfirmationsById($originalFormId); foreach ($confirmations as $confirmation) { $confirmationData = $confirmation->toArray(); unset($confirmationData['id']); $confirmationData['formId'] = $newFormId; $this->createConfirmation(ConfirmationFactory::create($confirmationData)); } } }