Đóng gói cuối tuần
This commit is contained in:
@@ -3,10 +3,6 @@
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\Project;
|
||||
use App\Models\Product;
|
||||
use App\Models\Customer;
|
||||
use App\Models\Contract;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
@@ -15,95 +11,21 @@ class DatabaseSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
// 1. Xóa sạch dữ liệu cũ
|
||||
// 1. Dọn dẹp an toàn
|
||||
Schema::disableForeignKeyConstraints();
|
||||
Contract::query()->delete();
|
||||
Customer::query()->delete();
|
||||
Product::query()->delete();
|
||||
Project::query()->delete();
|
||||
User::query()->delete();
|
||||
Schema::enableForeignKeyConstraints();
|
||||
|
||||
// 2. Tạo tài khoản Admin mặc định
|
||||
User::updateOrCreate(
|
||||
['email' => 'admin@phuongtc.com'],
|
||||
[
|
||||
'name' => 'Administrator',
|
||||
'password' => Hash::make('1Qazxsw2@!321'),
|
||||
]
|
||||
);
|
||||
|
||||
// 3. Tạo 1 Dự án cố định và 1 Sản phẩm cố định STH-6535 để test
|
||||
$specialProject = Project::factory()->create(['name' => 'Dự án HQLand Center']);
|
||||
$specialProduct = Product::factory()->create([
|
||||
'project_id' => $specialProject->id,
|
||||
'code' => 'STH-6535',
|
||||
'status' => 'Đang mở bán'
|
||||
// 2. Tạo tài khoản quản trị Admin
|
||||
User::create([
|
||||
'name' => 'chanphuong',
|
||||
'email' => 'admin@phuongtc.com',
|
||||
'password' => Hash::make('1Qazxsw2@!321'),
|
||||
]);
|
||||
|
||||
// 4. Tạo thêm các Dự án và Sản phẩm ngẫu nhiên khác
|
||||
Project::factory(2)
|
||||
->has(Product::factory()->count(15), 'products')
|
||||
->create();
|
||||
|
||||
// 5. Tạo 20 Khách hàng
|
||||
Customer::factory(20)->create();
|
||||
|
||||
// 6. Tạo dữ liệu Lịch sử chuyển nhượng cho 10 sản phẩm (bao gồm cả STH-6535)
|
||||
$transferProducts = Product::limit(10)->get();
|
||||
$allCustomers = Customer::all();
|
||||
|
||||
foreach ($transferProducts as $product) {
|
||||
$baseValue = $product->total_price;
|
||||
|
||||
// --- Lần 1: Hợp đồng gốc (Mua từ CĐT) ---
|
||||
$contract1 = Contract::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'contract_type' => 'HĐMB',
|
||||
'transfer_order' => 1,
|
||||
'total_value' => $baseValue,
|
||||
'status' => 'Đã chuyển nhượng',
|
||||
'signing_date' => now()->subYears(2),
|
||||
]);
|
||||
$allCustomers->random()->contracts()->attach($contract1->id, ['role' => 'CHỦ CŨ', 'transfer_order' => 1]);
|
||||
|
||||
// --- Lần 2: Chuyển nhượng F1 ---
|
||||
$valueF1 = $baseValue * 1.1;
|
||||
$contract2 = Contract::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'contract_type' => 'VBCN',
|
||||
'transfer_order' => 2,
|
||||
'total_value' => $valueF1,
|
||||
'status' => 'Đã chuyển nhượng',
|
||||
'signing_date' => now()->subYear(),
|
||||
]);
|
||||
$allCustomers->random()->contracts()->attach($contract2->id, ['role' => 'CHỦ CŨ', 'transfer_order' => 2]);
|
||||
|
||||
// --- Lần 3: Chủ hiện tại (Sở hữu cuối cùng) ---
|
||||
$valueFinal = $valueF1 * 1.1;
|
||||
$contract3 = Contract::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'contract_type' => 'VBCN',
|
||||
'transfer_order' => 0,
|
||||
'total_value' => $valueFinal,
|
||||
'status' => 'Đang hiệu lực',
|
||||
'signing_date' => now(),
|
||||
]);
|
||||
$allCustomers->random()->contracts()->attach($contract3->id, ['role' => 'CHỦ SỞ HỮU', 'transfer_order' => 0]);
|
||||
|
||||
// Cập nhật trạng thái sản phẩm cuối cùng
|
||||
$product->update(['status' => 'Đã bán', 'total_price' => $valueFinal]);
|
||||
}
|
||||
|
||||
// 7. Tạo thêm 5 hợp đồng lẻ cho các sản phẩm còn lại để đa dạng hóa
|
||||
$remainingProducts = Product::where('status', 'Đang mở bán')->inRandomOrder()->limit(5)->get();
|
||||
foreach ($remainingProducts as $product) {
|
||||
$contract = Contract::factory()->create([
|
||||
'product_id' => $product->id,
|
||||
'transfer_order' => 0,
|
||||
'total_value' => $product->total_price,
|
||||
]);
|
||||
$allCustomers->random()->contracts()->attach($contract->id, ['role' => 'CHỦ SỞ HỮU', 'transfer_order' => 0]);
|
||||
$product->update(['status' => 'Đã bán']);
|
||||
}
|
||||
// 3. Gọi bộ nạp dữ liệu Test chuyên sâu
|
||||
$this->call([
|
||||
TestDataSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user