| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- <?php
- namespace App\Http\Controllers\agent;
- use App\Http\Controllers\AgentApiController;
- use App\Models\Agent\AgentEquityOrder;
- use App\Rules\DecimalNumber;
- use App\Services\Agent\AgentEquityService;
- use Illuminate\Http\Request;
- class EquityController extends AgentApiController
- {
- public function index(Request $request, AgentEquityService $service)
- {
- return $this->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']);
- });
- }
- }
|