import {
  Controller,
  Get,
  Post,
  Body,
  Param,
  Res,
  UseInterceptors,
  UploadedFiles,
  Query,
} from "@nestjs/common";
import { FilesInterceptor } from "@nestjs/platform-express";
import { SttTranslateSarvamService } from "./stt-translate-sarvam.service";
import { StartJobDto } from "./dto/start-job.dto";
import { UploadFileAsBatchDto } from "./dto/upload-file-as-batch.dto";
import { Response } from "express";
import { audioFileFilter } from "./middleware/audio-file-validation.middleware";

@Controller("stt-translate-sarvam")
export class SttTranslateSarvamController {
  constructor(
    private readonly sttTranslateSarvamService: SttTranslateSarvamService
  ) { }

  @Post("job/init")
  initializeJob() {
    return this.sttTranslateSarvamService.initializeJob();
  }

  @Get("job/status/:jobId")
  checkJobStatus(@Param("jobId") jobId: string) {
    return this.sttTranslateSarvamService.checkJobStatus(jobId);
  }

  @Post("job/start")
  startJob(@Body() startJobDto: StartJobDto) {
    return this.sttTranslateSarvamService.startJob(startJobDto);
  }

  @Post("job/upload-file-as-batch")
  @UseInterceptors(
    FilesInterceptor("files", undefined, { fileFilter: audioFileFilter })
  )
  uploadFileAsBatch(
    @Body() uploadFileAsBatchDto: UploadFileAsBatchDto,
    @UploadedFiles() files: Express.Multer.File[]
  ) {
    return this.sttTranslateSarvamService.uploadFileAsBatch(
      uploadFileAsBatchDto,
      files
    );
  }

  @Get("job/download-file-as-zip")
  downloadFileAsZip(
    @Body("opd_id") blobDownloadUrl: string,@Body("hospital_id") hospital_id: string) {
    return this.sttTranslateSarvamService.downloadFileAsZip(
      blobDownloadUrl,
      hospital_id
    );
  }
}
