import { Controller, Get, Query, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { TenantWalletService } from './tenant-wallet.service'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RolesGuard } from '../auth/guards/roles.guard'; import { Roles } from '../auth/decorators/roles.decorator'; import { CurrentUser, AuthUser } from '../auth/decorators/current-user.decorator'; /** * محفظة المستأجر — يقرأها **أدمن المستأجر** لا السوبر-أدمن (docs/24). * النطاق من التوكن دائماً: `user.tenantId`، فلا يمكن لأدمن مستأجر قراءة * أرقام مستأجر آخر بتمرير معرّف في الطلب. */ @ApiTags('tenant-wallet') @ApiBearerAuth() @UseGuards(JwtAuthGuard, RolesGuard) @Roles('admin') @Controller('admin/wallet') export class TenantWalletController { constructor(private readonly wallet: TenantWalletService) {} /** الأرباح القابلة للسحب مقابل الأمانات المحتفَظ بها. */ @Get('summary') summary(@CurrentUser() user: AuthUser, @Query('currency') currency?: string) { return this.wallet.summary(user.tenantId, currency || 'JOD'); } /** من أين جاء الإيراد: شحن سائقين · عمولات · رسوم. */ @Get('revenue-by-reason') byReason( @CurrentUser() user: AuthUser, @Query('days') days?: string, @Query('currency') currency?: string, ) { const n = Number(days); return this.wallet.revenueByReason( user.tenantId, Number.isFinite(n) && n > 0 ? Math.min(n, 365) : 30, currency || 'JOD', ); } }