[Back] <?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.');
}
}