outlets = auth()->user()->outlets->pluck('name', 'id')->toArray(); // Set default outlet if only one available if (count($this->outlets) === 1) { $this->form->outlet_id = key($this->outlets); } $this->perfumes = Perfume::whereHas('outlets', fn ($query) => $query->where('outlets.id', $this->form->outlet_id))->orderBy('name')->pluck('name', 'id')->toArray(); $this->bottles = Bottle::whereHas('outlets', fn ($query) => $query->where('outlets.id', $this->form->outlet_id))->orderBy('size')->pluck('name', 'id')->toArray(); $this->products = Product::whereHas('outlets', fn ($query) => $query->where('outlets.id', $this->form->outlet_id))->orderBy('name')->pluck('name', 'id')->toArray(); $this->items = $this->loadOrderItems(); $this->subtotal = $this->getSubTotal(); $this->total = $this->getTotal(); } public function save(): void { $this->canOrAbort('create order'); if ($this->items->isEmpty()) { $this->toast('Keranjang tidak boleh kosong.', 'Gagal', 'danger'); return; } $result = $this->form->store(); if (! $result['status']) { $this->toast($result['message'], 'Gagal', 'danger'); return; } $userIds = User::role(['Developer', 'Owner', 'Leader'])->pluck('id')->toArray(); StorePushNotification::dispatch( PushNotification::whereIn('user_id', $userIds)->get(), [ 'title' => '🛒 Order Baru!', 'body' => 'Ada order baru masuk dengan nominal '.currency($result['data']['total'], 'Rp').' ✨', 'url' => route('studio.manage.order.index'), ], ); $this->dispatch('refreshDatatable'); $this->toast('Order berhasil ditambahkan.'); $this->redirectRoute('studio.manage.order.index', [ 'order' => $result['data']->id, ]); } public function updatedFormOutletId($value): void { $this->perfumes = Perfume::whereHas('outlets', fn ($query) => $query->where('outlets.id', $value))->orderBy('name')->pluck('name', 'id')->toArray(); $this->bottles = Bottle::whereHas('outlets', fn ($query) => $query->where('outlets.id', $value))->orderBy('size')->pluck('name', 'id')->toArray(); $this->products = Product::whereHas('outlets', fn ($query) => $query->where('outlets.id', $value))->orderBy('name')->pluck('name', 'id')->toArray(); } public function render(): View { return view('livewire.studio.manage.order.form', [ 'pageTitle' => 'Tambah Order', ]); } }