import { CanActivate, ExecutionContext, HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { TranslationService } from 'src/common/services/translation.service';
import { AgentStatus, UserType } from 'src/user/schema/users.schema';

/** Use after AuthGuard on agent routes that need an approved agent (everything past the documents screens). */
@Injectable()
export class AgentApprovedGuard implements CanActivate {
    constructor(private readonly translationService: TranslationService) { }

    canActivate(context: ExecutionContext): boolean {
        const request = context.switchToHttp().getRequest();
        const user = request.user_data;

        if (user?.user_type === UserType.AGENT && user.agent_status === AgentStatus.APPROVED) return true;

        throw new HttpException(
            { message: this.translationService.translate('AGENT_NOT_APPROVED', request.lang || user?.language || 'en') },
            HttpStatus.FORBIDDEN
        );
    }
}
