import { Controller, Get, Param, Delete, Query, UseGuards } from '@nestjs/common';
import { BlockedImagesService } from './blocked-images.service';
import { Roles } from 'src/common/decorators/roles.decorator';
import { USER_ROLE } from '../users/users.constant';
import { ResponseMessage } from 'src/common/decorators/response_message.decorator';
import { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';
import { PaginatedQueryDto } from 'src/common/builder/QueryBuilder.dto';
import { JwtAuthGuard } from 'src/guards/jwt-auth.guard';
import { RolesGuard } from 'src/guards/roles.guard';

@ApiTags('Blocked Images Endpoints')
@Controller('blocked-images')
@ApiBearerAuth()
@UseGuards(JwtAuthGuard, RolesGuard)
export class BlockedImagesController {
  constructor(private readonly blockedImagesService: BlockedImagesService) { }

  @Get('/get-blocked-images')
  @Roles(USER_ROLE.super_admin)
  @ResponseMessage('Successfully fetched all filter instructions')
  @ApiQuery({ type: PaginatedQueryDto })
  async findAll(
    @Query() query: Record<string, unknown>,
  ) {
    const result = await this.blockedImagesService.getBlockedImages(query);
    return result;
  }


  @Delete('/delete-blocked-image/:id')
  @Roles(USER_ROLE.super_admin)
  @ResponseMessage('Successfully deleted the blocked image')
  async deleteBlockedImage(
    @Param('id') id: string,
  ) {
    const result = await this.blockedImagesService.deleteBlockedImage(id);
    return result;
  }
}
