import { Controller, Get, Post, Body, Req, UseGuards, HttpCode, HttpStatus } from '@nestjs/common';
import { ReferralsService } from './referrals.service';
import { AuthGuard } from '../auth/auth.guard';
import { FeatureFlagGuard } from '../feature-flags/feature-flag.guard';
import { RequireFeature } from '../feature-flags/require-feature.decorator';
import { LogShareDto } from './referrals.dto';

@Controller('referral')
@UseGuards(AuthGuard, FeatureFlagGuard)
@RequireFeature('feature_referrals_enabled')
export class ReferralsController {
  constructor(private readonly referralsService: ReferralsService) {}

  @Get()
  getReferralData(@Req() req: any) {
    return this.referralsService.getReferralData(req.user.id);
  }

  @Get('stats')
  getReferralStats(@Req() req: any) {
    return this.referralsService.getReferralData(req.user.id);
  }

  @Post('log-share')
  @HttpCode(HttpStatus.OK)
  logShare(@Req() req: any, @Body() body: LogShareDto) {
    return this.referralsService.logShare(req.user.id, body.platform, {
      ip: req.ip,
      userAgent: req.get('user-agent') || null,
      deviceId: body.deviceId || (req.headers['device-id'] as string | undefined) || null,
      shareIntentToken: body.shareIntentToken,
      shareDurationMs: body.shareDurationMs,
    });
  }
}
