(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, ]; } }