72 lines
2.6 KiB
Markdown
72 lines
2.6 KiB
Markdown
**Đóng vai:** Bạn là chuyên gia Laravel 13.5. **Nhiệm vụ:** Tạo Factories và DatabaseSeeder để sinh dữ liệu mẫu cho hệ thống HQLand (Sử dụng UUID làm khóa chính).
|
|
|
|
**Thực hiện các bước sau:**
|
|
|
|
**Bước 1: Tạo ProjectFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ProjectFactory.php`:
|
|
|
|
- `name`: Tên dự án ngẫu nhiên (VD: "Khu đô thị HQLand Alpha", "Chung cư HQLand Beta").
|
|
|
|
- `type`: Random giữa ['Khu đô thị', 'Chung cư', 'Đất nền phân lô'].
|
|
|
|
- `address`: Địa chỉ ngẫu nhiên.
|
|
|
|
**Bước 2: Tạo ProductFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ProductFactory.php`:
|
|
|
|
- `project_id`: Lấy ngẫu nhiên từ Project::factory().
|
|
|
|
- `product_type`: Random ['LAND', 'APARTMENT'].
|
|
|
|
- `code`: Random mã lô chữ hoa (VD: 'STH-'.fake()->unique()->randomNumber(4)).
|
|
|
|
- `area`: Random float từ 50 đến 200.
|
|
|
|
- `price_per_unit`: Random từ 20 triệu đến 100 triệu.
|
|
|
|
- `total_price`: `area` * `price_per_unit`.
|
|
|
|
- `custom_data`: Trả về mảng JSON tùy theo `product_type`. Nếu LAND: có `frontage`, `road_width`. Nếu APARTMENT: có `block`, `floor`, `view`.
|
|
|
|
- `status`: 'Đang mở bán'.
|
|
|
|
**Bước 3: Tạo CustomerFactory** Chạy lệnh tạo factory và viết code cho `database/factories/CustomerFactory.php`:
|
|
|
|
- `full_name`: fake()->name().
|
|
|
|
- `cmnd_cccd`: fake()->unique()->numerify('0##########').
|
|
|
|
- `phone`: fake()->phoneNumber().
|
|
|
|
- `email`: fake()->safeEmail().
|
|
|
|
- `address`: Trả về mảng JSON gồm `street`, `ward`, `district`, `city`.
|
|
|
|
- `dob`: fake()->date().
|
|
|
|
**Bước 4: Tạo ContractFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ContractFactory.php`:
|
|
|
|
- `product_id`: Product::factory().
|
|
|
|
- `contract_number`: 'HDMB-'.fake()->unique()->randomNumber(5).
|
|
|
|
- `total_value`: Lấy từ total_price của Product tương ứng.
|
|
|
|
- `paid_amount`: Random một số nhỏ hơn total_value.
|
|
|
|
- `contract_type`: 'HĐMB'.
|
|
|
|
- `transfer_order`: 0.
|
|
|
|
**Bước 5: Viết kịch bản tại DatabaseSeeder** Mở file `database/seeders/DatabaseSeeder.php` và viết code vào hàm `run()` để:
|
|
|
|
1. Xóa sạch dữ liệu cũ (nếu có).
|
|
|
|
2. Tạo 1 tài khoản Admin mặc định (email: admin@phuongtc.com, pass: 1Qazxsw2@!321) nếu chưa có.
|
|
|
|
3. Tạo 3 Dự án (Projects).
|
|
|
|
4. Mỗi dự án tạo 15 Sản phẩm (Products).
|
|
|
|
5. Tạo 20 Khách hàng (Customers).
|
|
|
|
6. Lấy 10 Khách hàng đầu tiên, mỗi người tạo 1 Hợp đồng (Contracts) gắn ngẫu nhiên với 10 Sản phẩm khác nhau. (Nhớ attach cả vào bảng trung gian `contract_customers`).
|