import { Controller, Get, Post, Body, Patch, Param, Delete, ParseIntPipe, DefaultValuePipe, Query, ParseArrayPipe } from '@nestjs/common';
import { XeroTestingService } from './xero-testing.service';
import { CreateXeroTestingDto } from './dto/create-xero-testing.dto';
import { UpdateXeroTestingDto } from './dto/update-xero-testing.dto';

@Controller('xero-testing')
export class XeroTestingController {
	constructor(private readonly xeroTestingService: XeroTestingService) {}

	@Post()
	create(@Body() createXeroTestingDto: CreateXeroTestingDto) {
		return this.xeroTestingService.create(createXeroTestingDto);
	}

	@Patch(':id')
	update(@Param('id') id: string, @Body() updateXeroTestingDto: UpdateXeroTestingDto) {
		return this.xeroTestingService.update(+id, updateXeroTestingDto);
	}

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

	@Post(':id')
	createFirstInvoice(@Param('id', ParseIntPipe) id: number) {
		return this.xeroTestingService.test(id);
	}

	@Get('invoices/:jobId')
	findInvoiceByJobId(@Param('jobId', ParseIntPipe) jobId: number) {
		return this.xeroTestingService.invoiceByJobId(jobId);
	}

	@Get('payments/:jobId')
	findPaymentByJobId(@Param('jobId', ParseIntPipe) jobId: number) {
		return this.xeroTestingService.paymentByJobId(jobId);
	}

	@Get('invoices')
	findInvoicesByJobIds(@Query('jobIds', new DefaultValuePipe([]), ParseArrayPipe) jobIds: number[]) {
		return this.xeroTestingService.invoicesByJobIds(jobIds);
	}

	@Get('payments')
	findPaymentsByJobIds(@Query('jobIds', new DefaultValuePipe([]), ParseArrayPipe) jobIds: number[]) {
		return this.xeroTestingService.paymentsByJobIds(jobIds);
	}

	@Get()
	findAll() {
		return this.xeroTestingService.findAll();
	}
	// @Get('test')
	// test(:id) {
	// 	return this.xeroTestingService.test();
	// }

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