import { plainToClass, Transform } from 'class-transformer' import { cloneDeep } from 'lodash' import { parseDate } from '../utils' import { BaseModel } from './base.model' import { MealGroup } from './meal_group.model' import { Menu } from './menu.model' export class FoodPlan extends BaseModel { id: string goal_id: string meal_groups?: Array published_by_id?: string @Transform(value => parseDate(value), { toClassOnly: true }) delete_requested_at?: Date cloneToMenu(active = true, isAutoGenerated = true): Menu { const mealGroups = cloneDeep(this.meal_groups).map((mealGroup: MealGroup) => mealGroup.clone()) const menu: Partial = cloneDeep({ is_autogenerated: isAutoGenerated, reference_food_plan_id: this.id, active: active, goal_id: this.goal_id, }) return plainToClass(Menu, { ...menu, meal_groups: mealGroups, }) } }