- Npc entity (village spreadsheet columns) + game_notes text field for
the DM's live play notes, plus updated_at touched on every change
- Race / VillageStatus / BloodCartInvolvement / MysteryImportance as
string-backed PHP enums, rendered as dropdowns on the edit form
- /npcs: server-side DataTables (paging, global search and column sort
all run in the backend via NpcRepository::findForDataTable); name cell
links to the edit page, game notes shown truncated
- /npcs/{id}: Bootstrap-themed edit form (all fields + a large game
notes textarea); Symfony forms now use the bootstrap_5 theme
- app.js: generic server-side DataTable wiring driven by data-* on the
<table>/<th> (data-datatable-src, data-row-url, data-format)
- app:npc:import console command - upserts from data/npcs.csv by
(family, name), never overwrites game_notes; --purge / --dry-run
- data/npcs.csv: 180 villagers exported from the working spreadsheet
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
19 lines
383 B
PHP
19 lines
383 B
PHP
<?php
|
|
|
|
namespace App\Enum;
|
|
|
|
enum BloodCartInvolvement: string
|
|
{
|
|
case None = 'None';
|
|
case Donor = 'Donor';
|
|
case OccasionalDonor = 'Occasional donor';
|
|
case BloodCollector = 'Blood collector';
|
|
case BloodCartDriver = 'Blood-cart driver';
|
|
case CouncilOversight = 'Council oversight';
|
|
|
|
public function label(): string
|
|
{
|
|
return $this->value;
|
|
}
|
|
}
|