Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | 2x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 11x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x | import { PrismaClient } from "@prisma/client";
import { Invoice } from "../../domain/entity/invoice";
import { InvoiceRepository } from "../../domain/repository/invoice-repository";
import { InvoiceMapper } from "./mappers/invoice-mapper";
import { UserMapper } from "./mappers/user-mapper";
export class InvoiceRepositoryDataBase implements InvoiceRepository {
constructor(private prismaClient: PrismaClient) {}
async create(invoice: Invoice): Promise<Invoice> {
const invoicePrismaCreate = await this.prismaClient.invoice.create({
data: {
userId: invoice.userId,
installationNumber: invoice.installationNumber,
monthReferring: invoice.monthReferring,
expirationDate: invoice.expirationDate,
amountToBePaid: invoice.amountToBePaid,
publicContribution: invoice.publicContribution,
path: invoice.path,
// Energy details
quantityEnergy: invoice.energyDetails?.quantityEnergy,
priceEnergy: invoice.energyDetails?.priceEnergy,
unityTariffEnergy: invoice.energyDetails?.unityTariffEnergy,
amountOfEnergyInject: invoice.energyDetails?.amountOfEnergyInject,
priceOfEnergyInject: invoice.energyDetails?.priceOfEnergyInject,
unityTariffOfEnergyInject: invoice.energyDetails?.unityTariffOfEnergyInject,
// ICMS details
amountIcms: invoice.icmsDetails?.amountIcms,
priceIcms: invoice.icmsDetails?.priceIcms,
unityIcms: invoice.icmsDetails?.unityIcms,
// GDI details
amountGDI: invoice.gdiDetails?.amountGDI,
priceGDI: invoice.gdiDetails?.priceGDI,
unityGDI: invoice.gdiDetails?.unityGDI,
},
});
return InvoiceMapper.invoceMapper(invoicePrismaCreate)
}
async findAllUser(userId?: string): Promise<Invoice[]> {
const invoicesWithUser = await this.prismaClient.invoice.findMany({
where: userId ? { userId } : {},
include: {
user: true,
},
});
// Mapeia cada resultado para a entidade Invoice
const invoices = invoicesWithUser.map(invoiceWithUser => {
const userData = invoiceWithUser.user ;
// Mapeia os dados da fatura para a entidade Invoice
const invoiceEntity = InvoiceMapper.toEntity(invoiceWithUser);
// Se houver dados do usuário, mapeia-os para a entidade User e atribui à fatura
if (userData) {
const userEntity = UserMapper.invoceMapper(userData);
invoiceEntity.user = userEntity;
}
return invoiceEntity;
});
return invoices;
}
async findAll(skip: number, take: number,userId?: string): Promise<Invoice[]> {
const page = ((skip == 0) ? skip : skip * take);
const invoicePrisma = await this.prismaClient.invoice.findMany({
where: userId ? { userId } : {},
take:take,
skip:page,
}
)
const invoces = invoicePrisma.map(InvoiceMapper.toEntity)
return invoces;
}
async findExist(userId: string, installationNumber: string, monthReferring: string): Promise<Invoice[]> {
const invocePrisma = await this.prismaClient.invoice.findMany({
where:{
userId: userId,
installationNumber: installationNumber,
monthReferring: monthReferring
}
})
const invoice = invocePrisma.map(InvoiceMapper.invoceMapper)
console.log("INVOCEEEEEE###",invoice)
return invoice;
}
}
|