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

  1. Click Add Station
  2. Fill: 3-letter code (e.g. ADD), name, city, country code, lat/lng, timezone
  3. Toggle operational status and save
  1. Click Edit on any row to update fields
  2. 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

  1. Click Add Train
  2. Fill: unique number, name, operator, description, status
  3. Save, then assign coaches
  1. Click Edit to update details or change status
  2. 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

  1. Click Add Coach
  2. Fill: number, coach type, arrangement (e.g. 2+2), capacity, status
  3. Auto-generate seats from arrangement or configure manually
  1. Update arrangement (limited if seats are occupied)
  2. 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

  1. Select a coach from the dropdown
  2. Color-coded grid: Green=Available Β· Yellow=Held Β· Blue=Booked Β· Red=Blocked
  1. Click a seat β†’ Block with reason (Maintenance, Reserved, Damaged)
  2. Optionally set an expiry date; click Unblock to release
  1. Select multiple seats via checkboxes for bulk status changes
  2. 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 Regular350 ETB0 ETB5 ETB355 ETB
Economy Bed490 ETB50 ETB10 ETB550 ETB
VIP Bed630 ETB150 ETB15 ETB795 ETB

🏷️ How-To: Manage Seat Classes

  1. Click Add Class
  2. Fill: name, coach type, base fare (ETB), premium fee, insurance fee
  3. 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

  1. Click Add Route
  2. Fill: code (e.g. ADD-DJI), name, effective dates, active status
  3. Add stops: select station, enter distance from previous stop
  1. Reorder stops via drag-and-drop; update distances
  2. 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

  1. Click Create Schedule
  2. Select train, route, departure/arrival date-time
  3. Assign coaches (order matters for position numbers)
  1. Click Bulk Generate
  2. Set train, route, start date/time, duration (hrs), repeat interval (days), and period (days)
  3. Preview count then click Generate Schedules
  1. Edit departure/arrival times, status, or coach assignments
  2. Delete cascades to seat holds and live status records
  3. Bulk-select rows for multi-delete
); }