Nominations ensembles - print stand name tags for MEOBDA

This commit is contained in:
Matt Young 2025-03-28 14:18:39 -05:00
parent e359ada0b0
commit 9db864a909
3 changed files with 76 additions and 2 deletions

View File

@ -3,11 +3,79 @@
namespace App\Http\Controllers\NominationEnsembles; namespace App\Http\Controllers\NominationEnsembles;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\NominationEnsembleEntry;
use Codedge\Fpdf\Fpdf\Fpdf;
class MeobdaNominationAdminUtilitiesController extends Controller implements NominationAdminUtilitiesController class MeobdaNominationAdminUtilitiesController extends Controller implements NominationAdminUtilitiesController
{ {
public function __invoke(string $action) 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 '<table><tr><th>Ensemble</th><th>Split</th><th>Instrument</th><th>Seat</th><th>Name</th><th>School</th></tr>';
// 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 '<tr>';
// echo '<td>'.$nomination->ensemble->name.'</td>';
// echo '<td>'.$nomination->data['split'] ?? 'none'.'</td>';
// echo '<td>'.$nomination->data['instrument'].'</td>';
// echo '<td>'.$nomination->data['seat'].'</td>';
// echo '<td>'.$nomination->student->full_name().'</td>';
// echo '<td>'.$nomination->student->school->name.'</td>';
// echo '</tr>';
// }
// echo '</table>';
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');
} }
} }

View File

@ -19,6 +19,11 @@
Export Nominations Export Nominations
</a> </a>
</p> </p>
<p class="text-md/6 font-semibold text-gray-800 mb-3 mt-3">
<a href="{{ route('nomination.admin.utilities',['action'=>'name_tags']) }}">
Print Stand Name Tags
</a>
</p>
</nav> </nav>
</div> </div>

View File

@ -10,7 +10,8 @@ use App\Http\Middleware\CheckIfAdmin;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
Route::middleware(['auth', 'verified', CheckIfAdmin::class])->prefix('nomination/admin/')->group(function () { 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::get('export', NominationExportController::class)->name('nomination.admin.export');
Route::prefix('ensemble/')->controller(NominationEnsembleController::class)->group(function () { Route::prefix('ensemble/')->controller(NominationEnsembleController::class)->group(function () {
Route::get('/', 'index')->name('nomination.admin.ensemble.index'); Route::get('/', 'index')->name('nomination.admin.ensemble.index');