import { Prisma } from "../generated/prisma/client.js";
import { ExpenseRepository } from "../repositories/ExpenseRepository.js";

export class ExpenseService {
    constructor(
        private readonly expenseRepository: ExpenseRepository = new ExpenseRepository(),
    ) { }

    async create(data: Prisma.ExpenseCreateInput) {
        return this.expenseRepository.create(data)
    }

    async findAll(skip?: number, take?: number, search?: string, startDate?: string, endDate?: string) {
        return this.expenseRepository.findAll(skip, take, search, startDate, endDate)
    }

    async findById(id: number) {
        return this.expenseRepository.findById(id)
    }

    async update(id: number, data: Prisma.ExpenseUpdateInput) {
        return this.expenseRepository.update(id, data)
    }

    async delete(id: number) {
        return this.expenseRepository.delete(id)
    }

    //Excel export
    async findAllForExport(search?: string, startDate?: string, endDate?: string) {
        return this.expenseRepository.findAllForExport(search, startDate, endDate);
    }

    async getMonthlyExpenses(year: number) {
        return this.expenseRepository.getMonthlyExpenses(year);
    }
}

