This commit is contained in:
@@ -53,7 +53,18 @@ export class CouponsController {
|
||||
@Public()
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: "Analyze single match with V20 model" })
|
||||
@ApiResponse({ status: 200, description: "Match analysis" })
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: "Match analysis",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "object" },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async analyzeMatch(@Body() dto: AnalyzeMatchDto) {
|
||||
const analysis = await this.smartCouponService.analyzeMatch(dto.matchId);
|
||||
if (!analysis) {
|
||||
@@ -99,6 +110,18 @@ export class CouponsController {
|
||||
@ApiOperation({
|
||||
summary: "Generate a high-confidence banko combo (2 matches)",
|
||||
})
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: "Daily banko coupon",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "object" },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async getDailyBanko(@Body() dto: DailyBankoDto) {
|
||||
// If no match IDs provided, fetch from system (top 50 upcoming)
|
||||
let candidateMatches = dto.matchIds || [];
|
||||
@@ -146,7 +169,18 @@ export class CouponsController {
|
||||
@Public()
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOperation({ summary: "Suggest Smart Coupon" })
|
||||
@ApiResponse({ status: 200, description: "Smart Coupon generated" })
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: "Smart Coupon generated",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "object" },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async suggestCoupon(@Body() dto: SuggestCouponDto) {
|
||||
// If no match IDs provided, fetch from system (top 50 upcoming)
|
||||
let candidateMatches = dto.matchIds || [];
|
||||
@@ -237,6 +271,18 @@ export class CouponsController {
|
||||
@ApiBearerAuth()
|
||||
@HttpCode(HttpStatus.CREATED)
|
||||
@ApiOperation({ summary: "Create and save a user coupon" })
|
||||
@ApiResponse({
|
||||
status: 201,
|
||||
description: "Coupon created",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "object" },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async createCoupon(@Body() dto: CreateCouponDto, @Req() req: any) {
|
||||
// req.user is populated by JwtAuthGuard
|
||||
const coupon = await this.userCouponService.createCoupon(req.user, dto);
|
||||
@@ -251,6 +297,18 @@ export class CouponsController {
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@ApiBearerAuth()
|
||||
@ApiOperation({ summary: "Get user betting statistics" })
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: "User statistics",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "object" },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async getUserStats(@Req() req: any) {
|
||||
const stats = await this.userCouponService.getUserStatistics(req.user.id);
|
||||
return { success: true, data: stats };
|
||||
@@ -263,7 +321,18 @@ export class CouponsController {
|
||||
@Get("history")
|
||||
@ApiBearerAuth()
|
||||
@ApiOperation({ summary: "Get coupon history" })
|
||||
@ApiResponse({ status: 200, description: "History retrieved" })
|
||||
@ApiResponse({
|
||||
status: 200,
|
||||
description: "History retrieved",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
success: { type: "boolean" },
|
||||
data: { type: "array", items: { type: "object" } },
|
||||
message: { type: "string" },
|
||||
},
|
||||
},
|
||||
})
|
||||
async getHistory(@Query("limit") limit?: string) {
|
||||
// eslint-disable-next-line @typescript-eslint/await-thenable
|
||||
const results = await this.couponsService.getCouponHistory(
|
||||
|
||||
Reference in New Issue
Block a user