import { Body, Controller, Headers, Post, UseGuards } from '@nestjs/common' import { AppHeadersParams } from '../../../params' import { JWTOrBasicAuthorizationGuard } from '../../../guards/jwt_basic_authorization.guard' import { Plan } from '../domain/plan' import { PlanResult } from '../domain/types' import { PlanFeature } from '../../../models' import { AvailableFeaturesParams, AvailableParams } from './params' @UseGuards(JWTOrBasicAuthorizationGuard) @Controller('plans') export class PlansController { constructor(private readonly plan: Plan) {} @Post('available_features') async getAvailableFeatures( @Body() { input }: AvailableFeaturesParams, ): Promise>> { return await this.plan.getAvailableFeatures(input.country_code) } @Post('available') async fetch( @Body() { input, session_variables }: AvailableParams, @Headers() { version, os }: AppHeadersParams, ): Promise> { return await this.plan.fetchPlans(session_variables['x-hasura-user-id'], version, os, input?.discount_coupon) } }