feat(enum): membuat enum terkait dengan order

This commit is contained in:
Yoga Pangestu 2025-10-27 19:22:22 +07:00
parent 2819750fbf
commit 2537b64e6d
4 changed files with 159 additions and 0 deletions

View File

@ -0,0 +1,45 @@
<?php
namespace App\Enums;
use App\Traits\WithCommentEnum;
use App\Traits\WithValueEnum;
enum OrderChannel: int
{
use WithCommentEnum, WithValueEnum;
case OUTLET = 1;
case SHOPEE = 2;
case TOKOPEDIA = 3;
case WEBSITE = 4;
case INSTAGRAM = 5;
case WHATSAPP = 6;
case OTHER = 7;
public function label(): string
{
return match ($this) {
self::OUTLET => 'Outlet',
self::SHOPEE => 'Shopee',
self::TOKOPEDIA => 'Tokopedia',
self::WEBSITE => 'Website',
self::INSTAGRAM => 'Instagram',
self::WHATSAPP => 'WhatsApp',
self::OTHER => 'Lainnya',
};
}
public function color(): string
{
return match ($this) {
self::OUTLET => 'emerald',
self::SHOPEE => 'orange',
self::TOKOPEDIA => 'green',
self::WEBSITE => 'blue',
self::INSTAGRAM => 'pink',
self::WHATSAPP => 'lime',
self::OTHER => 'gray',
};
}
}

42
app/Enums/OrderStatus.php Normal file
View File

@ -0,0 +1,42 @@
<?php
namespace App\Enums;
use App\Traits\WithCommentEnum;
use App\Traits\WithValueEnum;
enum OrderStatus: int
{
use WithCommentEnum, WithValueEnum;
case DRAFT = 1;
case PENDING = 2;
case PARTIAL = 3;
case PAID = 4;
case OVERDUE = 5;
case CANCELED = 6;
public function label(): string
{
return match ($this) {
self::DRAFT => 'Draft',
self::PENDING => 'Menunggu Pembayaran',
self::PARTIAL => 'Belum Lunas',
self::PAID => 'Lunas',
self::OVERDUE => 'Terlambat Bayar',
self::CANCELED => 'Dibatalkan',
};
}
public function color(): string
{
return match ($this) {
self::DRAFT => 'gray',
self::PENDING => 'blue',
self::PARTIAL => 'amber',
self::PAID => 'emerald',
self::OVERDUE => 'red',
self::CANCELED => 'zinc',
};
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Enums;
use App\Traits\WithCommentEnum;
use App\Traits\WithValueEnum;
enum PaymentMethod: int
{
use WithCommentEnum, WithValueEnum;
case CASH = 1;
case TRANSFER = 2;
case QRIS = 3;
case OTHER = 4;
public function label(): string
{
return match ($this) {
self::CASH => 'Tunai',
self::TRANSFER => 'Transfer Bank',
self::QRIS => 'QRIS',
self::OTHER => 'Lainnya',
};
}
public function color(): string
{
return match ($this) {
self::CASH => 'emerald',
self::TRANSFER => 'blue',
self::QRIS => 'purple',
self::OTHER => 'gray',
};
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace App\Enums;
use App\Traits\WithCommentEnum;
use App\Traits\WithValueEnum;
enum PaymentStatus: string
{
use WithCommentEnum, WithValueEnum;
case PENDING = 'pending';
case PAID = 'paid';
case FAILED = 'failed';
case REFUNDED = 'refunded';
public function label(): string
{
return match ($this) {
self::PENDING => 'Menunggu Pembayaran',
self::PAID => 'Berhasil Dibayar',
self::FAILED => 'Gagal',
self::REFUNDED => 'Dikembalikan',
};
}
public function color(): string
{
return match ($this) {
self::PENDING => 'amber',
self::PAID => 'emerald',
self::FAILED => 'red',
self::REFUNDED => 'gray',
};
}
}