, total: int} * * @since 0.1.0 */ public function handle(): array { $services = $this->services->find_active( 100, 0 ); $items = []; foreach ( $services as $service ) { $items[] = $this->to_admin_array( $service ); } return [ 'items' => $items, 'total' => count( $items ) ]; } /** * Map a service entity to the admin API shape. * * @param Service $service Service entity. * @return array */ private function to_admin_array( Service $service ): array { $durations = $this->durations->find_by_service_id( $service->id() ); $default_duration = null; foreach ( $durations as $d ) { if ( $d->is_default() ) { $default_duration = $d; break; } } if ( null === $default_duration && [] !== $durations ) { $default_duration = $durations[0]; } $duration_minutes = null; $price_minor = null; if ( null !== $default_duration ) { $duration_minutes = $default_duration->duration_min(); $price_minor = $default_duration->price()->amount_minor(); } return [ 'id' => $service->id(), 'name' => $service->name(), 'status' => $service->status()->value, 'duration_minutes' => $duration_minutes, 'price_minor' => $price_minor, ]; } }