add(new \DateInterval('P6W')); /** @var CostUnit $costUnit */ foreach ($costUnitRepository->getCurrentEvents(true) as $costUnit) { $billingEnd = $costUnit['billing_deadline']; if ($billingEnd === null) { $billingEnd = $billingResetEnd->format('Y-m-d'); new ChangeCostUnitDetailsCommand(new ChangeCostUnitDetailsRequest( CostUnit::where('id', $costUnit['id'])->first(), Amount::fromString($costUnit['distance_allowance']), $costUnit['mail_on_new'], $billingResetEnd ))->execute(); } $billingEndTime = \DateTime::createFromFormat('!Y-m-d', $billingEnd); if (false === $billingEndTime) { $billingEndTime = \DateTime::createFromFormat('Y-m-d H:i:s', $billingEnd); } if (false === $billingEndTime) { $recipients = config('app.admin_mail'); if (null === $recipients) { $recipients = CostUnit::where('id', $costUnit['id'])->first() ?->treasurers()->pluck('email')->all() ?? []; } if (!empty($recipients)) { Mail::to($recipients)->send(new CostUnitInvalidBillingDeadlineMail( costUnitId: $costUnit['id'], costUnitName: $costUnit['name'] ?? null, invalidBillingDeadline: $billingEnd, )); } continue; } // Der Abrechnungsschluss gilt einschließlich des ganzen Tages: bis 23:59:59 darf eingereicht werden. $billingEndTime->setTime(23, 59, 59); if ($now > $billingEndTime) { new ChangeCostUnitStateCommand( new ChangeCostUnitStateRequest( CostUnit::where('id', $costUnit['id'])->first(),false, false ) )->execute(); } } } }