This commit is contained in:
pbao9
2026-01-29 15:52:23 +07:00
parent d2532bcddd
commit 73c5b6752f
15 changed files with 598 additions and 314 deletions
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Enums\Product;
enum ProductTypeEnums: string
{
case VPS = 'vps';
case HOSTING = 'hosting';
case CLOUD = 'cloud';
case EMAIL = 'email';
case SSL = 'ssl';
case DOMAIN = 'domain';
case WEB_DESIGN = 'web design';
public function label(): string
{
return match ($this) {
self::VPS => 'VPS',
self::HOSTING => 'Hosting',
self::CLOUD => 'Cloud',
self::EMAIL => 'Email',
self::SSL => 'SSL',
self::DOMAIN => 'Domain',
self::WEB_DESIGN => 'Web Design',
};
}
public function color(): string
{
return match ($this) {
self::VPS => 'blue',
self::HOSTING => 'green',
self::CLOUD => 'cyan',
self::EMAIL => 'yellow',
self::SSL => 'teal',
self::DOMAIN => 'purple',
self::WEB_DESIGN => 'pink',
};
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace App\Models;
use App\Traits\HasUuid;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory, HasUuid;
protected array $uuidColumns = ['uuid'];
protected string $slugColumn = 'name';
protected $fillable = [
'name',
'slug',
'description',
'price',
'price_sale',
'billing_cycle',
'cpu',
'ram',
'gpu',
'disk',
'bandwidth',
'is_active',
'sort_order',
];
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class ProductVMTemplates extends Model
{
use HasFactory;
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class VirtualMachines extends Model
{
use HasFactory;
}
+26
View File
@@ -0,0 +1,26 @@
<?php
namespace App\Traits;
use Illuminate\Support\Str;
trait HasUuid
{
protected static function bootHasUuid(): void
{
static::creating(function ($model) {
foreach ($model->getUuidColumns() as $column) {
if (empty($model->{$column})) {
$model->{$column} = (string) Str::uuid();
}
}
});
}
public function getUuidColumns(): array
{
return property_exists($this, 'uuidColumns')
? $this->uuidColumns
: ['uuid'];
}
}