mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-10 18:24:47 +00:00
152 lines
4.4 KiB
TypeScript
152 lines
4.4 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Get,
|
|
Inject,
|
|
Param,
|
|
Post,
|
|
Query,
|
|
UploadedFile,
|
|
UseInterceptors,
|
|
} from '@nestjs/common';
|
|
import { NetworkConfigService } from './network-config.service';
|
|
import { DadosferaLogger } from '@dadosfera/dadosfera-logs';
|
|
import { ApiConsumes, ApiOkResponse, ApiTags } from '@nestjs/swagger';
|
|
import { RequestUser, User } from 'src/decorators/user.decorator';
|
|
import {
|
|
CreateNetworkConfigReq,
|
|
CreateNetworkConfigRes,
|
|
FindAllNetworkConfigsRes,
|
|
} from './dto/network-config';
|
|
import { FileInterceptor } from '@nestjs/platform-express';
|
|
import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum';
|
|
import {
|
|
Authenticated,
|
|
RequireAllPermissions,
|
|
} from 'src/decorators/authentication.decorator';
|
|
import { Language } from 'src/decorators/language.decorator';
|
|
import { LanguageEnum } from 'src/utils/languages.enum';
|
|
|
|
const networkConfigPermissions = PERMISSIONS_GROUPS.NETWORK_CONFIG.permissions;
|
|
@ApiTags('Network Config')
|
|
@Authenticated()
|
|
@Controller('network-config')
|
|
export class NetworkConfigController {
|
|
logger: any;
|
|
constructor(
|
|
private networkConfigService: NetworkConfigService,
|
|
@Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger,
|
|
) {
|
|
this.logger = dadosferaLogger.logger;
|
|
}
|
|
|
|
@Get()
|
|
@ApiOkResponse({ type: FindAllNetworkConfigsRes })
|
|
async findAllNetworkConfigs(
|
|
@User() user: RequestUser,
|
|
@Language() language: LanguageEnum,
|
|
@Query() queries,
|
|
) {
|
|
this.logger.info('GET /network-config', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
|
|
const { user_id, customer_id, customer_name } = user;
|
|
const { search, size, page, ...filters } = queries;
|
|
|
|
return this.networkConfigService.findAllNetworkConfigs({
|
|
body: { search, size, page, filters },
|
|
info: { user_id, customer_id, customer_name, language },
|
|
});
|
|
}
|
|
|
|
@Get(':id')
|
|
@ApiOkResponse({ type: FindAllNetworkConfigsRes })
|
|
async findNetworkConfigById(
|
|
@User() user: RequestUser,
|
|
@Param('id') id: string,
|
|
) {
|
|
this.logger.info('GET /network-config/:id', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
return this.networkConfigService.findNetworkConfigById(id);
|
|
}
|
|
|
|
@Get(':id/details')
|
|
@ApiOkResponse({ type: FindAllNetworkConfigsRes })
|
|
async findNetworkConfigByIdDetails(
|
|
@User() user: RequestUser,
|
|
@Language() language: LanguageEnum,
|
|
@Param('id') id: string,
|
|
) {
|
|
this.logger.info('GET /network-config/:id', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
|
|
return this.networkConfigService.findNetworkConfigByIdDetails(id, {
|
|
customer_name: user.customer_name,
|
|
customer_id: user.customer_id,
|
|
language,
|
|
});
|
|
}
|
|
|
|
@Post()
|
|
@ApiOkResponse({ type: CreateNetworkConfigRes })
|
|
@RequireAllPermissions(networkConfigPermissions.CREATE)
|
|
@ApiConsumes('multipart/form-data')
|
|
@UseInterceptors(FileInterceptor('ovpn_file'))
|
|
async createNetworkConfigs(
|
|
@User() user: RequestUser,
|
|
@UploadedFile() file: Express.Multer.File,
|
|
@Body() body: CreateNetworkConfigReq,
|
|
) {
|
|
this.logger.info('POST /network-config', {
|
|
user: user.user_id,
|
|
customer: user.customer_name,
|
|
});
|
|
const { customer_id, customer_name, user_id } = user;
|
|
return this.networkConfigService.createNetworkConfig(body, file, {
|
|
customer_name,
|
|
customer_id,
|
|
user_id,
|
|
});
|
|
}
|
|
|
|
// @Patch(':id')
|
|
// @ApiOkResponse({ type: UpdateNetworkConfigRes })
|
|
// @RequireAllPermissions(networkConfigPermissions.CREATE)
|
|
// async updateNetworkConfig(
|
|
// @User() user: RequestUser,
|
|
// @Param('id') network_config_id: string,
|
|
// @Body() body: UpdateNetworkConfigReq,
|
|
// ) {
|
|
// this.logger.info('PATCH /network-config/:id', {
|
|
// user: user.user_id,
|
|
// customer: user.customer_name,
|
|
// });
|
|
// return this.networkConfigService.updateNetworkConfig(
|
|
// body,
|
|
// network_config_id,
|
|
// );
|
|
// }
|
|
|
|
// @Delete(':id')
|
|
// @ApiOkResponse({ type: DeleteNetworkConfigRes })
|
|
// async deleteNetworkConfig(
|
|
// @User() user: RequestUser,
|
|
// @Param('id') network_config_id: string,
|
|
// ) {
|
|
// this.logger.info('DELETE /network-config', {
|
|
// user: user.user_id,
|
|
// customer: user.customer_name,
|
|
// });
|
|
// return this.networkConfigService.deleteNetworkConfig(network_config_id, {
|
|
// customer_name: user.customer_name,
|
|
// customer_id: user.customer_id,
|
|
// });
|
|
// }
|
|
}
|