import { Body, Controller, Post, UseGuards } from '@nestjs/common' import { BasicAuthorizationGuard } from '../../../guards' import { Availability } from '../../../models' import { Availabilities } from '../domain' import { GenerateAvailabilityParams } from './params' @Controller('bookings/availabilities') export class AvailabilitiesController { constructor(private readonly availabilities: Availabilities) {} @UseGuards(BasicAuthorizationGuard) @Post('generate') async generate( @Body() { input, session_variables }: GenerateAvailabilityParams, ): Promise<{ availability: Availability }> { const { date, userId, availableTimes } = input const role = session_variables['x-hasura-role'] const session_user = session_variables['x-hasura-user-id'] const user_id = role === 'nutritionist_manager' || role === 'admin' ? userId || session_user : session_user const availability = await this.availabilities.generate( { date: date as any, user_id, }, availableTimes as any, ) return { availability } } }