<?php

namespace App\Appointment\Availability\Picker;

use App\Resource\Entity\ClinicResource;

/**
 * ترتیب نام — همان رفتاری که موتور از روز اول داشت.
 *
 * پیش‌فرض است چون تنها استراتژی‌ای است که خروجی‌اش کاملاً قابل پیش‌بینی است: کلینیکی
 * که هنوز تصمیم نگرفته، نباید تخصیصش هر روز عوض شود.
 */
final class FirstAvailablePicker implements ResourcePicker
{
    public static function code(): string { return 'first_available'; }

    public static function label(): string { return 'به ترتیب نام — ساده و قابل پیش‌بینی'; }

    public function order(array $candidates, PickContext $context): array
    {
        $ordered = $candidates;

        usort($ordered, static fn (ClinicResource $a, ClinicResource $b): int
            => strcmp($a->getName(), $b->getName()));

        return $ordered;
    }
}
