feat: comprehensive booking overview for confirmation

This commit is contained in:
Björn Fromme
2026-03-16 11:59:10 +01:00
parent c89bda86b7
commit 0f4b16c194
4 changed files with 239 additions and 82 deletions
+45
View File
@@ -41,4 +41,49 @@ class Pickup
#[Groups(['api:booking'])]
public array $mapping = [];
/**
* Gets the formatted label for the pickup location without pricing.
*
* Creates user-friendly labels following the pattern:
* - Primary format: "City (Street)" if street is available
* - Fallback format: "City" if no street information
*
* @return string The formatted pickup location label
*/
public function getLabel(): string
{
$label = $this->city ?? '';
if (null !== $this->street && '' !== trim($this->street)) {
$label .= ' ('.$this->street.')';
}
return $label;
}
/**
* Gets the formatted label with pricing information.
*
* Formats the pickup label with price display:
* - Zero/null price: Just the label without price suffix
* - Positive price: "Label (€X,XX)" as surcharge
* - Negative price: "Label (-X,XX€ Rabatt)" as discount
*
* @return string The formatted pickup label with pricing
*/
public function getLabelWithPrice(): string
{
$label = $this->getLabel();
if (null === $this->price || 0.0 === $this->price) {
return $label;
}
if ($this->price < 0) {
return sprintf('%s (-%s€ Rabatt)', $label, number_format(abs($this->price), 2, ',', '.'));
}
return sprintf('%s (€%s)', $label, number_format($this->price, 2, ',', '.'));
}
}