diff --git a/app/Http/Controllers/Events/ProgrammeController.php b/app/Http/Controllers/Events/ProgrammeController.php index b842765..2c7120f 100644 --- a/app/Http/Controllers/Events/ProgrammeController.php +++ b/app/Http/Controllers/Events/ProgrammeController.php @@ -3,14 +3,16 @@ namespace App\Http\Controllers\Events; use App\Http\Controllers\Controller; -use App\Models\QrCode; use App\Models\QrWallet; +use App\Services\Qr\QrCodeManagerService; use App\Support\Qr\QrTypeCatalog; use Illuminate\Http\Request; use Illuminate\View\View; class ProgrammeController extends Controller { + public function __construct(private QrCodeManagerService $manager) {} + public function create(): View { return view('events.programme-create', [ @@ -21,12 +23,25 @@ class ProgrammeController extends Controller public function index(Request $request): View { $account = ladill_account(); + $wallet = $this->manager->walletFor($account); $programmes = $account->qrCodes() ->whereIn('type', QrTypeCatalog::programmeTypes()) ->latest() ->get(); - return view('events.programmes', compact('programmes')); + $totalSessions = $programmes->sum(function ($programme) { + $days = (array) ($programme->content()['days'] ?? []); + + return collect($days)->sum(fn ($day) => count((array) ($day['items'] ?? []))); + }); + + return view('events.programmes', [ + 'programmes' => $programmes, + 'wallet' => $wallet, + 'totalSessions' => $totalSessions, + 'pricePerQr' => QrWallet::pricePerQr(), + 'topupUrl' => 'https://'.config('app.account_domain').'/wallet', + ]); } } diff --git a/resources/views/events/programmes.blade.php b/resources/views/events/programmes.blade.php index 96ee4b4..a216c82 100644 --- a/resources/views/events/programmes.blade.php +++ b/resources/views/events/programmes.blade.php @@ -1,34 +1,87 @@ Programmes -
-
-
-

Programmes

-

Itinerary and schedule outlines you can attach to events and share with attendees.

+ +
+ @foreach(['success', 'error'] as $flash) + @if(session($flash)) +
+

{{ session($flash) }}

+
+ @endif + @endforeach + +
+
+
+
+
+
+ Schedules · Sessions · Speaker line-ups +
+

Your programmes

+

+ Build itinerary outlines you can attach to events and share with attendees via Ladill Link. +

+
+ +
+
+ +
+
+

GHS {{ number_format($wallet->spendableBalance(), 2) }}

+

Account balance

+
+
+

{{ $programmes->count() }}

+

Programmes

+
+
+

{{ number_format($totalSessions) }}

+

Sessions

+
+
+
- - - New programme -
- @if($programmes->isEmpty()) -
-

No programmes yet.

- Create a programme outline +
+
+

Your programmes

- @else - - @endif + @if($programmes->isEmpty()) +

No programmes yet. Create your first programme outline to get started.

+ @else + + @endif +
diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php index 948f421..c0475b6 100644 --- a/resources/views/partials/sidebar.blade.php +++ b/resources/views/partials/sidebar.blade.php @@ -5,25 +5,42 @@
@php + $eventsActive = request()->routeIs('events.index') || request()->routeIs('events.create') || request()->routeIs('events.show'); + $programmesActive = request()->routeIs('programmes.*'); + $eventsSectionActive = $eventsActive || $programmesActive; + $main = [ ['name' => 'Overview', 'route' => route('events.dashboard'), 'active' => request()->routeIs('events.dashboard'), 'icon' => ''], - ['name' => 'Events', 'route' => route('events.index'), 'active' => request()->routeIs('events.index') || request()->routeIs('events.create') || request()->routeIs('events.show'), - 'icon' => ''], ['name' => 'Attendees', 'route' => route('attendees.index'), 'active' => request()->routeIs('attendees.*') || request()->routeIs('events.attendees*'), 'icon' => ''], ['name' => 'Badge printing', 'route' => route('badges.index'), 'active' => request()->routeIs('badges.*') || request()->routeIs('events.badge-printing') || request()->routeIs('events.badges*'), 'icon' => ''], - ['name' => 'Programmes', 'route' => route('programmes.index'), 'active' => request()->routeIs('programmes.*'), - 'icon' => ''], ['name' => 'Speakers', 'route' => route('speakers.index'), 'active' => request()->routeIs('speakers.*'), 'icon' => ''], ['name' => 'Payments & Payouts', 'route' => route('events.payouts'), 'active' => request()->routeIs('events.payouts'), 'icon' => ''], ]; + + $eventsIcon = ''; @endphp