import { Inject, Injectable, OnModuleInit } from '@nestjs/common'; import { lastValueFrom } from 'rxjs'; import { CreateUserOpenDataDTO } from './dto/wordpres-form'; import DadosferaLogger from '@dadosfera/dadosfera-logs'; import { UsersProtoService } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service'; import { DucClient } from '../duc/client.config'; import { ClientGrpc } from '@nestjs/microservices'; import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc'; import { Metadata } from '@grpc/grpc-js'; @Injectable() export class OpenDataService implements OnModuleInit { logger: DadosferaLogger; private usersClientService: UsersProtoService; constructor( @Inject(DadosferaLogger) private dadosferaLogger: DadosferaLogger, @Inject(DucClient.name) private readonly grpcClient: ClientGrpc, ) { this.logger = dadosferaLogger.logger; } onModuleInit() { this.usersClientService = this.grpcClient.getService( ProtoServices.UsersProtoService, ); } async createUser(customerId: string, data: CreateUserOpenDataDTO, roleIds: string[], metadata: Metadata) { const body = { email: data.email, name: data.firstName + " " + data.lastName, department: data.organization, jobTitle: data.enquiryType, customerId: customerId, roleIds: roleIds } try { const { user } = await lastValueFrom( this.usersClientService.SimpleUserCreate(body, metadata), ); return user.id; } catch(err) { return err; } } }