From ee7cb96d0365307dd7e43f993694d648b558ef17 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Wed, 31 Dec 2025 21:28:57 -0600 Subject: [PATCH] Rename AuditionedEnsemble to Ensemble --- .../Admin/AuditionEtudeController.php | 10 +-- .../Admin/AuditionEtudeGridController.php | 5 +- app/Http/Controllers/EtudesController.php | 6 +- app/Http/Requests/EtudeUploadRequest.php | 8 +-- app/Models/AuditionEtude.php | 6 +- .../{AuditionedEnsemble.php => Ensemble.php} | 4 +- app/Services/AuditionEtudeService.php | 6 +- ...uditioned_ensembles_table_to_ensembles.php | 61 +++++++++++++++++++ ...dEnsembleSeeder.php => EnsembleSeeder.php} | 7 +-- 9 files changed, 87 insertions(+), 26 deletions(-) rename app/Models/{AuditionedEnsemble.php => Ensemble.php} (71%) create mode 100644 database/migrations/2026_01_01_015339_rename_auditioned_ensembles_table_to_ensembles.php rename database/seeders/{AuditionedEnsembleSeeder.php => EnsembleSeeder.php} (69%) diff --git a/app/Http/Controllers/Admin/AuditionEtudeController.php b/app/Http/Controllers/Admin/AuditionEtudeController.php index 96dfe45..8fcc886 100644 --- a/app/Http/Controllers/Admin/AuditionEtudeController.php +++ b/app/Http/Controllers/Admin/AuditionEtudeController.php @@ -4,8 +4,8 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\EtudeUploadRequest; -use App\Models\AuditionedEnsemble; use App\Models\AuditionEtude; +use App\Models\Ensemble; use App\Models\Instrument; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; @@ -28,7 +28,7 @@ class AuditionEtudeController extends Controller public function create() { $instruments = Instrument::orderBy('score_order')->get(); - $ensembles = AuditionedEnsemble::all(); + $ensembles = Ensemble::all(); return view('admin.audition_etude.create', [ 'instruments' => $instruments, @@ -42,7 +42,7 @@ class AuditionEtudeController extends Controller public function store(EtudeUploadRequest $request) { $instrument = Instrument::find($request->instrument_id); - $ensemble = AuditionedEnsemble::find($request->auditioned_ensemble_id); + $ensemble = Ensemble::find($request->ensemble_id); $filename = $ensemble->name.' '.$instrument->instrument.' Set '.$request->set.'.pdf'; $filename = str_replace(' ', '_', $filename); @@ -52,7 +52,7 @@ class AuditionEtudeController extends Controller AuditionEtude::create([ 'instrument_id' => $request->instrument_id, - 'auditioned_ensemble_id' => $request->auditioned_ensemble_id, + 'ensemble_id' => $request->ensemble_id, 'set' => $request->set, 'file_path' => $path, 'original_filename' => $originalFilename, @@ -61,7 +61,7 @@ class AuditionEtudeController extends Controller session([ 'previous_instrument_id' => $request->instrument_id, - 'previous_auditioned_ensemble_id' => $request->auditioned_ensemble_id, + 'previous_ensemble_id' => $request->ensemble_id, 'previous_set' => $request->set, ]); diff --git a/app/Http/Controllers/Admin/AuditionEtudeGridController.php b/app/Http/Controllers/Admin/AuditionEtudeGridController.php index 392d6b4..fbb1027 100644 --- a/app/Http/Controllers/Admin/AuditionEtudeGridController.php +++ b/app/Http/Controllers/Admin/AuditionEtudeGridController.php @@ -3,15 +3,16 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; -use App\Models\AuditionedEnsemble; +use App\Models\Ensemble; use App\Models\Instrument; class AuditionEtudeGridController extends Controller { public function index() { - $ensembles = AuditionedEnsemble::all(); + $ensembles = Ensemble::all(); $instruments = Instrument::orderBy('score_order')->get(); + return view('admin.audition_etude.grid', compact('ensembles', 'instruments')); } } diff --git a/app/Http/Controllers/EtudesController.php b/app/Http/Controllers/EtudesController.php index 9ab8e37..b1a8879 100644 --- a/app/Http/Controllers/EtudesController.php +++ b/app/Http/Controllers/EtudesController.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers; -use App\Models\AuditionedEnsemble; +use App\Models\Ensemble; use App\Models\Instrument; use App\Services\AuditionEtudeService; @@ -10,7 +10,7 @@ class EtudesController extends Controller { public function __invoke(AuditionEtudeService $service) { - $ensembles = AuditionedEnsemble::all(); + $ensembles = Ensemble::all(); $instruments = Instrument::has('etudes')->withCount('etudes')->get(); $schoolYear = $service->getActiveSchoolYear(); $currentSet = []; @@ -23,6 +23,6 @@ class EtudesController extends Controller ->get()->keyBy('instrument_id'); } - return view('etudes', compact('ensembles', 'schoolYear', 'currentSet', 'instruments','etudes')); + return view('etudes', compact('ensembles', 'schoolYear', 'currentSet', 'instruments', 'etudes')); } } diff --git a/app/Http/Requests/EtudeUploadRequest.php b/app/Http/Requests/EtudeUploadRequest.php index 632517f..760cc2a 100644 --- a/app/Http/Requests/EtudeUploadRequest.php +++ b/app/Http/Requests/EtudeUploadRequest.php @@ -2,7 +2,7 @@ namespace App\Http\Requests; -use App\Models\AuditionedEnsemble; +use App\Models\Ensemble; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; @@ -25,18 +25,18 @@ class EtudeUploadRequest extends FormRequest { return [ - 'auditioned_ensemble_id' => ['required', 'exists:auditioned_ensembles,id'], + 'ensemble_id' => ['required', 'exists:ensembles,id'], 'instrument_id' => ['required', 'exists:instruments,id'], 'set' => [ 'required', 'numeric', 'min:1', Rule::unique('audition_etudes') - ->where('auditioned_ensemble_id', $this->auditioned_ensemble_id) + ->where('ensemble_id', $this->ensemble_id) ->where('instrument_id', $this->instrument_id), function ($attribute, $value, $fail) { /** @noinspection PhpUndefinedFieldInspection */ - $ensemble = AuditionedEnsemble::find($this->auditioned_ensemble_id); + $ensemble = Ensemble::find($this->ensemble_id); if ($ensemble && $value > $ensemble->set_count) { $fail("The set number cannot exceed {$ensemble->set_count} for this ensemble."); } diff --git a/app/Models/AuditionEtude.php b/app/Models/AuditionEtude.php index 6156624..f97b39b 100644 --- a/app/Models/AuditionEtude.php +++ b/app/Models/AuditionEtude.php @@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; class AuditionEtude extends Model { protected $fillable = [ - 'instrument_id', 'auditioned_ensemble_id', 'set', 'original_filename', 'file_path', 'file_size', + 'instrument_id', 'ensemble_id', 'set', 'original_filename', 'file_path', 'file_size', ]; public function instrument(): BelongsTo @@ -17,9 +17,9 @@ class AuditionEtude extends Model return $this->belongsTo(Instrument::class); } - public function auditionedEnsemble(): BelongsTo + public function ensemble(): BelongsTo { - return $this->belongsTo(AuditionedEnsemble::class); + return $this->belongsTo(Ensemble::class); } protected function humanReadableFileSize(): Attribute diff --git a/app/Models/AuditionedEnsemble.php b/app/Models/Ensemble.php similarity index 71% rename from app/Models/AuditionedEnsemble.php rename to app/Models/Ensemble.php index 734a988..42665d0 100644 --- a/app/Models/AuditionedEnsemble.php +++ b/app/Models/Ensemble.php @@ -5,7 +5,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; -class AuditionedEnsemble extends Model +class Ensemble extends Model { protected $fillable = [ 'name', 'set_count', @@ -13,6 +13,6 @@ class AuditionedEnsemble extends Model public function etudes(): HasMany { - return $this->hasMany(AuditionEtude::class); + return $this->hasMany(AuditionEtude::class, 'ensemble_id'); } } diff --git a/app/Services/AuditionEtudeService.php b/app/Services/AuditionEtudeService.php index acbfc10..d39959d 100644 --- a/app/Services/AuditionEtudeService.php +++ b/app/Services/AuditionEtudeService.php @@ -2,7 +2,7 @@ namespace App\Services; -use App\Models\AuditionedEnsemble; +use App\Models\Ensemble; use Carbon\Carbon; readonly class AuditionEtudeService @@ -62,14 +62,14 @@ readonly class AuditionEtudeService * Sets rotate annually based on the ensemble's set count. * The rotation is calculated from the configured start year. * - * @param AuditionedEnsemble $ensemble The ensemble to get the set for + * @param Ensemble $ensemble The ensemble to get the set for * @param int|null $year Optional year. Defaults to current audition year. * @return int The set number (1 to ensemble's set_count) * * @example * getSetForEnsemble($ensemble, 2024) // Returns the set number for 2024 */ - public function getSetForEnsemble(AuditionedEnsemble $ensemble, ?int $year = null): int + public function getSetForEnsemble(Ensemble $ensemble, ?int $year = null): int { $year = $year ?? $this->getCurrentAuditionYear(); $setCount = $ensemble->set_count; diff --git a/database/migrations/2026_01_01_015339_rename_auditioned_ensembles_table_to_ensembles.php b/database/migrations/2026_01_01_015339_rename_auditioned_ensembles_table_to_ensembles.php new file mode 100644 index 0000000..2038ce2 --- /dev/null +++ b/database/migrations/2026_01_01_015339_rename_auditioned_ensembles_table_to_ensembles.php @@ -0,0 +1,61 @@ +dropForeign(['auditioned_ensemble_id']); + + // Rename the column + $table->renameColumn('auditioned_ensemble_id', 'ensemble_id'); + }); + + // Re-add the foreign key constraint with the new name + Schema::table('audition_etudes', function (Blueprint $table) { + $table->foreign('ensemble_id') + ->references('id') + ->on('ensembles') + ->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // Drop the foreign key before renaming + Schema::table('audition_etudes', function (Blueprint $table) { + $table->dropForeign(['ensemble_id']); + }); + + // Rename the column back + Schema::table('audition_etudes', function (Blueprint $table) { + $table->renameColumn('ensemble_id', 'auditioned_ensemble_id'); + }); + + // Rename the table back to auditioned_ensembles + Schema::rename('ensembles', 'auditioned_ensembles'); + + // Re-add the original foreign key + Schema::table('audition_etudes', function (Blueprint $table) { + $table->foreign('auditioned_ensemble_id') + ->references('id') + ->on('auditioned_ensembles') + ->cascadeOnDelete(); + }); + } +}; diff --git a/database/seeders/AuditionedEnsembleSeeder.php b/database/seeders/EnsembleSeeder.php similarity index 69% rename from database/seeders/AuditionedEnsembleSeeder.php rename to database/seeders/EnsembleSeeder.php index 2ffde4d..f47171c 100644 --- a/database/seeders/AuditionedEnsembleSeeder.php +++ b/database/seeders/EnsembleSeeder.php @@ -2,11 +2,10 @@ namespace Database\Seeders; -use App\Models\AuditionedEnsemble; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use App\Models\Ensemble; use Illuminate\Database\Seeder; -class AuditionedEnsembleSeeder extends Seeder +class EnsembleSeeder extends Seeder { /** * Run the database seeds. @@ -19,6 +18,6 @@ class AuditionedEnsembleSeeder extends Seeder ['name' => 'Seventh Grade', 'set_count' => 1], ['name' => 'Jazz', 'set_count' => 3], ]; - AuditionedEnsemble::insert($defaults); + Ensemble::insert($defaults); } }