Skip to main content

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:

DateiInhalt
app/Http/Helpers/Grenke/Helper.phpgetEntity, getModel, getParameter, getState, getFactor
app/Http/Helpers/Mfr/Helper.phpResource/Model-Mapping für MFR-Entities
app/Http/Helpers/Weclapp/Helper.phpgetCustomAttribute, getMfrModel, getWeclappController, …

Siehe Grenke Helper, Weclapp Helper, MFR Helper (jeweils auf den Domain-Seiten).