delete(); Customer::query()->delete(); Product::query()->delete(); Project::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' ]); // 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']); } } }