import { ApiProperty } from '@nestjs/swagger';

export class AudioUploadLocationRequest {}

export class AudioUploadLocationResponse {
  @ApiProperty({
    description: 'Blob StorageにアクセスするためのSASトークン入りのアクセスURL',
  })
  url: string;
}

export class AudioDownloadLocationRequest {
  @ApiProperty({ description: 'ODMSCloud上で管理する音声ファイルのID' })
  audioFileId: number;
}

export class AudioDownloadLocationResponse {
  @ApiProperty({
    description: 'Blob StorageにアクセスするためのSASトークン入りのアクセスURL',
  })
  url: string;
}

export class TemplateDownloadLocationRequest {
  @ApiProperty({ description: '文字起こし対象の音声ファイルID' })
  audioFileId: number;
}

export class TemplateDownloadLocationResponse {
  @ApiProperty()
  url: string;
}

export class AudioOptionItem {
  @ApiProperty({ minLength: 1, maxLength: 16 })
  optionItemLabel: string;
  @ApiProperty({ minLength: 1, maxLength: 20 })
  optionItemValue: string;
}

export class AudioUploadFinishedRequest {
  @ApiProperty({ description: 'アップロード先Blob Storage(ファイル名含む)' })
  url: string;
  @ApiProperty({ description: '自分自身(ログイン認証)したAuthorID' })
  authorId: string;
  @ApiProperty({ description: '音声ファイル名' })
  fileName: string;
  @ApiProperty({
    description: '音声ファイルの録音時間（ミリ秒の整数値）',
  })
  duration: string;
  @ApiProperty({
    description:
      '音声ファイルの録音作成日時(開始日時)（yyyy-mm-ddThh:mm:ss.sss）',
  })
  createdDate: string;
  @ApiProperty({
    description: '音声ファイルの録音作成終了日時（yyyy-mm-ddThh:mm:ss.sss）',
  })
  finishedDate: string;
  @ApiProperty({
    description: '音声ファイルのアップロード日時（yyyy-mm-ddThh:mm:ss.sss）',
  })
  uploadedDate: string;
  @ApiProperty({ description: '音声ファイルのファイルサイズ（Byte）' })
  fileSize: number;
  @ApiProperty({ description: '優先度 "00":Normal / "01":High' })
  priority: string;
  @ApiProperty({ description: '録音形式: DSS/DS2(SP)/DS2(QP)' })
  audioFormat: string;
  @ApiProperty()
  comment: string;
  @ApiProperty()
  workType: string;
  @ApiProperty({
    type: [AudioOptionItem],
    maxItems: 10,
    minItems: 10,
    description: '音声ファイルに紐づくOption Itemの一覧（10個固定）',
  })
  optionItemList: AudioOptionItem[];
  @ApiProperty()
  isEncrypted: boolean;
}

export class AudioUploadFinishedResponse {
  @ApiProperty({ description: '8桁固定の数字' })
  jobNumber: string;
}
