<?php

namespace App\Enums;

/**
 * 견적 상태 코드 Enum
 */
enum EstimateStatus: string
{
    case Draft = 'draft';      // 임시저장
    case Submitted = 'submitted';  // 제출/확정
    case Approved = 'approved';   // 승인
    case Rejected = 'rejected';   // 반려
    case Cancelled = 'cancelled';  // 취소

    // 한글라벨 등 커스텀 메서드
    public function label(): string
    {
        return match ($this) {
            self::Draft => '임시저장',
            self::Submitted => '제출/확정',
            self::Approved => '승인',
            self::Rejected => '반려',
            self::Cancelled => '취소',
        };
    }
}

/**
 * 주문 상태 코드 Enum
 */
enum OrderStatus: string
{
    case Created = 'created';
    case Confirmed = 'confirmed';
    case InProgress = 'in_progress';
    case Completed = 'completed';
    case Cancelled = 'cancelled';

    // 한글라벨 등 커스텀 메서드
    public function label(): string
    {
        return match ($this) {
            self::Created => '등록',
            self::Confirmed => '승인',
            self::InProgress => '진행중',
            self::Completed => '완료',
            self::Cancelled => '취소',
        };
    }
}

// 사용
/*foreach (EstimateStatus::cases() as $status) {
    echo $status->name;
    echo $status->value;
    echo $status->label();
}*/
