import DadosferaLogger from '@dadosfera/dadosfera-logs'; import { Body, Controller, Inject, Post, UseFilters } from '@nestjs/common'; import { ApiCreatedResponse, ApiHeaders, ApiTags } from '@nestjs/swagger'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; import { LanguageEnum } from 'src/utils/languages.enum'; import { UsersService } from '../users/users.service'; import { Language } from 'src/decorators/language.decorator'; import { OpenDataService } from './open-data.service'; import { CreateUserOpenDataDTO, WordpressForm } from './dto/wordpres-form'; @Controller('open-data') @ApiInternalOnlyController() @ApiTags('OpenData') @ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }]) @UseFilters(GrpcToHttpExceptionFilter) export class OpenDataController { logger: DadosferaLogger; constructor( @Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger, private openDataService: OpenDataService, ) { this.logger = dadosferaLogger.logger; } @Post("/sharing-ocean-data") @ApiCreatedResponse() async createUser( @Body() body: WordpressForm ) { this.logger.info('createUser for open data' + JSON.stringify({ body })); const OPENDATA_PUBLIC_USERS_GROUP_ID = "401573bb-334f-44b2-b30e-88d4cea31ae9"; const OPENDATA_CUSTOMER_ID = "f239718a-a271-4ef9-ae7e-02a2f0f3aa6e"; const roles = [OPENDATA_PUBLIC_USERS_GROUP_ID]; const data = {} try { Object.keys(body.fields) .filter(key => body.fields[key].required === "1") .forEach(key => { const field = body.fields[key] data[field.id] = field.value }); } catch (e) { this.logger.error('user data' + e.message); } const user: CreateUserOpenDataDTO = { email: data["email"], enquiryType: data["enquiry_type"], firstName: data["first_name"], lastName: data["last_name"], organization: data["organization"] } this.logger.info('user data' + JSON.stringify({ user })); try { await this.openDataService.createUser(OPENDATA_CUSTOMER_ID, user, roles); return "success" } catch (e) { this.logger.error('user data' + e.message); return e; } } }