import { Body, Controller, Post, UseGuards } from '@nestjs/common' import { plainToClass } from 'class-transformer' import { BasicAuthorizationGuard } from '../../../guards' import { BioimpedanceAnalysis, BioimpedanceAnalysisStatusOptions, Patient } from '../../../models' import { BaseEventParams } from '../../../params' import { Patients } from '../domain' @Controller('notification/patient') export class PatientController { constructor(private patients: Patients) {} @UseGuards(BasicAuthorizationGuard) @Post('nutri_changed') async notifyNutriChanged(@Body() { event }: BaseEventParams): Promise { await this.patients.nutriChanged( plainToClass(Patient, event.data.new), event.data.old.user_id, event.data.new.user_id, ) } @UseGuards(BasicAuthorizationGuard) @Post('bioimpedance_analysis_finished') async notifyBioimpedanceAnalysisFinished(@Body() { event }: BaseEventParams): Promise { const bioimpedanceAnalysis = BioimpedanceAnalysis.toInstance(event.data.new || event.data.row) if (bioimpedanceAnalysis.status === BioimpedanceAnalysisStatusOptions.FINISHED) await this.patients.bioimpedanceAnalysisFinished(bioimpedanceAnalysis) } }