import { Controller, Get, HttpCode, HttpStatus, Inject, Query, Req, Res, UseGuards } from '@nestjs/common'; import { JwtAuthGuard } from '../../auth/guards/jwt.guard'; import { Response } from 'express'; import { ViewMasterService } from '../service/view-master.service'; @Controller('entity') @UseGuards(JwtAuthGuard) export class ViewMasterController { constructor( @Inject('ViewMasterService') private readonly viewMaster: ViewMasterService, ) { } @Get('viewMaster') @HttpCode(HttpStatus.OK) async getEntityJsonByType( @Query('entity_type') entityType: string, @Query('type') type: string, @Query('code') code: string, @Res() res: Response, @Req() req: Request & { user: any }, ) { const loggedInUser = req.user.userData; try { if (!entityType || !type) { return res.status(HttpStatus.BAD_REQUEST).json({ success: false, message: 'Missing entity_type or type query parameter', }); } const result = await this.viewMaster.getEntityJson( entityType, type, loggedInUser, code, ); return res.status(HttpStatus.OK).json({ success: true, message: 'Entity data fetched successfully', data: result, }); } catch (error) { return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({ success: false, message: error.message || 'Error fetching entity data', }); } } @Get('view_master/dropdown') @HttpCode(HttpStatus.OK) async getDropdownData( @Req() req: Request & { user: any }, @Query() query: Record, @Res() res: Response, ) { const loggedInUser = req.user.userData; const entityType = query.entity_type; if (!entityType) { return res.status(HttpStatus.BAD_REQUEST).json({ success: false, message: 'Missing entity_type query parameter', }); } const result = await this.viewMaster.getViewMasterByEntityType( entityType, loggedInUser, ); return res.status(HttpStatus.OK).json({ data: result, }); } }