import { OmitType } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
import { Allow, IsOptional } from 'class-validator';

import { IssueResolveInputDto } from './issue-resolve-input.dto';
import { toJsonValue } from './meeting-summary-transformers';

/**
 * Payload for the "update issue" dialog: one issue's resolution plus an
 * optional reference PDF (multipart field `documentReference`). The issue ID
 * comes from the route, so it is omitted from the body. The rich-text fields
 * are parsed from JSON strings because this endpoint accepts multipart data.
 */
export class UploadIssueResolveDto extends OmitType(IssueResolveInputDto, [
  'issueId',
] as const) {
  @IsOptional()
  @Transform(({ value }) => toJsonValue(value))
  @Allow()
  rgcDecision?: unknown;

  @IsOptional()
  @Transform(({ value }) => toJsonValue(value))
  @Allow()
  nextStep?: unknown;

  @IsOptional()
  @Transform(({ value }) => toJsonValue(value))
  @Allow()
  remark?: unknown;
}
