import { Body, Controller, Delete, Get, Param, Post, Put, Query, Request } from '@nestjs/common';
import { LoanSettingsService } from './loan-settings.service';
import { RequirePermissions } from '../../common/decorators/permissions.decorator';

@Controller('loan-settings')
export class LoanSettingsController {
  constructor(private svc: LoanSettingsService) {}

  @Get('titles')
  @RequirePermissions('settings.view')
  listTitles(@Request() req: any, @Query('officeId') officeId?: string) {
    return this.svc.listTitles(req.tenant, officeId);
  }

  @Post('titles')
  @RequirePermissions('settings.create')
  createTitle(@Request() req: any, @Body() body: any) {
    return this.svc.createTitle(req.tenant, body);
  }

  @Put('titles/:id')
  @RequirePermissions('settings.update')
  updateTitle(@Request() req: any, @Param('id') id: string, @Body() body: any) {
    return this.svc.updateTitle(req.tenant, id, body);
  }

  @Delete('titles/:id')
  @RequirePermissions('settings.delete')
  deleteTitle(@Request() req: any, @Param('id') id: string) {
    return this.svc.deleteTitle(req.tenant, id);
  }

  @Get('purposes')
  @RequirePermissions('settings.view')
  listPurposes(@Request() req: any, @Query('officeId') officeId?: string) {
    return this.svc.listPurposes(req.tenant, officeId);
  }

  @Post('purposes')
  @RequirePermissions('settings.create')
  createPurpose(@Request() req: any, @Body() body: any) {
    return this.svc.createPurpose(req.tenant, body);
  }

  @Put('purposes/:id')
  @RequirePermissions('settings.update')
  updatePurpose(@Request() req: any, @Param('id') id: string, @Body() body: any) {
    return this.svc.updatePurpose(req.tenant, id, body);
  }

  @Delete('purposes/:id')
  @RequirePermissions('settings.delete')
  deletePurpose(@Request() req: any, @Param('id') id: string) {
    return this.svc.deletePurpose(req.tenant, id);
  }
}
