import { Body, Controller, Get, Param, Post, UseGuards } from "@nestjs/common";
import { PaymentsService } from "./payments.service";
import { JwtAuthGuard } from "../../common/guards/jwt-auth.guard";
import { InitiateDepositDto } from "./dto/initiate-deposit.dto";

@Controller("payments")
export class PaymentsController {
  constructor(private readonly svc: PaymentsService) {}

  @UseGuards(JwtAuthGuard)
  @Post("deposit/initiate")
  initiateDeposit(@Body() dto: InitiateDepositDto) {
    return this.svc.initiateDeposit(dto);
  }

  @Get(":intentId/status")
  getStatus(@Param("intentId") intentId: string) {
    return this.svc.getPaymentStatus(intentId);
  }

  // Webhooks (no auth here; verify signatures in real integrations)
  @Post("webhook/orange-money")
  orangeMoneyWebhook(@Body() payload: any) {
    return this.svc.handleWebhook("ORANGE_MONEY", payload);
  }

  @Post("webhook/myzaka")
  myzakaWebhook(@Body() payload: any) {
    return this.svc.handleWebhook("MYZAKA", payload);
  }

  @Post("webhook/card")
  cardWebhook(@Body() payload: any) {
    return this.svc.handleWebhook("CARD", payload);
  }
}
