File "PaymentStatusEnum.php"

Full Path: /var/www/html/back/app/Domain/Payment/Enums/PaymentStatusEnum.php
File size: 2.58 KB
MIME-type: text/x-php
Charset: utf-8

<?php

declare(strict_types=1);

namespace App\Domain\Payment\Enums;

enum PaymentStatusEnum: string
{
    case STATUS_DRAFT = 'draft';
    case STATUS_FINALIZE = 'finalize';
    case STATUS_FINALIZE_ONE_TWO = 'finalize-one-two';
    case STATUS_FINALIZE_TWO_TWO = 'finalize-two-two';
    case STATUS_APPROVE = 'approve';
    case STATUS_AGREE_ONE_TWO = 'agree-one-two';
    case STATUS_AGREE_TWO_TWO = 'agree-two-two';
    case STATUS_SENT = 'sent';
    case STATUS_MOVING = 'moving';
    case STATUS_PAY = 'pay';
    case STATUS_ISSUE = 'issue';
    case STATUS_PAID = 'paid';
    case STATUS_ISSUED = 'issued';
    case STATUS_RECEIVED = 'received';

    public function title(): string
    {
        return match ($this) {
            self::STATUS_DRAFT => 'Черновик',

            self::STATUS_FINALIZE => 'Доработать',
            self::STATUS_FINALIZE_ONE_TWO => 'Доработать 1/2',
            self::STATUS_FINALIZE_TWO_TWO => 'Доработать 2/2',

            self::STATUS_APPROVE => 'Согласовать',

            self::STATUS_AGREE_ONE_TWO => 'Согласовать 1/2',
            self::STATUS_AGREE_TWO_TWO => 'Согласовать 2/2',

            self::STATUS_SENT => 'Отправлен',
            self::STATUS_MOVING => 'Перемещение',
            self::STATUS_PAY => 'Оплатить',
            self::STATUS_ISSUE => 'Выдать',
            self::STATUS_PAID => 'Оплачен',
            self::STATUS_ISSUED => 'Выдано',
            self::STATUS_RECEIVED => 'Получено'
        };
    }

    public static function values(): array
    {
        return array_column(self::cases(), 'value');
    }

    public function getLabel(): ?string
    {
        return match ($this) {
            self::STATUS_DRAFT => 'Черновик',

            self::STATUS_FINALIZE => 'Доработать',
            self::STATUS_FINALIZE_ONE_TWO => 'Доработать 1/2',
            self::STATUS_FINALIZE_TWO_TWO => 'Доработать 2/2',

            self::STATUS_APPROVE => 'Согласовать',

            self::STATUS_AGREE_ONE_TWO => 'Согласовать 1/2',
            self::STATUS_AGREE_TWO_TWO => 'Согласовать 2/2',

            self::STATUS_SENT => 'Отправлен',
            self::STATUS_MOVING => 'Перемещение',
            self::STATUS_PAY => 'Оплатить',
            self::STATUS_ISSUE => 'Выдать',
            self::STATUS_PAID => 'Оплачен',
            self::STATUS_ISSUED => 'Выдано',
            self::STATUS_RECEIVED => 'Получено'
        };
    }

}