assertRequired($req->name, 'name'); return Mahlzeit::anlegen( name: $req->name, notiz: $req->notiz, wochentage: $req->wochentage, sortOrder: 0, jetzt: $jetzt, ); } /** * Wendet ein Teil-Update auf ein bestehendes Modell an. `null`-Felder bleiben unverändert. */ public function updateFromUpdateRequest(Mahlzeit $mahlzeit, MahlzeitUpdateRequest $req, \DateTimeImmutable $jetzt): Mahlzeit { if ($req->name !== null) { $this->assertRequired($req->name, 'name'); } $name = $req->name ?? $mahlzeit->name; $notiz = $req->notiz ?? $mahlzeit->notiz; $wochentage = $req->wochentage ?? $mahlzeit->wochentage; return $mahlzeit->aktualisieren( name: $name, notiz: $notiz, wochentage: $wochentage, sortOrder: $mahlzeit->sortOrder, jetzt: $jetzt, ); } private function assertRequired(?string $value, string $feld): void { if ($value === null || \trim($value) === '') { throw new BusinessRuleViolationException(\sprintf('%s ist ein Pflichtfeld.', $feld)); } } }