Files
sistema_base/apps/api/src/features/surveys/dto/statistics-response.dto.ts

63 lines
1.8 KiB
TypeScript

import { ApiProperty } from '@nestjs/swagger';
export class QuestionStatDto {
@ApiProperty({ description: 'Question identifier' })
questionId: string;
@ApiProperty({ description: 'Question label' })
label: string;
@ApiProperty({ description: 'Count of responses for this option' })
count: number;
}
export class SurveyDetailDto {
@ApiProperty({ description: 'Survey ID' })
id: number;
@ApiProperty({ description: 'Survey title' })
title: string;
@ApiProperty({ description: 'Survey description' })
description: string;
@ApiProperty({ description: 'Total responses received' })
totalResponses: number;
@ApiProperty({ description: 'Target audience' })
targetAudience: any;
@ApiProperty({ description: 'Creation date' })
createdAt: string;
@ApiProperty({ description: 'Closing date' })
closingDate?: string | null;
@ApiProperty({ description: 'Question statistics', type: [QuestionStatDto] })
// @ApiProperty({ description: 'Question statistics' })
questionStats: QuestionStatDto[];
// questionStats: any;
}
export class SurveyStatisticsResponseDto {
@ApiProperty({ description: 'Total number of surveys' })
totalSurveys: number;
@ApiProperty({ description: 'Total number of responses across all surveys' })
totalResponses: number;
@ApiProperty({ description: 'Completion rate percentage' })
completionRate: number;
@ApiProperty({ description: 'Surveys created by month' })
surveysByMonth: { month: string; count: number }[];
@ApiProperty({ description: 'Responses by audience type' })
responsesByAudience: { name: any; value: number }[];
@ApiProperty({ description: 'Response distribution by survey' })
responseDistribution: { title: string; responses: number }[];
@ApiProperty({ description: 'Detailed statistics for each survey', type: [SurveyDetailDto] })
surveyDetails: SurveyDetailDto[];
}