. */ declare(strict_types=1); namespace FireflyIII\Services\Internal\Destroy; use FireflyIII\Models\Recurrence; use FireflyIII\Models\RecurrenceTransaction; /** * Class RecurrenceDestroyService */ class RecurrenceDestroyService { /** * Delete recurrence by ID * * @param int $recurrenceId */ public function destroyById(int $recurrenceId): void { $recurrence = Recurrence::find($recurrenceId); if (null === $recurrence) { return; } $this->destroy($recurrence); } /** * Delete recurrence. * * @param Recurrence $recurrence * */ public function destroy(Recurrence $recurrence): void { // delete all meta data $recurrence->recurrenceMeta()->delete(); // delete all transactions. /** @var RecurrenceTransaction $transaction */ foreach ($recurrence->recurrenceTransactions as $transaction) { $transaction->recurrenceTransactionMeta()->delete(); $transaction->delete(); } // delete all repetitions $recurrence->recurrenceRepetitions()->delete(); // delete recurrence $recurrence->delete(); } }