import { Body, Controller, HttpCode, HttpStatus, Post, Query, Req, Res, UseGuards, } from '@nestjs/common'; import { EntityTableService } from '../service/entity-table.service'; import { Response } from 'express'; import { JwtAuthGuard } from '../../auth/guards/jwt.guard'; import { PopulateMetaService } from '../service/populate-meta.service'; import { EntityMasterService } from '../service/entity-master.service'; @Controller('meta') @UseGuards(JwtAuthGuard) export class MetaController { constructor( private readonly entityTableService: EntityTableService, private readonly populateMetaService: PopulateMetaService, private readonly entityMaster: EntityMasterService, ) {} @Post('get-table-data') @HttpCode(HttpStatus.OK) async getTableMetaData( @Query('entity_type') entityType: string, @Query('list_type') listType: string, @Res() response: Response, @Req() req: Request & { user: any }, ) { const loggedInUser = req.user.userData; const entityTableDto = await this.entityTableService.getTableMetaDataForListing( entityType, listType, loggedInUser, ); return response.status(HttpStatus.OK).json({ success: true, data: entityTableDto, message: 'Data fetch successfully!', }); } @Post('get-filter-data') @HttpCode(HttpStatus.OK) async getFilterData( @Query('entity_type') entityType: string, @Res() response: Response, @Req() req: Request & { user: any }, ) { const loggedInUser = req.user.userData; const entitydata = await this.entityMaster.getFilterMetaData( entityType, loggedInUser, ); return response.status(HttpStatus.OK).json({ success: true, data: entitydata, message: 'Data fetch successfully!', }); } @Post('populate') @HttpCode(HttpStatus.OK) async populateMetaData( @Query('organization_id') organizationId: number, @Res() response: Response, @Req() req: Request & { user: any }, ) { const loggedInUser = req.user.userData; const result = await this.populateMetaService.populateMetaData(organizationId); return response.status(HttpStatus.OK).json(result); } @Post('operation-list') @HttpCode(HttpStatus.OK) async getOperationList(@Req() req: Request & { user: any }) { const loggedInUser = req.user.userData; const result = await this.entityMaster.getOperationList(loggedInUser); return result; } @Post('getattributesoftypedate') @HttpCode(HttpStatus.OK) async getAttributesOfTypeDate( @Req() req: Request & { user: any }, @Body('entity_type') entity_type: string, ) { const loggedInUser = req.user.userData; const result = await this.entityMaster.getAttributesOfTypeDate( entity_type, loggedInUser, ); return result; } }