execute(function () use ($request, $service) { $data = $request->validate([ 'page' => ['nullable', 'integer', 'min:1'], 'limit' => ['nullable', 'integer', 'min:1', 'max:100'], ]); $agent = $this->currentAgent()->fresh(); $page = max(1, (int) ($data['page'] ?? 1)); $limit = min(100, max(1, (int) ($data['limit'] ?? 20))); $query = AgentEquityOrder::query()->where('agent_id', $agent->id); $total = (clone $query)->count(); $orders = $query->orderByDesc('id')->forPage($page, $limit)->get(); return $service->overview($agent) + ['orders' => compact('total', 'page', 'limit') + ['list' => $orders]]; }); } public function order(Request $request, AgentEquityService $service) { return $this->execute(function () use ($request, $service) { $data = $request->validate(['percent' => ['required', 'numeric', 'gt:0', new DecimalNumber(3, 4)]]); return $service->order($this->currentAgent(), (string) $data['percent']); }); } public function cancel(Request $request, AgentEquityService $service) { return $this->execute(function () use ($request, $service) { $data = $request->validate(['id' => ['required', 'integer']]); return $service->cancel($this->currentAgent(), (int) $data['id']); }); } }