import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  UseGuards,
  Query,
} from "@nestjs/common"
import { CancelReasonsService } from "./cancel-reasons.service"
import { CreateCancelReasonDto } from "../dto/create-cancel-reason.dto"
import { UpdateCancelReasonDto } from "../dto/update-cancel-reason.dto"
import { ApiBearerAuth, ApiQuery, ApiTags } from "@nestjs/swagger"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"

@ApiTags("Cancel Reasons")
@Controller("cancel-reasons")
export class CancelReasonsController {
  constructor(private readonly cancelReasonsService: CancelReasonsService) {}

  @UseGuards(AuthGuardMiddleware)
  @ApiBearerAuth("access-token")
  @Post()
  create(@Body() createCancelReasonDto: CreateCancelReasonDto) {
    return this.cancelReasonsService.create(createCancelReasonDto)
  }

  @Get()
  @ApiQuery({
    name: "type",
    required: false,
    type: String,
  })
  findAll(@Query("type") type?: string) {
    return this.cancelReasonsService.findAll(type)
  }

  @UseGuards(AuthGuardMiddleware)
  @ApiBearerAuth("access-token")
  @Patch(":id")
  update(
    @Param("id") id: string,
    @Body() updateCancelReasonDto: UpdateCancelReasonDto,
  ) {
    return this.cancelReasonsService.update(+id, updateCancelReasonDto)
  }

  @UseGuards(AuthGuardMiddleware)
  @ApiBearerAuth("access-token")
  @Delete(":id")
  remove(@Param("id") id: string) {
    return this.cancelReasonsService.remove(+id)
  }
}
