Helpers
Statische Utility-Klassen unter app/Http/Helpers/.
ApiHelper
App\Http\Helpers\ApiHelper
routeNames(string $namespace): array
Bequemes Generieren der fünf Standard-Routen-Namen für apiResource. Wird in jeder MFR-Resource genutzt.
use App\Http\Helpers\ApiHelper;
Route::apiResource('companies', CompanyController::class)
->only(['index', 'show', 'store', 'update', 'destroy'])
->names(ApiHelper::routeNames('companies'));
// → ['index' => 'companies.index', 'show' => 'companies.show', ...]
parseDate($dateString, $format = null): ?Carbon
Robust gegen ungültige Inputs — gibt bei InvalidFormatException null statt zu werfen.
$date = ApiHelper::parseDate('2026-04-30T12:00:00Z');
$date = ApiHelper::parseDate('30.04.2026', 'd.m.Y');
formatDate(Carbon $date, $format = 'Y-m-d H:i:s'): string
Trivialer Carbon→String-Wrapper.
isCarbonDateTime($value): bool
Heuristisch: ist der String parsebar als Datum?
PdfHelper
App\Http\Helpers\PdfHelper
Wird vom Grenke-Flow genutzt, um Base64-PDFs aus API-Responses zu speichern.
extractBase64FromResponse(array $response): string
Sucht den Base64-String in mehreren möglichen Keys (Content, content, Pdf, pdf, Data, data, [0]). Wirft RuntimeException, wenn nichts gefunden wurde.
saveBase64Pdf(string $base64Content, string $directory = 'grenke/contracts', ?string $filename = null): array
Decoded den Base64-String und legt ihn auf Disk local ab.
$pdfHelper = new PdfHelper();
$base64 = $pdfHelper->extractBase64FromResponse($contractDocumentResponse);
$file = $pdfHelper->saveBase64Pdf(
base64Content: $base64,
directory: 'grenke/contracts',
filename: $financingId . '.pdf',
);
// → ['disk' => 'local', 'path' => 'grenke/contracts/<id>.pdf', 'filename' => '...', 'size' => 12345]
Default-Filename, wenn nicht gesetzt:
contract_<Y>_<m>_<d>_<H><i><s><u>.pdf
BiMapHelper
App\Http\Helpers\BiMapHelper
Bidirektionale Map (Key↔Value) — beide Richtungen sind unique. Nützlich für Mapping-Tabellen wie z.B. Weclapp.partyType ↔ MFR.IsPhysicalPerson.
$map = new BiMapHelper([
'ORGANIZATION' => false,
'PERSON' => true,
]);
$map->getByKey('PERSON'); // → true
$map->getByValue(false); // → 'ORGANIZATION'
$map->put('NEW', 42);
$map->removeByKey('PERSON');
Helper
App\Http\Helpers\Helper
array_merge_deep_override(array $a, array $b): array
Tiefer Merge zweier Arrays — Werte aus $b überschreiben Werte aus $a. Anders als array_merge_recursive werden Skalar-Werte überschrieben statt zu Arrays gemacht. Wird im Mfr\CompanyController::update() genutzt, um den lokalen Datenbank-Stand mit dem Request-Update zu kombinieren bevor der Push zu MFR geht.
$result = (new Helper())->array_merge_deep_override(
$company->toArray(),
$request->toArray(),
);
++$result['Version'];
$company->update($result);
Domain-spezifische Helper
Jede Domain hat zusätzlich ihren eigenen Helper.php:
| Datei | Inhalt |
|---|---|
app/Http/Helpers/Grenke/Helper.php | getEntity, getModel, getParameter, getState, getFactor |
app/Http/Helpers/Mfr/Helper.php | Resource/Model-Mapping für MFR-Entities |
app/Http/Helpers/Weclapp/Helper.php | getCustomAttribute, getMfrModel, getWeclappController, … |
Siehe Grenke Helper, Weclapp Helper, MFR Helper (jeweils auf den Domain-Seiten).