import { PaymeException } from './payme.exception';
import {
  ArgumentsHost,
  Catch,
  ExceptionFilter,
  HttpStatus,
} from '@nestjs/common';
import { Request, Response } from 'express';

@Catch(PaymeException)
export class PaymeExceptionFilter implements ExceptionFilter {
  catch(exception: PaymeException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const request = ctx.getRequest<Request>();
    const response = ctx.getResponse<Response>();
    const requestId = request.body?.id ?? null;

    response.status(HttpStatus.OK).json({
      id: requestId,
      error: exception.error,
    });
  }
}
