'Outlet', ])] class Outlet extends Component { public string $search = ''; public ?OutletModel $selectedOutlet = null; public function showDetail(OutletModel $outletModel): void { $this->selectedOutlet = $outletModel; $this->selectedOutlet->load(['openingHours' => function ($query) { $query->orderBy('day'); }]); $this->selectedOutlet->openingHours->each(function ($hour) { $hour->formatted_open_time = \Carbon\Carbon::parse($hour->open_time)->format('H:i'); $hour->formatted_close_time = \Carbon\Carbon::parse($hour->close_time)->format('H:i'); }); } public function closeModal(): void { $this->selectedOutlet = null; } public function render(): View { $outlets = OutletModel::with(['facilities', 'openingHours']) ->operational() ->when($this->search, function ($query) { $query->where(function ($query) { $query->where('name', 'like', '%'.$this->search.'%') ->orWhere('address', 'like', '%'.$this->search.'%'); }); }) ->latest() ->get() ->map(function ($outlet) { $outlet->image = $outlet->getFirstMediaUrl('featured_image') ?: asset('assets/images/dark-logo.png'); $outlet->status_label = $outlet->status->label(); $outlet->status_color = $outlet->status->color(); return $outlet; }); return view('livewire.home.outlets', [ 'pageTitle' => 'Outlet Terdekat ✨', 'pageDesc' => 'Temukan outlet kami di sekitarmu dan rasakan langsung kemewahan aromanya! 🚗🏢', 'outlets' => $outlets, ]); } }