import { Body, Controller, Delete, Get, Param, Patch, Post, UseGuards } from '@nestjs/common'; import { OrgService } from './org.service'; import { OrgAdminGuard } from './org-admin.guard'; import { CurrentOrgAdmin } from './org-admin.decorator'; import { OrgAdminJwtPayload } from '@tower/types'; @Controller('org') @UseGuards(OrgAdminGuard) export class OrgController { constructor(private readonly orgService: OrgService) {} @Get('dashboard') getDashboard(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) { return this.orgService.getDashboard(admin.organizationId); } @Get('tenants') getTenants(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) { return this.orgService.getTenants(admin.organizationId); } @Post('tenants') createTenant( @CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Body() body: { name: string; slug: string }, ) { return this.orgService.createTenant(admin.organizationId, body, admin.role); } @Get('tenants/:id') getTenant(@CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Param('id') id: string) { return this.orgService.getTenant(admin.organizationId, id); } @Get('rules') getRules(@CurrentOrgAdmin() admin: OrgAdminJwtPayload) { return this.orgService.getRules(admin.organizationId); } @Post('rules') createRule( @CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Body() body: { matchType: string; matchValue: string; action: string; priority?: number }, ) { return this.orgService.createRule(admin.organizationId, body); } @Patch('rules/:id') updateRule( @CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Param('id') id: string, @Body() body: { matchValue?: string; action?: string; priority?: number; isActive?: boolean }, ) { return this.orgService.updateRule(admin.organizationId, id, body); } @Delete('rules/:id') deleteRule(@CurrentOrgAdmin() admin: OrgAdminJwtPayload, @Param('id') id: string) { return this.orgService.deleteRule(admin.organizationId, id); } }