mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-11 11:04:48 +00:00
113 lines
3.6 KiB
TypeScript
113 lines
3.6 KiB
TypeScript
import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
|
import { Body, Controller, Header, HttpCode, Inject, Param, Post, Query, Req, UseFilters, UseGuards } from '@nestjs/common';
|
|
import { ApiCreatedResponse, ApiHeaders, ApiOkResponse, 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';
|
|
import { CORSGuard, SetOrigin } from 'src/decorators/set-origin.decorator';
|
|
import { Metadata } from '@grpc/grpc-js';
|
|
import { PackTheMetadata } from 'src/utils/ PackTheMetadata';
|
|
import { request } from 'http';
|
|
import { Request } from 'express';
|
|
|
|
@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")
|
|
// @SetOrigin('devsbm.dadosfera.io')
|
|
// @UseGuards(CORSGuard)
|
|
@HttpCode(200)
|
|
@Header('content-type', 'application/json')
|
|
@ApiOkResponse()
|
|
async createUser(
|
|
@Body()
|
|
body: WordpressForm,
|
|
@Query('language')
|
|
language: string,
|
|
@Req()
|
|
request: Request,
|
|
) {
|
|
this.logger.info('createUser for open data'
|
|
+ JSON.stringify({
|
|
language,
|
|
body
|
|
}));
|
|
|
|
this.logger.info('headers'
|
|
+ JSON.stringify({
|
|
headers: request.headers
|
|
}));
|
|
|
|
// "401573bb-334f-44b2-b30e-88d4cea31ae9"
|
|
// const OPENDATA_PUBLIC_USERS_GROUP_ID = process.env.OPEN_GROUP_ID;
|
|
// ""f239718a-a271-4ef9-ae7e-02a2f0f3aa6e""
|
|
// const OPENDATA_CUSTOMER_ID = process.env.OPEN_CUSTOMER_ID;
|
|
const OPENDATA_CUSTOMER_ID = "b3e3dfe5-b992-4586-a73c-c0b0c00f615d";
|
|
|
|
this.logger.info("OPENDATA_CUSTOMER_ID: " + process.env.OPEN_CUSTOMER_ID)
|
|
this.logger.info("OPEN_GROUP_ID: " + process.env.OPEN_GROUP_ID)
|
|
const roles = ["e3f98a2f-7748-4981-8505-7695c8ca8218"];
|
|
const metadata = PackTheMetadata({
|
|
language: language || 'en-us'
|
|
});
|
|
|
|
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 request' + JSON.stringify({ user, roles, customer: OPENDATA_CUSTOMER_ID }));
|
|
|
|
try {
|
|
await this.openDataService.createUser(OPENDATA_CUSTOMER_ID, user, roles, metadata);
|
|
this.logger.info('user created with sucessfull data');
|
|
return {
|
|
success: true,
|
|
status: 'success',
|
|
message: 'user created with succesfull'
|
|
}
|
|
} catch (e) {
|
|
this.logger.error('failed with exception: ' + e.message);
|
|
return {
|
|
success: false,
|
|
status: 'failed',
|
|
message: e.message
|
|
};
|
|
}
|
|
}
|
|
|
|
}
|