95 lines
2.2 KiB
TypeScript
95 lines
2.2 KiB
TypeScript
import { PrismaClient, Decimal } from '@prisma/client';
|
|
import { ApiError } from '../utils/ApiError';
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
const prisma = new PrismaClient();
|
|
|
|
export class PensaoAlimenticiaService {
|
|
async criarCalculo(dados: {
|
|
titulo: string;
|
|
descricao?: string;
|
|
dataInicial: Date;
|
|
dataFinal?: Date;
|
|
percentualSalarioMinimo: number;
|
|
multaPactuada?: number;
|
|
tipoAtualizacao: string;
|
|
processoId?: string;
|
|
clienteId?: string;
|
|
observacoes?: string;
|
|
usuarioId: string;
|
|
}) {
|
|
try {
|
|
const calculo = await prisma.calculoPensaoAlimenticia.create({
|
|
data: {
|
|
id: uuidv4(),
|
|
...dados,
|
|
status: 'ATIVO',
|
|
valorCalculado: new Decimal(0), // Será atualizado após o cálculo
|
|
valorMulta: new Decimal(0),
|
|
valorTotal: new Decimal(0)
|
|
}
|
|
});
|
|
|
|
return calculo;
|
|
} catch (error) {
|
|
console.error('Erro ao criar cálculo de pensão:', error);
|
|
throw new ApiError('Falha ao criar cálculo de pensão alimentícia', 500);
|
|
}
|
|
}
|
|
|
|
async buscarCalculo(id: string) {
|
|
const calculo = await prisma.calculoPensaoAlimenticia.findUnique({
|
|
where: { id },
|
|
include: {
|
|
processo: true,
|
|
cliente: true,
|
|
usuario: {
|
|
select: {
|
|
id: true,
|
|
nome: true,
|
|
email: true
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
if (!calculo) {
|
|
throw new Error('Cálculo não encontrado');
|
|
}
|
|
|
|
return calculo;
|
|
}
|
|
|
|
async listarCalculos(filtros: {
|
|
status?: string;
|
|
clienteId?: string;
|
|
processoId?: string;
|
|
usuarioId?: string;
|
|
}) {
|
|
try {
|
|
const calculos = await prisma.calculoPensaoAlimenticia.findMany({
|
|
where: filtros,
|
|
include: {
|
|
processo: true,
|
|
cliente: true,
|
|
usuario: {
|
|
select: {
|
|
id: true,
|
|
nome: true,
|
|
email: true
|
|
}
|
|
}
|
|
},
|
|
orderBy: {
|
|
criadoEm: 'desc'
|
|
}
|
|
});
|
|
|
|
return calculos;
|
|
} catch (error) {
|
|
console.error('Erro ao listar cálculos:', error);
|
|
throw new ApiError('Falha ao listar cálculos de pensão alimentícia', 500);
|
|
}
|
|
}
|
|
}
|