Files
ladill-woo-manager/app/Http/Controllers/Woo/OrderController.php
T
isaaccladandCursor ffe0b9d877
Deploy Ladill Woo Manager / deploy (push) Failing after 2s
Scaffold Ladill Woo Manager for WooCommerce order fulfillment.
Standalone app with SSO shell, WordPress plugin connect flow, webhook ingest,
fulfillment inbox, and plugin activation API — no payment processing.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-06 22:39:38 +00:00

62 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Woo;
use App\Http\Controllers\Controller;
use App\Models\WooOrder;
use App\Models\WooStore;
use App\Services\Woo\FulfillmentSyncService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Illuminate\View\View;
class OrderController extends Controller
{
public function __construct(private FulfillmentSyncService $sync) {}
public function index(Request $request): View
{
$user = $request->user();
$search = trim((string) $request->query('q', ''));
$storeFilter = $request->query('store');
$storeIds = WooStore::query()->where('user_id', $user->id)->pluck('id');
$orders = WooOrder::query()
->whereIn('woo_store_id', $storeIds)
->when($storeFilter, fn ($q) => $q->where('woo_store_id', $storeFilter))
->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();
$stores = WooStore::query()->where('user_id', $user->id)->orderBy('site_name')->get();
return view('woo.orders.index', compact('orders', 'stores', 'search', 'storeFilter'));
}
public function updateStatus(Request $request, WooOrder $order): RedirectResponse
{
$order->load('store');
abort_if($order->store?->user_id !== $request->user()->id, 403);
$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.');
}
}