Files
minicrm/app/Enums/ContractType.php
2026-05-12 09:23:05 +00:00

74 lines
2.2 KiB
PHP

<?php
namespace App\Enums;
/**
* Contract Type Enum — Loại hợp đồng chi tiết (subtype của category)
*
* Ownership: deposit (đặt cọc), purchase (mua bán), transfer (chuyển nhượng)
* Business: rental (cho thuê), self_business (tự doanh), bcc (hợp tác KD)
*
* Để thêm loại mới:
* 1. Thêm case mới vào enum + gán category phù hợp trong category()
* 2. Thêm label trong lang/vi/enums.php và lang/en/enums.php
* 3. Reload browser
*/
enum ContractType: string
{
case DEPOSIT = 'deposit';
case PURCHASE = 'purchase';
case TRANSFER = 'transfer';
case RENTAL = 'rental';
case SELF_BUSINESS = 'self_business';
case BCC = 'bcc';
public function label(): string
{
return match ($this) {
self::DEPOSIT => __('enums.contract_type.deposit'),
self::PURCHASE => __('enums.contract_type.purchase'),
self::TRANSFER => __('enums.contract_type.transfer'),
self::RENTAL => __('enums.contract_type.rental'),
self::SELF_BUSINESS => __('enums.contract_type.self_business'),
self::BCC => __('enums.contract_type.bcc'),
};
}
public function color(): string
{
return match ($this) {
self::DEPOSIT => 'warning',
self::PURCHASE => 'success',
self::TRANSFER => 'info',
self::RENTAL => 'info',
self::SELF_BUSINESS => 'warning',
self::BCC => 'danger',
};
}
public function category(): ContractCategory
{
return match ($this) {
self::DEPOSIT, self::PURCHASE, self::TRANSFER => ContractCategory::OWNERSHIP,
self::RENTAL, self::SELF_BUSINESS, self::BCC => ContractCategory::BUSINESS,
};
}
public static function options(): array
{
return collect(self::cases())->mapWithKeys(fn ($case) => [
$case->value => $case->label(),
])->toArray();
}
public static function ownershipCases(): array
{
return [self::DEPOSIT, self::PURCHASE, self::TRANSFER];
}
public static function businessCases(): array
{
return [self::RENTAL, self::SELF_BUSINESS, self::BCC];
}
}