- Created stubs for JavaScript and SASS assets. - Added stubs for channel, command, component, controller, event, factory, job, listener, mail, middleware, migration, model, notification, observer, policy, request, resource, route provider, seeder, and validation rule. - Implemented scaffolding for configuration, service provider, and Vite integration. - Included example views for module structure. - Introduced a module loader for Vite to handle asset paths dynamically.
118 lines
3.5 KiB
PHP
118 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Product;
|
|
use App\Models\ProductCategories;
|
|
use App\Models\ProductPricings;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class DomainProductSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$domainCategory = ProductCategories::withTrashed()->firstOrNew([
|
|
'slug' => 'domain',
|
|
]);
|
|
|
|
$domainCategory->fill([
|
|
'name' => 'Domain',
|
|
'parent_id' => null,
|
|
'is_active' => true,
|
|
'sort_order' => 6,
|
|
'type' => 'domain',
|
|
]);
|
|
|
|
$domainCategory->save();
|
|
|
|
if ($domainCategory->trashed()) {
|
|
$domainCategory->restore();
|
|
}
|
|
|
|
$products = [
|
|
[
|
|
'name' => 'Ten mien .vn',
|
|
'slug' => 'domain-vn',
|
|
'extension' => '.vn',
|
|
'price' => 650000,
|
|
'price_sale' => 600000,
|
|
'sort_order' => 1,
|
|
],
|
|
[
|
|
'name' => 'Ten mien .com',
|
|
'slug' => 'domain-com',
|
|
'extension' => '.com',
|
|
'price' => 350000,
|
|
'price_sale' => 320000,
|
|
'sort_order' => 2,
|
|
],
|
|
[
|
|
'name' => 'Ten mien .com.vn',
|
|
'slug' => 'domain-com-vn',
|
|
'extension' => '.com.vn',
|
|
'price' => 550000,
|
|
'price_sale' => 500000,
|
|
'sort_order' => 3,
|
|
],
|
|
[
|
|
'name' => 'Ten mien .net',
|
|
'slug' => 'domain-net',
|
|
'extension' => '.net',
|
|
'price' => 400000,
|
|
'price_sale' => 360000,
|
|
'sort_order' => 4,
|
|
],
|
|
[
|
|
'name' => 'Ten mien .io.vn',
|
|
'slug' => 'domain-io-vn',
|
|
'extension' => '.io.vn',
|
|
'price' => 120000,
|
|
'price_sale' => 100000,
|
|
'sort_order' => 5,
|
|
],
|
|
];
|
|
|
|
foreach ($products as $productData) {
|
|
$product = Product::withTrashed()->firstOrNew([
|
|
'slug' => $productData['slug'],
|
|
]);
|
|
|
|
$product->fill([
|
|
'name' => $productData['name'],
|
|
'short_description' => "Dang ky ten mien {$productData['extension']}",
|
|
'description' => "<p>Dang ky va gia han ten mien {$productData['extension']} hang nam.</p>",
|
|
'thumbnail' => '/images/domain/domain.png',
|
|
'stock' => null,
|
|
'is_unlimited' => true,
|
|
'is_active' => true,
|
|
'sort_order' => $productData['sort_order'],
|
|
'product_categories_id' => $domainCategory->id,
|
|
'published_at' => now(),
|
|
]);
|
|
|
|
$product->save();
|
|
|
|
if ($product->trashed()) {
|
|
$product->restore();
|
|
}
|
|
|
|
ProductPricings::updateOrCreate(
|
|
[
|
|
'product_id' => $product->id,
|
|
'billing_cycle' => 'annually',
|
|
],
|
|
[
|
|
'price' => $productData['price'],
|
|
'price_sale' => $productData['price_sale'],
|
|
'currency' => 'VND',
|
|
'is_active' => true,
|
|
]
|
|
);
|
|
|
|
$this->command?->info("Seeded domain product: {$product->name}");
|
|
}
|
|
|
|
$this->command?->info('Domain products seeding completed.');
|
|
}
|
|
}
|