import { Body, Controller, Get, Inject, Post, Query } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { AuditAction } from '../audit/audit.metadata.js'; import { CurrentUserParam, RequirePermissions, type CurrentUser } from '../security/security.metadata.js'; import { NumberLibraryService } from './number-library.service.js'; @ApiTags('number-library') @Controller('number-library') export class NumberLibraryController { constructor(@Inject(NumberLibraryService) private readonly numberLibraryService: NumberLibraryService) {} @Get('cities') @RequirePermissions('number_library.view') listCities(@Query() query: unknown) { return this.numberLibraryService.listCities(query as never); } @Post('cities/import') @RequirePermissions('number_library.manage') @AuditAction({ module: 'number_library', action: 'import_cities', objectType: 'geo_city' }) importCities(@Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) { return this.numberLibraryService.importCities(body as never, currentUser?.id); } @Get('phone-segments') @RequirePermissions('number_library.view') listPhoneSegments(@Query() query: unknown) { return this.numberLibraryService.listPhoneSegments(query as never); } @Post('phone-segments/import') @RequirePermissions('number_library.manage') @AuditAction({ module: 'number_library', action: 'import_phone_segments', objectType: 'phone_number_segment' }) importPhoneSegments(@Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) { return this.numberLibraryService.importPhoneSegments(body as never, currentUser?.id); } @Get('area-codes') @RequirePermissions('number_library.view') listAreaCodes(@Query() query: unknown) { return this.numberLibraryService.listAreaCodes(query as never); } @Post('area-codes/import') @RequirePermissions('number_library.manage') @AuditAction({ module: 'number_library', action: 'import_area_codes', objectType: 'phone_area_code' }) importAreaCodes(@Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) { return this.numberLibraryService.importAreaCodes(body as never, currentUser?.id); } @Get('carrier-prefix-rules') @RequirePermissions('number_library.view') listCarrierPrefixRules(@Query() query: unknown) { return this.numberLibraryService.listCarrierPrefixRules(query as never); } @Post('carrier-prefix-rules/import') @RequirePermissions('number_library.manage') @AuditAction({ module: 'number_library', action: 'import_carrier_prefix_rules', objectType: 'carrier_prefix_rule' }) importCarrierPrefixRules(@Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) { return this.numberLibraryService.importCarrierPrefixRules(body as never, currentUser?.id); } }