From 554f1837e14eb8b9e25ccf22065bf10085f62ac0 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 28 Mar 2025 12:20:33 -0500 Subject: [PATCH 1/3] Nominations ensembles - allow for utility Controller --- .../MeobdaNominationAdminUtilitiesController.php | 13 +++++++++++++ .../NominationAdminUtilitiesController.php | 8 ++++++++ .../ScobdaNominationAdminUtilitiesController.php | 13 +++++++++++++ app/Providers/NominationEnsembleServiceProvider.php | 5 +++++ routes/nominationEnsemble.php | 2 ++ 5 files changed, 41 insertions(+) create mode 100644 app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php create mode 100644 app/Http/Controllers/NominationEnsembles/NominationAdminUtilitiesController.php create mode 100644 app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminUtilitiesController.php diff --git a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php new file mode 100644 index 0000000..e5b7308 --- /dev/null +++ b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php @@ -0,0 +1,13 @@ +app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); $this->app->bind(NominationExportController::class, ScobdaNominationExportController::class); + $this->app->bind(NominationAdminUtilitiesController::class, ScobdaNominationAdminUtilitiesController::class); } if (auditionSetting('nomination_ensemble_rules') === 'meobda') { @@ -49,6 +53,7 @@ class NominationEnsembleServiceProvider extends ServiceProvider $this->app->bind(NominationAdminController::class, MeobdaNominationAdminController::class); $this->app->bind(NominationSeatingController::class, MeobdaNominationSeatingController::class); $this->app->bind(NominationExportController::class, MeobdaNominationExportController::class); + $this->app->bind(NominationAdminUtilitiesController::class, MeobdaNominationAdminUtilitiesController::class); } } } diff --git a/routes/nominationEnsemble.php b/routes/nominationEnsemble.php index 45a6e51..d64e2d2 100644 --- a/routes/nominationEnsemble.php +++ b/routes/nominationEnsemble.php @@ -1,6 +1,7 @@ prefix('nomination/admin/')->group(function () { + Route::any('/utilities/{action}', NominationAdminUtilitiesController::class); Route::get('export', NominationExportController::class)->name('nomination.admin.export'); Route::prefix('ensemble/')->controller(NominationEnsembleController::class)->group(function () { Route::get('/', 'index')->name('nomination.admin.ensemble.index'); From e359ada0b05c8164c3b31f539e890e2ae50fd0cc Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 28 Mar 2025 12:25:03 -0500 Subject: [PATCH 2/3] Nominations ensembles - allow for utility Controller --- .../MeobdaNominationAdminUtilitiesController.php | 2 +- .../NominationEnsembles/NominationAdminUtilitiesController.php | 2 +- .../ScobdaNominationAdminUtilitiesController.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php index e5b7308..9a8a02e 100644 --- a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php +++ b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; class MeobdaNominationAdminUtilitiesController extends Controller implements NominationAdminUtilitiesController { - public function __invoke() + public function __invoke(string $action) { // TODO: Implement __invoke() method. } diff --git a/app/Http/Controllers/NominationEnsembles/NominationAdminUtilitiesController.php b/app/Http/Controllers/NominationEnsembles/NominationAdminUtilitiesController.php index be8209b..a454d40 100644 --- a/app/Http/Controllers/NominationEnsembles/NominationAdminUtilitiesController.php +++ b/app/Http/Controllers/NominationEnsembles/NominationAdminUtilitiesController.php @@ -4,5 +4,5 @@ namespace App\Http\Controllers\NominationEnsembles; interface NominationAdminUtilitiesController { - public function __invoke(); + public function __invoke(string $action); } diff --git a/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminUtilitiesController.php b/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminUtilitiesController.php index 5e9d3f4..de9e3e8 100644 --- a/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminUtilitiesController.php +++ b/app/Http/Controllers/NominationEnsembles/ScobdaNominationAdminUtilitiesController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; class ScobdaNominationAdminUtilitiesController extends Controller implements NominationAdminUtilitiesController { - public function __invoke() + public function __invoke(string $action) { // TODO: Implement __invoke() method. } From 9db864a9098a4087ed436f150d4b0d16b94572ed Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 28 Mar 2025 14:18:39 -0500 Subject: [PATCH 3/3] Nominations ensembles - print stand name tags for MEOBDA --- ...obdaNominationAdminUtilitiesController.php | 70 ++++++++++++++++++- .../meobda/admin/seating.blade.php | 5 ++ routes/nominationEnsemble.php | 3 +- 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php index 9a8a02e..7afda35 100644 --- a/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php +++ b/app/Http/Controllers/NominationEnsembles/MeobdaNominationAdminUtilitiesController.php @@ -3,11 +3,79 @@ namespace App\Http\Controllers\NominationEnsembles; use App\Http\Controllers\Controller; +use App\Models\NominationEnsembleEntry; +use Codedge\Fpdf\Fpdf\Fpdf; class MeobdaNominationAdminUtilitiesController extends Controller implements NominationAdminUtilitiesController { public function __invoke(string $action) { - // TODO: Implement __invoke() method. + match ($action) { + 'name_tags' => $this->printNameTags(), + default => $this->invalidAction(), + }; + } + + private function printNameTags() + { + $pdf = new Fpdf('P', 'in', 'letter'); + $pdf->SetFont('Arial', 'B', 36); + + $nominations = NominationEnsembleEntry::with('ensemble') + ->with('student.school') + ->orderBy('nomination_ensemble_id') + ->orderBy('data->split') + ->orderBy('data->instrument') + ->orderByRaw('CAST(data->"$.seat" AS UNSIGNED)') + ->get(); + + // echo ''; + // foreach ($nominations as $nomination) { + // if (! isset($nomination->data['split'])) { + // $temp = $nomination->data; + // $temp['split'] = '---'; + // $nomination->data = $temp; + // } + // if (! isset($nomination->data['seat'])) { + // $temp = $nomination->data; + // $temp['seat'] = '---'; + // $nomination->data = $temp; + // } + // echo ''; + // echo ''; + // echo ''; + // echo ''; + // echo ''; + // echo ''; + // echo ''; + // echo ''; + // } + // echo '
EnsembleSplitInstrumentSeatNameSchool
'.$nomination->ensemble->name.''.$nomination->data['split'] ?? 'none'.''.$nomination->data['instrument'].''.$nomination->data['seat'].''.$nomination->student->full_name().''.$nomination->student->school->name.'
'; + + foreach ($nominations as $nomination) { + if (! isset($nomination->data['split'])) { + $temp = $nomination->data; + $temp['split'] = '---'; + $nomination->data = $temp; + } + if (! isset($nomination->data['seat'])) { + $temp = $nomination->data; + $temp['seat'] = '---'; + $nomination->data = $temp; + } + $pdf->AddPage(); + $pdf->SetY('6'); + $pdf->Cell(0, .8, $nomination->student->full_name(), 0, 1, 'C'); + $pdf->Cell(0, .8, $nomination->student->school->name, 0, 1, 'C'); + $pdf->Cell(0, .8, $nomination->data['split'], 0, 1, 'C'); + $pdf->Cell(0, .8, $nomination->data['instrument'].' - '.$nomination->data['seat'], 0, 1, 'C'); + + } + $pdf->Output('D', 'StandNameTags.pdf'); + } + + private function invalidAction() + { + return redirect()->back()->with('error', 'Invalid Action'); } } diff --git a/resources/views/nomination_ensembles/meobda/admin/seating.blade.php b/resources/views/nomination_ensembles/meobda/admin/seating.blade.php index 49b4222..0655ecd 100644 --- a/resources/views/nomination_ensembles/meobda/admin/seating.blade.php +++ b/resources/views/nomination_ensembles/meobda/admin/seating.blade.php @@ -19,6 +19,11 @@ Export Nominations

+

+ + Print Stand Name Tags + +

diff --git a/routes/nominationEnsemble.php b/routes/nominationEnsemble.php index d64e2d2..5984f94 100644 --- a/routes/nominationEnsemble.php +++ b/routes/nominationEnsemble.php @@ -10,7 +10,8 @@ use App\Http\Middleware\CheckIfAdmin; use Illuminate\Support\Facades\Route; Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('nomination/admin/')->group(function () { - Route::any('/utilities/{action}', NominationAdminUtilitiesController::class); + Route::match(['get', 'post'], '/utilities/{action}', + NominationAdminUtilitiesController::class)->name('nomination.admin.utilities'); Route::get('export', NominationExportController::class)->name('nomination.admin.export'); Route::prefix('ensemble/')->controller(NominationEnsembleController::class)->group(function () { Route::get('/', 'index')->name('nomination.admin.ensemble.index');