mirror of
https://github.com/dadosfera/maestro.git
synced 2026-11-02 09:59:08 +00:00
FEAT: export users in csv
This commit is contained in:
@@ -21,6 +21,7 @@ import {
|
||||
IUserByCustomer,
|
||||
SetUserRolesReq,
|
||||
UpdateUserReq,
|
||||
UserReporter,
|
||||
} from './dtos/entities';
|
||||
import { RolesService } from '../roles/roles.service';
|
||||
import { HIERARCHIES } from './hierarchies';
|
||||
@@ -29,6 +30,7 @@ import { UserByCustomer } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces
|
||||
import { EnrichErrorCode } from 'src/utils/ErrorBuilder';
|
||||
import { DucClient } from '../duc/client.config';
|
||||
import { Metadata } from '@grpc/grpc-js';
|
||||
import { ParserBuilder } from 'src/utils/FileParser/parser.builder';
|
||||
|
||||
@Injectable()
|
||||
export class UsersService implements OnModuleInit {
|
||||
@@ -78,6 +80,34 @@ export class UsersService implements OnModuleInit {
|
||||
};
|
||||
}
|
||||
|
||||
async downloadUsersInCsv(customerId: string) {
|
||||
const { users } = await lastValueFrom(
|
||||
this.usersClientService.UserFindAllByCustomerId({ customerId }),
|
||||
);
|
||||
|
||||
const formatUsers: UserReporter[] = users.map(user => ({
|
||||
createdAt: user.createdAt,
|
||||
email: user.email,
|
||||
lastLogin: user.lastLogin,
|
||||
mfaStatus: user.mfaStatus,
|
||||
name: user.name,
|
||||
status: user.status,
|
||||
updatedAt: user.updatedAt
|
||||
}))
|
||||
|
||||
const parser = ParserBuilder.build<UserReporter>('csv');
|
||||
|
||||
const file = await parser.parse(formatUsers);
|
||||
|
||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
||||
const filename = `dadosfera-users-${timestamp}.csv`;
|
||||
|
||||
return {
|
||||
file,
|
||||
filename
|
||||
}
|
||||
}
|
||||
|
||||
async findOneById(id: string): Promise<{ user: IUserByCustomer }> {
|
||||
const { user } = await lastValueFrom(
|
||||
this.usersClientService.UserFindOneById({ id }),
|
||||
|
||||
Reference in New Issue
Block a user