<?php

declare(strict_types=1);

namespace ImovelZapAi\Properties\Domain\Enums;

enum PropertyStatus: string
{
    case Available = 'disponivel';
    case Reserved = 'reservado';
    case Sold = 'vendido';
    case Rented = 'alugado';
    case Unavailable = 'indisponivel';

    public function label(): string
    {
        return match ($this) {
            self::Available => 'Disponível',
            self::Reserved => 'Reservado',
            self::Sold => 'Vendido',
            self::Rented => 'Alugado',
            self::Unavailable => 'Indisponível',
        };
    }

    /** @return list<string> */
    public static function values(): array
    {
        return array_map(static fn (self $case) => $case->value, self::cases());
    }
}
