import { Controller, Get, Post, Body, Patch, Param, Delete, Query } from '@nestjs/common';
import { DocumentsService } from './documents.service';
import { CreateDocumentDto } from './dto/create-document.dto';
import { UpdateDocumentDto } from './dto/update-document.dto';
import { Public } from 'src/gestion-utilisateurs/authentication/decorators/public.decorator';
import { ResponseService } from 'src/services/response/response.service';

@Public()
@Controller('documents')
export class DocumentsController {
  constructor(private readonly documentsService: DocumentsService, private responseService: ResponseService) {}

  @Post('inserts')
  async create(@Body() createDocumentDto: CreateDocumentDto[]) {
    return await this.documentsService.create(createDocumentDto);
  }

  @Get()
  async findAll(
    @Query('typeDocument') typeDocument?: string,
    @Query('dateComptable') dateComptable?: string,
    @Query('codeAgence') codeAgence?: string,
    @Query('devise') devise?: string,
    @Query('numeroCompte') numeroCompte?: string,
    @Query('cleCompte') cleCompte?: string
  ) {
    const documents = await this.documentsService.findByParams({ typeDocument, dateComptable, codeAgence, devise, numeroCompte, cleCompte });
    return this.responseService.success('Liste des documents', documents);
  }

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

  @Patch(':id')
  update(@Param('id') id: string, @Body() updateDocumentDto: UpdateDocumentDto) {
    return this.documentsService.update(+id, updateDocumentDto);
  }

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