import {
  Controller, Get, Param, Query, UseGuards, ParseUUIDPipe,
} from '@nestjs/common';
import { AuditService } from './audit.service';
import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard';
import { paginatedResponse } from '../../common/responses/api-response';
import { PaginationDto } from '../../common/dto/pagination.dto';

@Controller('audit')
@UseGuards(JwtAuthGuard)
export class AuditController {
  constructor(private readonly service: AuditService) {}

  @Get(':entityType/:entityId')
  async getByEntity(
    @Param('entityType') entityType: string,
    @Param('entityId', ParseUUIDPipe) entityId: string,
    @Query() query: PaginationDto,
  ) {
    const { items, meta } = await this.service.getByEntity(entityType, entityId, query);

    const mapped = items.map((item) => ({
      id: item.id,
      action: item.action,
      changes: item.changes,
      performed_by: item.performed_by,
      performer_name: item.performer?.name || null,
      created_at: item.created_at,
    }));

    return paginatedResponse(mapped, meta, 'Audit logs fetched successfully');
  }
}
