import { Body, Controller, Post, UseGuards } from '@nestjs/common' import { plainToClass } from 'class-transformer' import { BasicAuthorizationGuard } from '../../../guards' import { FoodPlan, Meal, MealGroup } from '../../../models' import { BaseEventParams } from '../../../params' import { FoodPlans } from '../domain' @UseGuards(BasicAuthorizationGuard) @Controller('nutritionists/food-plans') export class FoodPlanController { constructor(private readonly foodPlans: FoodPlans) {} @Post('delete-plan') async deletePlan(@Body() { event }: BaseEventParams): Promise { const newPlan = plainToClass(FoodPlan, event.data.new) const oldPlan = plainToClass(FoodPlan, event.data.old) if (!oldPlan.delete_requested_at && newPlan.delete_requested_at) { await this.foodPlans.deletePlan(newPlan.id) } } @Post('delete-group') async deleteGroup(@Body() { event }: BaseEventParams): Promise { const newGroup = plainToClass(MealGroup, event.data.new) const oldGroup = plainToClass(MealGroup, event.data.old) if (!oldGroup.delete_requested_at && newGroup.delete_requested_at) { await this.foodPlans.deleteGroup(newGroup.id) } } @Post('delete-meal') async deleteMeal(@Body() { event }: BaseEventParams): Promise { const newMeal = plainToClass(Meal, event.data.new) const oldMeal = plainToClass(Meal, event.data.old) if (!oldMeal.delete_requested_at && newMeal.delete_requested_at) { await this.foodPlans.deleteMeal(newMeal.id) } } }