import { Controller, Get, Post, Put, Delete, Body, Param, Query } from '@nestjs/common';
import { FarmService } from './farm.service';
import { FarmModel } from './entities/farm.entity';

@Controller('farm')
export class FarmController {
  constructor(private readonly farmService: FarmService) {}

  @Get()
  findAll(@Query('userId') userId?: string) {
    if (userId) {
      return this.farmService.findByUserId(+userId);
    }
    return this.farmService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.farmService.findOne(+id);
  }

  /**
   * GET /farm/:farmNo/analysis-latest - 농장 최신 분석 의뢰 정보 조회
   */
  @Get(':farmNo/analysis-latest')
  getLatestAnalysisRequest(@Param('farmNo') farmNo: string) {
    return this.farmService.getLatestAnalysisRequest(+farmNo);
  }

  /**
   * GET /farm/:farmNo/analysis-all - 농장 전체 분석 의뢰 목록 조회
   */
  @Get(':farmNo/analysis-all')
  getAllAnalysisRequests(@Param('farmNo') farmNo: string) {
    return this.farmService.getAllAnalysisRequests(+farmNo);
  }

  @Post()
  create(@Body() data: Partial<FarmModel>) {
    return this.farmService.create(data);
  }

  @Put(':id')
  update(@Param('id') id: string, @Body() data: Partial<FarmModel>) {
    return this.farmService.update(+id, data);
  }

  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.farmService.remove(+id);
  }
}
