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');