Teilnahmerechnungen erstellen
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Support;
|
||||
|
||||
use DateTimeInterface;
|
||||
|
||||
/**
|
||||
* Zustandslose Helfer für Zeiträume.
|
||||
*/
|
||||
final class DateRange
|
||||
{
|
||||
/**
|
||||
* Anzahl Tage eines Zeitraums, bei dem beide Enden mitzählen -- die Anwesenheitstage einer
|
||||
* Teilnahme also, bei der An- und Abreisetag beide zählen. Ein eintägiger Zeitraum ergibt 1.
|
||||
*
|
||||
* Die Reihenfolge der Argumente spielt keine Rolle, `DateInterval::days` liefert den Betrag.
|
||||
*
|
||||
* Achtung: Für die Förderabrechnung gilt eine andere Regel -- dort werden Nächte gezählt
|
||||
* (siehe `presenceDaysSupport` in {@see \App\Resources\EventParticipantResource}). Dieser Helfer
|
||||
* ist dafür nicht zuständig.
|
||||
*/
|
||||
public static function inclusiveDays(DateTimeInterface $from, DateTimeInterface $to): int
|
||||
{
|
||||
return $from->diff($to)->days + 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Support;
|
||||
|
||||
/**
|
||||
* Zustandslose Helfer rund um Texteingaben.
|
||||
*/
|
||||
final class Text
|
||||
{
|
||||
/**
|
||||
* Leergelassene Eingaben als NULL, sonst getrimmt.
|
||||
*
|
||||
* Optionale Felder aus Formularen kommen als Leerstring statt als NULL an. In der Datenbank
|
||||
* gespeichert würden sie später als "vorhanden, aber leer" gelten -- im Briefkopf einer Rechnung
|
||||
* etwa als leere Zeile oder als Beschriftung ohne Wert.
|
||||
*
|
||||
* Laravels `blank()` erkennt auch reine Whitespace-Eingaben.
|
||||
*/
|
||||
public static function nullIfBlank(?string $value): ?string
|
||||
{
|
||||
return blank($value) ? null : trim($value);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user