diff --git a/app/Http/Controllers/WorkshopController.php b/app/Http/Controllers/EventController.php similarity index 74% rename from app/Http/Controllers/WorkshopController.php rename to app/Http/Controllers/EventController.php index c7f7502..cf3769f 100644 --- a/app/Http/Controllers/WorkshopController.php +++ b/app/Http/Controllers/EventController.php @@ -2,11 +2,11 @@ namespace App\Http\Controllers; -use App\Models\Workshop; +use App\Models\Event; use Carbon\Carbon; use Illuminate\Http\Request; -class WorkshopController extends Controller +class EventController extends Controller { /** * Display a listing of the resource. @@ -16,7 +16,7 @@ class WorkshopController extends Controller $homeView = true; $search = $request->get('search', ''); - $query = Workshop::query(); + $query = Event::query(); if(!auth()->user()?->admin) { $query = $query->where('status', '!=', 'draft'); @@ -83,9 +83,9 @@ class WorkshopController extends Controller $query = $query->orderBy('starts_at', 'asc'); } - $workshops = $query->paginate(12); - return view('workshop.index', [ - 'workshops' => $workshops, + $events = $query->paginate(12); + return view('event.index', [ + 'events' => $events, 'search' => $search, ]); } @@ -95,17 +95,17 @@ class WorkshopController extends Controller */ public function admin_index(Request $request) { - $query = Workshop::query(); + $query = Event::query(); if($request->has('search')) { $query->where('title', 'like', '%' . $request->search . '%'); $query->orWhere('content', 'like', '%' . $request->search . '%'); } - $workshops = $query->orderBy('starts_at', 'desc')->paginate(12)->onEachSide(1); + $events = $query->orderBy('starts_at', 'desc')->paginate(12)->onEachSide(1); - return view('admin.workshop.index', [ - 'workshops' => $workshops + return view('admin.event.index', [ + 'events' => $events ]); } @@ -114,7 +114,7 @@ class WorkshopController extends Controller */ public function admin_create() { - return view('admin.workshop.edit'); + return view('admin.event.edit'); } /** @@ -146,46 +146,46 @@ class WorkshopController extends Controller 'registration_data.required_unless' => __('validation.custom_messages.registration_data_required_unless'), ]); - $workshopData = $request->all(); - $workshopData['user_id'] = auth()->user()->id; + $eventData = $request->all(); + $eventData['user_id'] = auth()->user()->id; - if($workshopData['status'] === 'open' && Carbon::parse($workshopData['starts_at'])->lt(Carbon::now())) { - $workshopData['status'] = 'closed'; + if($eventData['status'] === 'open' && Carbon::parse($eventData['starts_at'])->lt(Carbon::now())) { + $eventData['status'] = 'closed'; } - $workshop = Workshop::create($workshopData); - $workshop->updateFiles($request->input('files')); + $event = Event::create($eventData); + $event->updateFiles($request->input('files')); - session()->flash('message', 'Workshop has been created'); - session()->flash('message-title', 'Workshop created'); + session()->flash('message', 'Event has been created'); + session()->flash('message-title', 'Event created'); session()->flash('message-type', 'success'); - return redirect()->route('admin.workshop.index'); + return redirect()->route('admin.event.index'); } /** * Display the specified resource. */ - public function show(Workshop $workshop) + public function show(Event $event) { - if(!auth()->user()?->admin && $workshop->status == 'draft') { + if(!auth()->user()?->admin && $event->status == 'draft') { abort(404); } - return view('workshop.show', ['workshop' => $workshop]); + return view('event.show', ['event' => $event]); } /** * Show the form for editing the specified resource. */ - public function admin_edit(Workshop $workshop) + public function admin_edit(Event $event) { - return view('admin.workshop.edit', ['workshop' => $workshop]); + return view('admin.event.edit', ['event' => $event]); } /** * Update the specified resource in storage. */ - public function admin_update(Request $request, Workshop $workshop) + public function admin_update(Request $request, Event $event) { $request->validate([ 'title' => 'required', @@ -211,51 +211,51 @@ class WorkshopController extends Controller 'registration_data.required_unless' => __('validation.custom_messages.registration_data_required_unless'), ]); - $workshopData = $request->all(); - if($workshopData['status'] === 'open' && Carbon::parse($workshopData['starts_at'])->lt(Carbon::now())) { - $workshopData['status'] = 'closed'; + $eventData = $request->all(); + if($eventData['status'] === 'open' && Carbon::parse($eventData['starts_at'])->lt(Carbon::now())) { + $eventData['status'] = 'closed'; } - $workshop->update($workshopData); - $workshop->updateFiles($request->input('files')); + $event->update($eventData); + $event->updateFiles($request->input('files')); - session()->flash('message', 'Workshop has been updated'); - session()->flash('message-title', 'Workshop updated'); + session()->flash('message', 'Event has been updated'); + session()->flash('message-title', 'Event updated'); session()->flash('message-type', 'success'); - return redirect()->route('admin.workshop.index'); + return redirect()->route('admin.event.index'); } /** * Remove the specified resource from storage. */ - public function admin_destroy(Workshop $workshop) + public function admin_destroy(Event $event) { - $workshop->delete(); - session()->flash('message', 'Workshop has been deleted'); - session()->flash('message-title', 'Workshop deleted'); + $event->delete(); + session()->flash('message', 'Event has been deleted'); + session()->flash('message-title', 'Event deleted'); session()->flash('message-type', 'danger'); - return redirect()->route('admin.workshop.index'); + return redirect()->route('admin.event.index'); } /** * Duplicate the specified resource. */ - public function admin_duplicate(Workshop $workshop) + public function admin_duplicate(Event $event) { - $newWorkshop = $workshop->replicate(); + $newWorkshop = $event->replicate(); $newWorkshop->title = $newWorkshop->title . ' (copy)'; $newWorkshop->status = 'draft'; $newWorkshop->save(); - foreach($workshop->files as $file) { + foreach($event->files as $file) { $newWorkshop->files()->attach($file->name); } - session()->flash('message', 'Workshop has been duplicated'); - session()->flash('message-title', 'Workshop duplicated'); + session()->flash('message', 'Event has been duplicated'); + session()->flash('message-title', 'Event duplicated'); session()->flash('message-type', 'success'); - return redirect()->route('admin.workshop.edit', $newWorkshop); + return redirect()->route('admin.event.edit', $newWorkshop); } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index a907dd2..9a58924 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -3,18 +3,18 @@ namespace App\Http\Controllers; use App\Models\Post; -use App\Models\Workshop; +use App\Models\Event; class HomeController extends Controller { public function index() { $posts = Post::query()->orderBy('created_at', 'desc')->limit(4)->get(); - $workshops = Workshop::query()->where('starts_at', '>', now())->where('status', '!=', 'private')->orderBy('starts_at', 'asc')->limit(4)->get(); + $events = Event::query()->where('starts_at', '>', now())->where('status', '!=', 'private')->orderBy('starts_at', 'asc')->limit(4)->get(); return view('home', [ 'posts' => $posts, - 'workshops' => $workshops, + 'events' => $events, ]); } } diff --git a/app/Models/Workshop.php b/app/Models/Event.php similarity index 97% rename from app/Models/Workshop.php rename to app/Models/Event.php index a289d9b..7c4b327 100644 --- a/app/Models/Workshop.php +++ b/app/Models/Event.php @@ -7,7 +7,7 @@ use App\Traits\Slug; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -class Workshop extends Model +class Event extends Model { use HasFactory, Slug, HasFiles; diff --git a/database/factories/WorkshopFactory.php b/database/factories/WorkshopFactory.php index 9aa3bcd..4621453 100644 --- a/database/factories/WorkshopFactory.php +++ b/database/factories/WorkshopFactory.php @@ -3,13 +3,13 @@ namespace Database\Factories; use App\Models\Location; -use App\Models\Workshop; +use App\Models\Event; use DateInterval; use Illuminate\Database\Eloquent\Factories\Factory; class WorkshopFactory extends Factory { - protected $model = Workshop::class; + protected $model = Event::class; public function definition(): array { diff --git a/database/migrations/2024_05_07_143834_rename_workshops_table_to_events.php b/database/migrations/2024_05_07_143834_rename_workshops_table_to_events.php new file mode 100644 index 0000000..75b9700 --- /dev/null +++ b/database/migrations/2024_05_07_143834_rename_workshops_table_to_events.php @@ -0,0 +1,37 @@ +dropForeign(['workshop_id']); + $table->renameColumn('workshop_id', 'event_id'); + $table->foreign('event_id')->references('id')->on('events'); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::rename('events', 'workshops'); + + Schema::table('tickets', function (Blueprint $table) { + $table->dropForeign(['event_id']); + $table->renameColumn('event_id', 'workshop_id'); + $table->foreign('workshops_id')->references('id')->on('workshops'); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 7d8f169..eb19297 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -7,7 +7,7 @@ use App\Models\Media; use App\Models\Post; use App\Models\User; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; -use App\Models\Workshop; +use App\Models\Event; use Database\Factories\LocationFactory; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Storage; diff --git a/resources/views/admin/workshop/edit.blade.php b/resources/views/admin/event/edit.blade.php similarity index 66% rename from resources/views/admin/workshop/edit.blade.php rename to resources/views/admin/event/edit.blade.php index 3e56a08..8755e60 100644 --- a/resources/views/admin/workshop/edit.blade.php +++ b/resources/views/admin/event/edit.blade.php @@ -1,33 +1,33 @@ @php - $workshopContent = isset($workshop) ? $workshop->content : ''; + $eventContent = isset($event) ? $event->content : ''; @endphp - {{ isset($workshop) ? 'Edit' : 'Create' }} Workshop + {{ isset($event) ? 'Edit' : 'Create' }} Workshop -
- @isset($workshop) + + @isset($event) @method('PUT') @endisset @csrf
- +
- +
- - + +
@foreach(\App\Models\Location::orderByRaw("name = 'Online' DESC, name ASC")->get() as $location) - + @endforeach @@ -35,26 +35,26 @@
- +
- +
- - - - - - - + + + + + + +
- +
@@ -62,44 +62,44 @@  
- +
- +
- +
- - - - + + + +
- + - + - + - +
@@ -107,14 +107,14 @@ label="Files" name="files" editor="true" - value="{!! isset($workshop) ? $workshop->files()->orderBy('name')->get() : '' !!}" + value="{!! isset($event) ? $event->files()->orderBy('name')->get() : '' !!}" >
- @isset($workshop) - Delete + @isset($event) + Delete @endisset - {{ isset($workshop) ? 'Save' : 'Create' }} + {{ isset($event) ? 'Save' : 'Create' }}
diff --git a/resources/views/admin/workshop/index.blade.php b/resources/views/admin/event/index.blade.php similarity index 59% rename from resources/views/admin/workshop/index.blade.php rename to resources/views/admin/event/index.blade.php index 23ce11f..38ba10d 100644 --- a/resources/views/admin/workshop/index.blade.php +++ b/resources/views/admin/event/index.blade.php @@ -4,14 +4,14 @@
- Create + Create
- @if($workshops->isEmpty()) + @if($events->isEmpty()) @else @@ -23,24 +23,24 @@ Action - @foreach ($workshops as $workshop) + @foreach ($events as $event) - {{ $workshop->hero->title }} + {{ $event->hero->title }}
-
{{ $workshop->title }}
-
{{ $workshop->location->name }} ({{ ucwords($workshop->status) }})
-
{{ \Carbon\Carbon::parse($workshop->starts_at)->format('j/m/Y g:i a') }}
+
{{ $event->title }}
+
{{ $event->location->name }} ({{ ucwords($event->status) }})
+
{{ \Carbon\Carbon::parse($event->starts_at)->format('j/m/Y g:i a') }}
- {{ ucwords($workshop->status) }} - {{ $workshop->location->name }} - {{ \Carbon\Carbon::parse($workshop->starts_at)->format('M j Y, g:i a') }} + {{ ucwords($event->status) }} + {{ $event->location->name }} + {{ \Carbon\Carbon::parse($event->starts_at)->format('M j Y, g:i a') }}
- - - + + +
@@ -48,7 +48,7 @@
- {{ $workshops->appends(request()->query())->links() }} + {{ $events->appends(request()->query())->links() }} @endif
diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 3e172ac..a576a64 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -20,7 +20,7 @@
@@ -37,7 +37,7 @@
- @if($workshop->ages) + @if($event->ages)
-
{{ isset($workshop->ages) && $workshop->ages !== '' ? 'Ages ' . $workshop->ages : 'All ages' }} +
{{ isset($event->ages) && $event->ages !== '' ? 'Ages ' . $event->ages : 'All ages' }} @endif
-
{{ isset($workshop->price) && $workshop->price !== '' && $workshop->price !== '0' ? $workshop->price : 'Free' }} +
{{ isset($event->price) && $event->price !== '' && $event->price !== '0' ? $event->price : 'Free' }}
diff --git a/resources/views/workshop/index.blade.php b/resources/views/event/index.blade.php similarity index 86% rename from resources/views/workshop/index.blade.php rename to resources/views/event/index.blade.php index d2549ac..035ab2d 100644 --- a/resources/views/workshop/index.blade.php +++ b/resources/views/event/index.blade.php @@ -12,18 +12,18 @@ - @if($workshops->isEmpty()) + @if($events->isEmpty()) @else - @foreach ($workshops as $workshop) - + @foreach ($events as $event) + @endforeach - {{ $workshops->appends(request()->query())->links() }} + {{ $events->appends(request()->query())->links() }} @endif diff --git a/resources/views/event/show.blade.php b/resources/views/event/show.blade.php new file mode 100644 index 0000000..a6ac5be --- /dev/null +++ b/resources/views/event/show.blade.php @@ -0,0 +1,64 @@ + + + +
+
+

{!! $event->title !!}

+
{!! $event->content !!}
+ +
+
+ @if($event->status === 'closed') +
Registration for this event has closed.
+ @elseif($event->status === 'full') +
This workshop is currently full.
+ @elseif($event->status === 'private') +
This is a private event. Please contact the organiser for details.
+ @elseif($event->status === 'scheduled') +
Registration for this workshop will open soon.
+ @elseif($event->status === 'cancelled') +
This workshop has been cancelled.
+ @elseif($event->registration === 'none') +
Registration not required for this event. Arrive early to avoid disappointment as seating maybe limited.
+ @elseif($event->registration === 'link') + Register for Event + @elseif($event->registration === 'email') +
Registration for this event by emailing {{ $event->registration_data }}.
+ @elseif($event->registration === 'message') +
{{ $event->registration_data }}
+ @endif + @if(auth()->user()?->admin) + Edit Workshop + @endif +

Date/Time

+

{!! implode('
', \App\Helpers::createTimeDurationStr($event->starts_at, $event->ends_at)) !!}

+

Location

+ +

{{ isset($event->ages) && $event->ages !== '' ? 'Ages ' . $event->ages : 'All ages' }}

+ @if(\App\Helpers::isUnderAge($event->ages)) +

Parental supervision may be required for children 8 years of age and under.

+ @endif +

{{ isset($event->price) && $event->price !== '' && $event->price !== '0' ? $event->price : 'Free' }}

+{{-- @if(isset($event->price) && $event->price !== '' && $event->price !== '0' && strtolower($event->price) !== 'free')--}} +{{--

Payment by cash or EFTPOS accepted. Please ensure correct change.

--}} +{{-- @endif--}} +
+
+
+
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 2a5b46f..c73b178 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -33,7 +33,7 @@

To keep up with our ever-changing world, it's important to encourage and support a new generation of curious minds who love science, engineering, art, and leadership.

- Explore Workshops + Explore Workshops