
import { Controller, Get, Param, Query, Req } from "@nestjs/common";
import { CylinderlogsService } from "./cylinderlogs.service";
import { Public } from "src/common/decorators/public.decorator";

@Controller("cylinderlogs")
export class CylinderlogsController {
  constructor(private readonly cylinderlogsService: CylinderlogsService) { }

  //GET ALL CYLINDER LOGS WITH DURATION
  @Get()
  async findAll(
    @Query("limit") limit?: string,
    @Query("page") page?: string,
    @Query('q') query?: string,
    @Query("movement") movement?: string,
    @Query("warehouseId") warehouseId?: string,
    @Query("challanDateFrom") challanDateFrom?: string,
    @Query("challanDateTo") challanDateTo?: string,
    @Query("dispatchDateFrom") dispatchDateFrom?: string,
    @Query("dispatchDateTo") dispatchDateTo?: string,
    @Query("vehicleId") vehicleId?: string,
    @Query("driverId") driverId?: string,
    @Req() req?: any,

  ) {
    const pageNumber = parseInt(page ?? "1");
    const perPage = parseInt(limit ?? "10");

    return await this.cylinderlogsService.findAll(pageNumber, perPage, query, movement, warehouseId, challanDateFrom, challanDateTo, dispatchDateFrom, dispatchDateTo, vehicleId, driverId, req.user);
  }


  @Public()
  @Get("cylinder/:cylinderId")
  async findLogsForCylinder(@Param("cylinderId") cylinderId: string) {
    return await this.cylinderlogsService.findLogsForCylinder(cylinderId);
  }

  // SEARCH CYLINDER LOGS
  @Get("search")
  async searchCylinderLog(
    @Query("q") query: string,
    @Query("limit") limit?: string,
    @Query("page") page?: string
  ) {
    const pageNumber = parseInt(page ?? "1");
    const perPage = parseInt(limit ?? "10"); // default 10
    return await this.cylinderlogsService.searchCylinderLog(query, pageNumber, perPage);
  }

  //GET SINGLE LOG BY ID
  @Get(":id")
  async findOne(@Param("id") id: string) {
    return await this.cylinderlogsService.findOne(id);
  }
}
