targo-backend/src/time-and-attendance/domains/services/mileage.service.ts

25 lines
1014 B
TypeScript

import { Injectable } from "@nestjs/common";
import { Result } from "src/common/errors/result-error.factory";
import { PrismaService } from "prisma/postgres/prisma-postgres.service";
@Injectable()
export class MileageService {
constructor(private readonly prisma: PrismaService) { }
public async calculateReimbursement(amount: number, bank_code_id: number): Promise<Result<number, string>> {
if (amount < 0) return { success: false, error: 'The amount must be higher than 0' };
//fetch modifier
const bank_code = await this.prisma.bankCodes.findUnique({
where: { id: bank_code_id },
select: { modifier: true, type: true },
});
if (!bank_code) return { success: false, error: `bank_code ${bank_code_id} not found` }
//calculate total amount to reimburs
const reimboursement = amount * bank_code.modifier;
const result = parseFloat(reimboursement.toFixed(2));
return { success: true, data: result };
}
}