<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; class CustomerController extends Controller { public function index(Request $request) { $q = User::query() ->with('customerProfile') ->where('is_admin', false) ->latest(); if ($request->filled('search')) { $s = $request->string('search'); $q->where(function ($sub) use ($s) { $sub->where('name', 'like', "%{$s}%") ->orWhere('email', 'like', "%{$s}%"); }); } $customers = $q->paginate(15)->withQueryString(); return view('admin.customers.index', compact('customers')); } public function edit(User $user) { abort_if($user->is_admin, 404); $profile = $user->customerProfile()->firstOrCreate(['user_id' => $user->id]); return view('admin.customers.edit', compact('user', 'profile')); } public function update(Request $request, User $user) { abort_if($user->is_admin, 404); $profile = $user->customerProfile()->firstOrCreate(['user_id' => $user->id]); $data = $request->validate([ 'phone' => ['nullable','string','max:30'], 'address_line1' => ['nullable','string','max:200'], 'address_line2' => ['nullable','string','max:200'], 'city' => ['nullable','string','max:100'], 'state' => ['nullable','string','max:100'], 'postcode' => ['nullable','string','max:20'], 'country' => ['nullable','string','max:2'], ]); $profile->update($data); return back()->with('success', 'Customer profile updated.'); } }