json(Customer::with(['address', 'delivery'])->orderBy('name')->get()); } /** * Display a listing of the resource. */ public function withTrashed(): JsonResponse { return response()->json(Customer::with(['address', 'delivery'])->withTrashed()->orderBy('name')->get()); } /** * Store a newly created resource in storage. */ public function store(Request $request): JsonResponse { $customerData = $request->validate([ 'name' => 'required|string', 'email' => 'required|string|email|unique:customers' ]); $customer = new Customer($customerData); $customer->save(); return response()->json($customer); } /** * Display the specified resource. */ public function show(Customer $customer): JsonResponse { return response()->json($customer); } /** * Update the specified resource in storage. */ public function update(Request $request, Customer $customer): JsonResponse { $customerData = $request->validate([ 'name' => 'required|string', 'email' => ['required', 'string', 'email', Rule::unique('customers')->ignore($customer->id)], ]); $customer->update($customerData); return response()->json($customer); } /** * Remove the specified resource from storage. */ public function destroy(Customer $customer): JsonResponse { $customer->delete(); return response()->json(null, 204); } /** * Restore the specified resource. */ public function restore(int $id): JsonResponse { $customer = Customer::withTrashed()->findOrFail($id)->restore(); return response()->json($customer); } }