orderBy('name') ->paginate($this->limit()); return response()->json($stores); } public function show(Store $store) { return response()->json($store->load('channel', 'settlementAccount')); } public function store(Request $request) { $store = Store::create($this->attributes($request)); return response() ->json($store, 201) ->header('Location', route('api.ecommerce-finance.stores.show', $store)); } public function update(Store $store, Request $request) { $store->update($request->validated()); return response()->json($store->fresh()->load('channel', 'settlementAccount')); } private function attributes(Request $request): array { return array_merge($request->validated(), [ 'company_id' => company_id(), 'created_by' => user_id(), 'created_from' => 'ecommerce-finance', ]); } private function limit(): int { return min(max((int) request('limit', 25), 1), 100); } }