This commit is contained in:
James Cole
2020-07-26 07:57:48 +02:00
parent 4b16d7c53d
commit 83467ef2f2
10 changed files with 112 additions and 56 deletions

View File

@@ -569,4 +569,28 @@ class RecurringRepository implements RecurringRepositoryInterface
{
$this->user->recurrences()->delete();
}
/**
* @inheritDoc
*/
public function totalTransactions(Recurrence $recurrence, RecurrenceRepetition $repetition): int
{
// if repeat = null just return 0.
if (null === $recurrence->repeat_until && 0 === (int) $recurrence->repetitions) {
return 0;
}
// expect X transactions then stop. Return that number
if (null === $recurrence->repeat_until && 0 !== (int) $recurrence->repetitions) {
return (int) $recurrence->repetitions;
}
// need to calculate, this depends on the repetition:
if (null !== $recurrence->repeat_until && 0 === (int) $recurrence->repetitions) {
$occurrences = $this->getOccurrencesInRange($repetition, $recurrence->first_date ?? today(), $recurrence->repeat_until);
return count($occurrences);
}
return 0;
}
}

View File

@@ -44,6 +44,15 @@ interface RecurringRepositoryInterface
*/
public function destroyAll(): void;
/**
* Calculate how many transactions are to be expected from this recurrence.
*
* @param Recurrence $recurrence
* @param RecurrenceRepetition $repetition
* @return int
*/
public function totalTransactions(Recurrence $recurrence, RecurrenceRepetition $repetition): int;
/**
* Destroy a recurring transaction.
*