Files
grow-api/src/subscriptions/subscription-plans.controller.ts
T
2026-07-02 19:54:55 +03:30

71 lines
2.2 KiB
TypeScript

import {
Body,
Controller,
Delete,
Get,
Param,
ParseUUIDPipe,
Patch,
Post,
UseGuards,
} from '@nestjs/common';
import { CurrentUser } from '../auth/decorators/current-user.decorator';
import { Public } from '../auth/decorators/public.decorator';
import { Permissions } from '../auth/decorators/permissions.decorator';
import { Roles } from '../auth/decorators/roles.decorator';
import { PermissionsGuard } from '../auth/guards/permissions.guard';
import { RolesGuard } from '../auth/guards/roles.guard';
import { AuthUser } from '../auth/interfaces/auth-user.interface';
import { PermissionCode } from '../authorization/enums/permission-code.enum';
import { UserRole } from '../users/enums/user-role.enum';
import { AllowWithoutSubscription } from '../auth/decorators/allow-without-subscription.decorator';
import { CreateSubscriptionPlanDto } from './dto/create-subscription-plan.dto';
import { UpdateSubscriptionPlanDto } from './dto/update-subscription-plan.dto';
import { SubscriptionPlansService } from './subscription-plans.service';
@Controller('subscription-plans')
@UseGuards(RolesGuard, PermissionsGuard)
export class SubscriptionPlansController {
constructor(
private readonly subscriptionPlansService: SubscriptionPlansService,
) {}
@Roles(UserRole.ADMIN)
@Permissions(PermissionCode.SUBSCRIPTIONS_WRITE)
@Post()
create(@Body() dto: CreateSubscriptionPlanDto) {
return this.subscriptionPlansService.create(dto);
}
@Public()
@AllowWithoutSubscription()
@Get()
findAll() {
return this.subscriptionPlansService.findAll(true);
}
@Public()
@AllowWithoutSubscription()
@Get(':id')
findOne(@Param('id', ParseUUIDPipe) id: string) {
return this.subscriptionPlansService.findOne(id);
}
@Roles(UserRole.ADMIN)
@Permissions(PermissionCode.SUBSCRIPTIONS_WRITE)
@Patch(':id')
update(
@Param('id', ParseUUIDPipe) id: string,
@Body() dto: UpdateSubscriptionPlanDto,
) {
return this.subscriptionPlansService.update(id, dto);
}
@Roles(UserRole.ADMIN)
@Permissions(PermissionCode.SUBSCRIPTIONS_WRITE)
@Delete(':id')
remove(@Param('id', ParseUUIDPipe) id: string) {
return this.subscriptionPlansService.remove(id);
}
}