import { HowToStep } from './_shared';
const li = 'text-sm text-slate-700 dark:text-slate-300';
const ol = 'list-decimal pl-5 space-y-1 ' + li;
export default function MasterDataSection() {
return (
<>
{/* STATIONS */}
π Stations
Configure railway stations with code, city, country, coordinates, and operational status. Access level: Supervisor, Admin.
π How-To: Manage Stations
- Click Add Station
- Fill: 3-letter code (e.g. ADD), name, city, country code, lat/lng, timezone
- Toggle operational status and save
- Click Edit on any row to update fields
- Click Delete β system warns if routes or schedules depend on this station
{/* TRAINS */}
π Trains
Manage the train fleet β number, name, operator, status, and attached coaches. Access level: Supervisor, Admin.
π How-To: Manage Trains
- Click Add Train
- Fill: unique number, name, operator, description, status
- Save, then assign coaches
- Click Edit to update details or change status
- Delete only if no active schedules reference this train
{/* COACHES */}
π Coaches
Manage coach inventory, seat layout, type, and maintenance status. Access level: Supervisor, Admin.
π How-To: Manage Coaches
- Click Add Coach
- Fill: number, coach type, arrangement (e.g. 2+2), capacity, status
- Auto-generate seats from arrangement or configure manually
- Update arrangement (limited if seats are occupied)
- Delete only if no scheduled trips use this coach
{/* SEATS */}
πΊ Seats
View seat maps, update properties, block/unblock seats, and bulk import/export via CSV. Access level: Supervisor, Admin.
πΊ How-To: Manage Seats
- Select a coach from the dropdown
- Color-coded grid: Green=Available Β· Yellow=Held Β· Blue=Booked Β· Red=Blocked
- Click a seat β Block with reason (Maintenance, Reserved, Damaged)
- Optionally set an expiry date; click Unblock to release
- Select multiple seats via checkboxes for bulk status changes
- Use CSV Import to create/update seats in bulk; CSV Export for backup
{/* CLASSES */}
π·οΈ Seat Classes
Define seat class types with base fare, premium fee, and insurance fee. Access level: Supervisor, Admin.
{['Class','Base Fare','Premium','Insurance','Total/Adult'].map(h=>| {h} | )}
| Economy Regular | 350 ETB | 0 ETB | 5 ETB | 355 ETB |
| Economy Bed | 490 ETB | 50 ETB | 10 ETB | 550 ETB |
| VIP Bed | 630 ETB | 150 ETB | 15 ETB | 795 ETB |
π·οΈ How-To: Manage Seat Classes
- Click Add Class
- Fill: name, coach type, base fare (ETB), premium fee, insurance fee
- Toggle active and save β changes apply to new bookings only
{/* ROUTES */}
πΊοΈ Routes
Define routes as ordered station sequences with cumulative distances. Access level: Supervisor, Admin.
πΊοΈ How-To: Manage Routes
- Click Add Route
- Fill: code (e.g. ADD-DJI), name, effective dates, active status
- Add stops: select station, enter distance from previous stop
- Reorder stops via drag-and-drop; update distances
- Remove stops only if no bookings exist on that segment
{/* SCHEDULES */}
π
Schedules
Create individual or bulk-generated trip schedules with coach assignments. Access level: Supervisor, Admin.
π
How-To: Manage Schedules
- Click Create Schedule
- Select train, route, departure/arrival date-time
- Assign coaches (order matters for position numbers)
- Click Bulk Generate
- Set train, route, start date/time, duration (hrs), repeat interval (days), and period (days)
- Preview count then click Generate Schedules
- Edit departure/arrival times, status, or coach assignments
- Delete cascades to seat holds and live status records
- Bulk-select rows for multi-delete
>
);
}