import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  Query,
  UseGuards,
} from "@nestjs/common";
import { RazorpayWebhookService } from "./razorpay-webhook.service";
import { CreateRazorpayWebhookDto } from "./dto/create-razorpay-webhook.dto";
import { UpdateRazorpayWebhookDto } from "./dto/update-razorpay-webhook.dto";
import { RazorpayWebhook } from "./entities/razorpay-webhook.entity";
import { query } from "express";
import { ThrottlerGuard, SkipThrottle } from "@nestjs/throttler";

@Controller("razorpay-webhook")
export class RazorpayWebhookController {
  constructor(
    private readonly razorpayWebhookService: RazorpayWebhookService
  ) {}
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Post()
  create(@Body() createRazorpayWebhookDto: any) {
    console.log("asdfasdf");

    return this.razorpayWebhookService.create(createRazorpayWebhookDto);
  }
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Get("qr")
  findAll(@Query("hospital_id") hospital_id: number) {
    if (!hospital_id) {
      return {
        status: "failed",
        status_code: 400,
        message: "Enter the required field.",
      };
    }
    return this.razorpayWebhookService.createqr(hospital_id);
  }
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Get("/get-unread")
  findOne(
    @Query("hospital_id") hospital_id: number,
    @Query("limit") limit: number,
    @Query("page") page: number,
    @Query("date") date: any
  ) {
    if (!hospital_id) {
      return {
        status_code: 400,
        status: "failed",
        message: "Enter all the required fields",
      };
    }
    return this.razorpayWebhookService.findUnread(
      hospital_id,
      limit,
      page,
      date
    );
  }
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Get("/get-read")
  findOe(
    @Query("hospital_id") hospital_id: number,
    @Query("limit") limit: number,
    @Query("page") page: number,
    @Query("date") date: any,
    @Query("patient_id") patient_id?: string,
    @Query("search") search?: string
  ) {
    if (!hospital_id) {
      return {
        status_code: 400,
        status: "failed",
        message: "Enter all the required fields",
      };
    }
    return this.razorpayWebhookService.findRead(
      hospital_id,
      limit,
      page,
      date,
      patient_id,
      search
    );
  }
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Patch()
  update(@Query("id") id: string, @Body() data: any) {
    return this.razorpayWebhookService.update(id, data);
  }
  @UseGuards(ThrottlerGuard)
  @SkipThrottle()
  @Delete(":id")
  remove(@Param("id") id: string) {
    return this.razorpayWebhookService.remove(+id);
  }
}
