__('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]; } }