import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from '@nestjs/common';
import { AccountingService, CreateVoucherDto, UpdateVoucherDto } from './accounting.service';

@Controller('accounting')
export class AccountingController {
  constructor(private svc: AccountingService) {}

  @Get('chart-of-accounts')
  getChartOfAccounts() {
    return this.svc.getChartOfAccounts();
  }

  @Get('vouchers')
  findAll(@Query('q') q?: string, @Query('voucherType') voucherType?: string, @Query('status') status?: string,
    @Query('fiscalYear') fiscalYear?: string, @Query('page') page?: string, @Query('limit') limit?: string) {
    return this.svc.findAll({ q, voucherType, status, fiscalYear, page: Number(page ?? 1), limit: Number(limit ?? 20) });
  }

  @Get('vouchers/summary')
  getSummary(@Query('fiscalYear') fiscalYear?: string) {
    return this.svc.getSummary(fiscalYear);
  }

  @Get('vouchers/:id')
  findOne(@Param('id') id: string) {
    return this.svc.findOne(id);
  }

  @Post('vouchers')
  create(@Body() dto: CreateVoucherDto) {
    return this.svc.create(dto);
  }

  @Patch('vouchers/:id')
  update(@Param('id') id: string, @Body() dto: UpdateVoucherDto) {
    return this.svc.update(id, dto);
  }

  @Delete('vouchers/:id')
  remove(@Param('id') id: string) {
    return this.svc.remove(id);
  }
}
