Files
hqland-app/dumpdata.md

2.6 KiB

Đó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).