48 lines
1.7 KiB
PHP
48 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core\Shipping\Enums;
|
|
|
|
/**
|
|
* Extra carrier services, normalized: "Saturday delivery" is the same case
|
|
* whatever code each carrier uses for it. A carrier declares which ones it
|
|
* offers and maps them to its own codes via
|
|
* Modules\Core\Shipping\Contracts\SupportsExtraServices. Staff pick them
|
|
* per shipment; customers never see them.
|
|
*/
|
|
enum ExtraService: string
|
|
{
|
|
case SaturdayDelivery = 'saturday_delivery';
|
|
case MorningDelivery = 'morning_delivery';
|
|
/** Delivery by a set time / within a time slot. */
|
|
case TimedDelivery = 'timed_delivery';
|
|
case SameDayDelivery = 'same_day_delivery';
|
|
case Insurance = 'insurance';
|
|
case SpecialHandling = 'special_handling';
|
|
case ReturnDocuments = 'return_documents';
|
|
case RemoteArea = 'remote_area';
|
|
case Protocol = 'protocol';
|
|
case Refrigerated = 'refrigerated';
|
|
case ExchangePackage = 'exchange_package';
|
|
|
|
/**
|
|
* Admin-facing only (staff pick these), so plain English like the rest
|
|
* of the admin UI.
|
|
*/
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::SaturdayDelivery => 'Saturday delivery',
|
|
self::MorningDelivery => 'Morning delivery',
|
|
self::TimedDelivery => 'Timed delivery',
|
|
self::SameDayDelivery => 'Same-day delivery',
|
|
self::Insurance => 'Insurance',
|
|
self::SpecialHandling => 'Special handling',
|
|
self::ReturnDocuments => 'Return documents',
|
|
self::RemoteArea => 'Remote area',
|
|
self::Protocol => 'Protocol',
|
|
self::Refrigerated => 'Refrigerated',
|
|
self::ExchangePackage => 'Exchange package',
|
|
};
|
|
}
|
|
}
|