| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- declare(strict_types=1);
- namespace app\miniapi\service;
- use plugin\saiadmin\app\model\water\WaterEnterprise;
- use plugin\saiadmin\app\model\water\WaterDelivery;
- use app\miniapi\support\PhoneNumber;
- /** Shared response mapping; services load model relations before presenting lists. */
- final class WaterPresenter
- {
- public static function phone(string $phone): string
- {
- return PhoneNumber::mask($phone);
- }
- public static function enterprise(WaterEnterprise $enterprise): array
- {
- return [
- 'id' => (int) $enterprise->id,
- 'name' => $enterprise->name,
- 'contact' => $enterprise->contact,
- 'phone' => self::phone($enterprise->phone),
- 'address' => $enterprise->address,
- 'region' => $enterprise->region,
- 'longitude' => $enterprise->longitude === null ? null : (float) $enterprise->longitude,
- 'latitude' => $enterprise->latitude === null ? null : (float) $enterprise->latitude,
- 'employee_count' => $enterprise->employee_count === null ? null : (int) $enterprise->employee_count,
- 'revision' => self::revision($enterprise),
- ];
- }
- public static function revision(WaterEnterprise $enterprise): string
- {
- return hash('sha256', json_encode($enterprise->only([
- 'id',
- 'name',
- 'contact',
- 'phone',
- 'address',
- 'region',
- 'longitude',
- 'latitude',
- 'employee_count',
- 'updated_at',
- ]), JSON_THROW_ON_ERROR));
- }
- public static function delivery(WaterDelivery $delivery): array
- {
- return [
- 'id' => (int) $delivery->id,
- 'code' => 'DS' . $delivery->id,
- 'sku_id' => (int) $delivery->sku_id,
- 'sku_name' => $delivery->sku?->name,
- 'quantity' => (int) $delivery->quantity,
- 'status' => $delivery->status,
- 'delivered_qty' => (int) $delivery->delivered_qty,
- 'empty_returned' => (int) $delivery->empty_returned,
- 'address' => $delivery->address,
- 'scheduled_date' => $delivery->scheduled_date,
- 'deadline_at' => $delivery->deadline_at,
- 'driver_name' => $delivery->driver,
- 'driver_phone' => self::phone($delivery->driver_phone),
- 'created_at' => $delivery->created_at,
- 'received_at' => $delivery->received_at,
- 'completed_at' => $delivery->completed_at,
- ];
- }
- }
|