import { Controller, Post, Body, UseGuards } from '@nestjs/common' import { plainToClass } from 'class-transformer' import { Financial } from '../domain' import { BasicAuthorizationGuard } from '../../../guards' import { BaseEventParams } from '../../../params' import { Appointment } from '../../../models' import { ChangeIncomeStatusParams, ConsolidateMonthParams } from './params' @UseGuards(BasicAuthorizationGuard) @Controller('nutritionists/financial') export class FinancialController { constructor(private readonly financial: Financial) {} @Post('change_income_status') async changeIncomeStatus(@Body() { input }: ChangeIncomeStatusParams): Promise<{ success: boolean }> { await this.financial.changeIncomeStatus(input.income_id, input.status) return { success: true } } @Post('consolidate_month') async consolidateMonth(@Body() { input }: ConsolidateMonthParams): Promise<{ success: boolean }> { await this.financial.consolidateMonth(input.user_id, +input.reference_month) return { success: true } } @Post('create_income_by_appointment') async createIncomeByAppointment(@Body() { event }: BaseEventParams): Promise { const appointment = plainToClass(Appointment, event.data.new) if (appointment.state === event.data.old?.state) return return this.financial.createIncomeByAppointment(appointment) } }