Files
psp_api/src/modules/consumer/consumer.service.ts
T

67 lines
1.6 KiB
TypeScript
Raw Normal View History

2026-04-06 13:31:40 +03:30
import { ResponseMapper } from '@/common/response/response-mapper'
import { PrismaService } from '@/prisma/prisma.service'
import { Injectable } from '@nestjs/common'
@Injectable()
export class ConsumerService {
constructor(private readonly prisma: PrismaService) {}
async getInfo(consumer_id: string) {
const consumer = await this.prisma.consumer.findUniqueOrThrow({
2026-04-06 13:31:40 +03:30
where: {
id: consumer_id,
},
select: {
id: true,
first_name: true,
last_name: true,
mobile_number: true,
status: true,
activated_licenses: {
2026-04-06 13:31:40 +03:30
select: {
id: true,
2026-04-06 13:31:40 +03:30
starts_at: true,
expires_at: true,
license: {
2026-04-06 13:31:40 +03:30
select: {
id: true,
charged_license_transaction: {
select: {
partner: {
select: {
name: true,
},
},
},
},
2026-04-06 13:31:40 +03:30
},
},
},
},
},
})
const { activated_licenses, ...rest } = consumer
const mappedData = {
...rest,
activated_licenses: activated_licenses.map(activatedLicense => {
const { license, ...rest } = activatedLicense
return {
...rest,
license: {
id: license.id,
partner: license.charged_license_transaction.partner,
},
}
}),
}
2026-04-06 13:31:40 +03:30
return ResponseMapper.single({
...consumer,
full_name: `${consumer?.first_name} ${consumer?.last_name}`,
activated_licenses: mappedData,
2026-04-06 13:31:40 +03:30
})
}
}