currentStore($request); $search = trim((string) $request->query('q', '')); $orders = WooOrder::query() ->when($store, fn ($q) => $q->where('woo_store_id', $store->id)) ->when(! $store, fn ($q) => $q->whereRaw('1 = 0')) ->when($search !== '', function ($query) use ($search) { $like = '%'.$search.'%'; $query->where(function ($inner) use ($like) { $inner->where('customer_name', 'like', $like) ->orWhere('customer_email', 'like', $like) ->orWhere('order_number', 'like', $like); }); }) ->with('store') ->latest('created_at') ->paginate(20) ->withQueryString(); return view('woo.orders.index', compact('orders', 'search', 'store')); } public function updateStatus(Request $request, WooOrder $order): RedirectResponse { $store = $this->currentStoreOrFail($request); abort_if($order->woo_store_id !== $store->id, 404); $validated = $request->validate([ 'fulfillment_status' => ['required', Rule::in(array_keys(WooOrder::FULFILLMENT_STATUSES))], ]); $order->update(['fulfillment_status' => $validated['fulfillment_status']]); $this->sync->push($order->fresh()); return back()->with('success', 'Fulfillment status updated.'); } public function sync(Request $request): RedirectResponse { $store = $this->currentStoreOrFail($request); $count = $this->orderSync->syncOrders($store); return back()->with('success', sprintf( 'Synced %d orders from %s.', $count, $store->site_name ?? $store->site_url, )); } }