Version 2.0
This commit is contained in:
@@ -3,24 +3,33 @@
|
||||
namespace App\Enums;
|
||||
|
||||
/**
|
||||
* Contract Type Enum
|
||||
* Contract Type Enum — Loại hợp đồng chi tiết (subtype của category)
|
||||
*
|
||||
* Để thêm loại hợp đồng mới:
|
||||
* 1. Thêm case mới vào enum
|
||||
* 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 SALE = 'sale';
|
||||
case LEASE = 'lease';
|
||||
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::SALE => __('enums.contract_type.sale'),
|
||||
self::LEASE => __('enums.contract_type.lease'),
|
||||
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'),
|
||||
};
|
||||
}
|
||||
@@ -28,9 +37,20 @@ enum ContractType: string
|
||||
public function color(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::SALE => 'success',
|
||||
self::LEASE => 'info',
|
||||
self::BCC => 'warning',
|
||||
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,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -40,4 +60,14 @@ enum ContractType: string
|
||||
$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];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user