Files
portal-api/database/seeders/DomainProductSeeder.php
baodev0 6bb4a47bfb Add stubs for various Laravel components and scaffolding
- 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.
2026-05-29 09:28:08 +07:00

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.');
}
}