Form booking với date range, room type, guests, conflict detection và price calculation. Tổng hợp Date Validation + Interval Overlap + Decision Table + Boundary.
Form đặt phòng khách sạn với date range picker, chọn loại phòng và số lượng khách. Bài này tổng hợp date validation + conflict detection + price calculation.
2026-04-27 — dùng làm mốc cho check-in (không cho phép check-in trong quá khứ).
Loại phòng (room types):
| Loại | Giá / đêm | Số khách tối đa |
|---|---|---|
| Standard | 800,000 VND | 2 |
| Deluxe | 1,500,000 VND | 3 |
| Suite | 2,800,000 VND | 4 |
Phòng đã được đặt (cannot conflict) — ngày được tính động theo today (today + N ngày):
→ (3 đêm) — today + 13 đến today + 16 → (3 đêm) — today + 23 đến today + 26 → (3 đêm) — today + 35 đến today + 38Ngày check-out của booking cũ có thể trùng với check-in của booking mới (back-to-back booking OK).
| # | Tên | Loại Control | Bắt Buộc | Mô Tả |
|---|---|---|---|---|
| 1 | Check-in date | Date picker | Yes |
|
| 2 | Check-out date | Date picker | Yes |
|
| 3 | Room type | Radio | Yes | 3 lựa chọn: Standard / Deluxe / Suite. Mỗi loại có giá và max guests khác nhau. |
| 4 | Guests | Number input | Yes |
|
| 5 | Conflict check | Auto | — |
|
| 6 | Total calculation | Auto | — |
|
| 7 | Book button | Button | — | Validate tất cả và xác nhận đặt phòng nếu thỏa mãn. |
| Trường hợp | Message |
|---|---|
| Check-in rỗng | Please select check-in date |
| Check-out rỗng | Please select check-out date |
| Check-in trong quá khứ | Check-in date cannot be in the past |
| Check-out ≤ check-in | Check-out date must be after check-in date |
| Quá 30 đêm | Maximum stay is 30 nights |
| Guests vượt quá max của room | Maximum N guests for this room type (N theo room) |
| Conflict với booking khác | Selected dates conflict with an existing booking |
| Chưa chọn room type | Please select a room type |
| Thành công | Booking confirmed: N nights, total X VND |
→ bao trọn Booking #1. → nằm trong Booking #1. → . → .05-01 → check-out 05-04 = bao nhiêu đêm? (3 đêm — đếm số ngày diff).Form thực hành chỉ dành cho học viên đã đăng nhập.
Tab này chứa danh sách các lỗi đã cài cắm trong form. Vui lòng nhập mã giảng viên để mở khóa. Mã sẽ ghi nhớ trong phiên làm việc — chỉ cần nhập 1 lần cho cả 3 bài.