Refactor methods so they're static and can be called from elsewhere.

This commit is contained in:
James Cole
2025-08-18 19:34:29 +02:00
parent 0b76747531
commit 4013c7e316

View File

@@ -47,10 +47,10 @@ class BudgetLimitHandler
public function created(Created $event): void public function created(Created $event): void
{ {
Log::debug(sprintf('BudgetLimitHandler::created(#%s)', $event->budgetLimit->id)); Log::debug(sprintf('BudgetLimitHandler::created(#%s)', $event->budgetLimit->id));
$this->updateAvailableBudget($event->budgetLimit); self::updateAvailableBudget($event->budgetLimit);
} }
private function updateAvailableBudget(BudgetLimit $budgetLimit): void public static function updateAvailableBudget(BudgetLimit $budgetLimit): void
{ {
Log::debug(sprintf('Now in updateAvailableBudget(limit #%d)', $budgetLimit->id)); Log::debug(sprintf('Now in updateAvailableBudget(limit #%d)', $budgetLimit->id));
@@ -115,13 +115,13 @@ class BudgetLimitHandler
if (null !== $availableBudget) { if (null !== $availableBudget) {
Log::debug('Found 1 AB, will update.'); Log::debug('Found 1 AB, will update.');
$this->calculateAmount($availableBudget); self::calculateAmount($availableBudget);
} }
if (null === $availableBudget) { if (null === $availableBudget) {
Log::debug('No AB found, will create.'); Log::debug('No AB found, will create.');
// if not exists: // if not exists:
$currentPeriod = Period::make($current, $currentEnd, precision: Precision::DAY(), boundaries: Boundaries::EXCLUDE_NONE()); $currentPeriod = Period::make($current, $currentEnd, precision: Precision::DAY(), boundaries: Boundaries::EXCLUDE_NONE());
$daily = $this->getDailyAmount($budgetLimit); $daily = self::getDailyAmount($budgetLimit);
$amount = bcmul($daily, (string) $currentPeriod->length(), 12); $amount = bcmul($daily, (string) $currentPeriod->length(), 12);
// no need to calculate if period is equal. // no need to calculate if period is equal.
@@ -147,7 +147,7 @@ class BudgetLimitHandler
); );
$availableBudget->save(); $availableBudget->save();
Log::debug(sprintf('ID of new AB is #%d', $availableBudget->id)); Log::debug(sprintf('ID of new AB is #%d', $availableBudget->id));
$this->calculateAmount($availableBudget); self::calculateAmount($availableBudget);
} }
} }
@@ -156,7 +156,7 @@ class BudgetLimitHandler
} }
} }
private function calculateAmount(AvailableBudget $availableBudget): void private static function calculateAmount(AvailableBudget $availableBudget): void
{ {
$repository = app(BudgetLimitRepositoryInterface::class); $repository = app(BudgetLimitRepositoryInterface::class);
$repository->setUser($availableBudget->user); $repository->setUser($availableBudget->user);
@@ -206,7 +206,7 @@ class BudgetLimitHandler
$overlap = $abPeriod->overlap($limitPeriod); $overlap = $abPeriod->overlap($limitPeriod);
if ($overlap instanceof Period) { if ($overlap instanceof Period) {
$length = $overlap->length(); $length = $overlap->length();
$daily = bcmul($this->getDailyAmount($budgetLimit), (string) $length); $daily = bcmul(self::getDailyAmount($budgetLimit), (string) $length);
$newAmount = bcadd($newAmount, $daily); $newAmount = bcadd($newAmount, $daily);
} }
} }
@@ -222,7 +222,7 @@ class BudgetLimitHandler
$availableBudget->save(); $availableBudget->save();
} }
private function getDailyAmount(BudgetLimit $budgetLimit): string private static function getDailyAmount(BudgetLimit $budgetLimit): string
{ {
if (0 === $budgetLimit->id) { if (0 === $budgetLimit->id) {
return '0'; return '0';
@@ -244,15 +244,12 @@ class BudgetLimitHandler
public function deleted(Deleted $event): void public function deleted(Deleted $event): void
{ {
Log::debug(sprintf('BudgetLimitHandler::deleted(#%s)', $event->budgetLimit->id));
$budgetLimit = $event->budgetLimit;
$budgetLimit->id = 0;
$this->updateAvailableBudget($event->budgetLimit);
} }
public function updated(Updated $event): void public function updated(Updated $event): void
{ {
Log::debug(sprintf('BudgetLimitHandler::updated(#%s)', $event->budgetLimit->id)); Log::debug(sprintf('BudgetLimitHandler::updated(#%s)', $event->budgetLimit->id));
$this->updateAvailableBudget($event->budgetLimit); self::updateAvailableBudget($event->budgetLimit);
} }
} }