Added ability to modify ensembles

This commit is contained in:
Matt Young 2024-06-19 11:02:41 -05:00
parent a0927c12b7
commit 6909cdd229
5 changed files with 74 additions and 3 deletions

View File

@ -22,7 +22,7 @@ class EnsembleController extends Controller
if(! Auth::user()->is_admin) abort(403);
request()->validate([
'name' => 'required',
'code' => 'required',
'code' => ['required','max:6'],
'event_id' => ['required','exists:events,id']
]);
@ -42,6 +42,21 @@ class EnsembleController extends Controller
return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble deleted successfully');
}
public function updateEnsemble(Request $request, Ensemble $ensemble)
{
if(! Auth::user()->is_admin) abort(403);
request()->validate([
'name' => 'required',
'code' => 'required|max:6'
]);
$ensemble->update([
'name' => request('name'),
'code' => request('code')
]);
return redirect()->route('admin.ensembles.index')->with('success','Ensemble updated successfully');
}
public function updateEnsembleRank(Request $request)
{
if(! Auth::user()->is_admin) abort(403);

View File

@ -1,5 +1,8 @@
<x-card.card class="mb-6 mx-auto max-w-lg">
<x-card.heading>Ensembles for {{ $event->name }}</x-card.heading>
<x-card.heading>
Ensembles for {{ $event->name }}
<x-slot:subheading>Click name to rename. Drag handle to reorder.</x-slot:subheading>
</x-card.heading>
<x-table.table class="ml-3 sortable-table" id="event-{{$event->id}}">
<thead>
@ -21,7 +24,10 @@
</x-table.td>
{{-- <x-table.td class="handle"><i class="fas fa-bars"></i></x-table.td>--}}
<x-table.td>{{ $ensemble->code }}</x-table.td>
<x-table.td>{{ $ensemble->name }}</x-table.td>
{{-- <x-table.td>{{ $ensemble->name }}</x-table.td>--}}
<x-table.td>
@include('admin.ensembles.index-rename-modal')
</x-table.td>
<x-table.td>
<form method="POST" action="{{ route('admin.ensembles.destroy', ['ensemble' => $ensemble->id]) }}">
@csrf

View File

@ -0,0 +1,11 @@
<x-modal>
<x-slot:button_text>{{ $ensemble->name }}</x-slot:button_text>
<x-slot:title class="font-semibold">Rename Ensemble {{ $ensemble->name }}</x-slot:title>
<x-form.form method="PATCH" action="{{ route('admin.ensembles.updateEnsemble', ['ensemble' => $ensemble->rank]) }}">
<x-form.body-grid columns="4">
<x-form.field colspan="2" label_text="New Name" value="{{ $ensemble->name }}" name="name" />
<x-form.field colspan="1" label_text="New Code" value="{{ $ensemble->code }}" name="code" />
<x-form.button class="mt-6">Modify</x-form.button>
</x-form.body-grid>
</x-form.form>
</x-modal>

View File

@ -0,0 +1,38 @@
<div
x-data="{ 'showModal': false }"
@keydown.escape="showModal = false"
>
<!-- Trigger for Modal -->
<button type="button" @click="showModal = true">
{{ $button_text }}
</button>
<!-- Modal -->
<div
class="fixed inset-0 z-30 flex items-center justify-center overflow-auto bg-black bg-opacity-50"
x-show="showModal" x-cloak
>
<!-- Modal inner -->
<div
class="max-w-3xl px-6 py-4 mx-auto text-left bg-white rounded shadow-lg"
@click.away="showModal = false"
x-transition:enter="motion-safe:ease-out duration-300"
x-transition:enter-start="opacity-0 scale-90"
x-transition:enter-end="opacity-100 scale-100"
>
<!-- Title / Close-->
<div class="flex items-center justify-between border-b mb-2">
<h5 {{ $title->attributes->merge(['class' => 'mr-3 text-black max-w-none']) }}>{{ $title ?? '' }}</h5>
<button type="button" class="z-50 cursor-pointer" @click="showModal = false">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<!-- content -->
<div>{{ $slot }}</div>
</div>
</div>
</div>

View File

@ -64,6 +64,7 @@ Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->gr
Route::post('/','store')->name('admin.ensembles.store');
Route::delete('/{ensemble}','destroy')->name('admin.ensembles.destroy');
Route::post('/updateEnsembleRank','updateEnsembleRank')->name('admin.ensembles.updateEnsembleRank');
Route::patch('/{ensemble}','updateEnsemble')->name('admin.ensembles.updateEnsemble');
});
// Admin Event Routes