import { Body, Controller, Delete, Get, Param, Post, Put, UseGuards, } from '@nestjs/common' import { UserRole } from '@mp-pilates/shared' import { JwtAuthGuard } from '../auth/jwt-auth.guard' import { Roles } from '../auth/roles.decorator' import { RolesGuard } from '../auth/roles.guard' import { CurrentUser } from '../common/decorators/current-user.decorator' import { CreateCardTypeDto } from './dto/create-card-type.dto' import { UpdateCardTypeDto } from './dto/update-card-type.dto' import { MembershipService } from './membership.service' @Controller() export class MembershipController { constructor(private readonly membershipService: MembershipService) {} // ─── Public ──────────────────────────────────────────────────────────────── @Get('membership/card-types') getActiveCardTypes() { return this.membershipService.getActiveCardTypes() } // ─── User ────────────────────────────────────────────────────────────────── @Get('membership/my') @UseGuards(JwtAuthGuard) getUserMemberships(@CurrentUser('sub') userId: string) { return this.membershipService.getUserMemberships(userId) } // ─── Admin ───────────────────────────────────────────────────────────────── @Get('admin/card-types') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) getAllCardTypes() { return this.membershipService.getAllCardTypes() } @Post('admin/card-types') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) createCardType(@Body() dto: CreateCardTypeDto) { return this.membershipService.createCardType(dto) } @Put('admin/card-types/:id') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) updateCardType(@Param('id') id: string, @Body() dto: UpdateCardTypeDto) { return this.membershipService.updateCardType(id, dto) } @Delete('admin/card-types/:id') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) deleteCardType(@Param('id') id: string) { return this.membershipService.deleteCardType(id) } }