/**
 * 階層
 * @const {number}
 */
export const TIERS = {
  //OMDS東京
  TIER1: 1,
  //OMDS現地法人
  TIER2: 2,
  //代理店
  TIER3: 3,
  //販売店
  TIER4: 4,
  //エンドユーザー
  TIER5: 5,
} as const;

/**
 * 音声ファイルをEast USに保存する国リスト
 * @const {number}
 */
export const BLOB_STORAGE_REGION_US = ['CA', 'KY', 'US'];

/**
 * 音声ファイルをAustralia Eastに保存する国リスト
 * @const {number}
 */
export const BLOB_STORAGE_REGION_AU = ['AU', 'NZ'];

/**
 * 音声ファイルをNorth Europeに保存する国リスト
 * @const {number}
 */
export const BLOB_STORAGE_REGION_EU = [
  'AT',
  'BE',
  'BG',
  'HR',
  'CY',
  'CZ',
  'DK',
  'EE',
  'FI',
  'FR',
  'DE',
  'GR',
  'HU',
  'IS',
  'IE',
  'IT',
  'LV',
  'LI',
  'LT',
  'LU',
  'MT',
  'NL',
  'NO',
  'PL',
  'PT',
  'RO',
  'RS',
  'SK',
  'SI',
  'ZA',
  'ES',
  'SE',
  'CH',
  'TR',
  'GB',
];

/**
 * 管理ロール
 * @const {string[]}
 */
export const ADMIN_ROLES = {
  ADMIN: 'admin',
  STANDARD: 'standard',
} as const;

/**
 * ロール
 * @const {string[]}
 */
export const USER_ROLES = {
  NONE: 'none',
  AUTHOR: 'author',
  TYPIST: 'typist',
} as const;

/**
 * ライセンス注文ステータス（発行待ち）
 * @const {string}
 */
export const LICENSE_STATUS_ISSUE_REQUESTING = 'Issue Requesting';

/**
 * ライセンス注文ステータス（発行済み）
 * @const {string}
 */
export const LICENSE_STATUS_ISSUED = 'Issued';

/**
 * ライセンス種別
 * @const {string[]}
 */
export const LICENSE_TYPE = {
  TRIAL: 'TRIAL',
  NORMAL: 'NORMAL',
  CARD: 'CARD',
} as const;
/**
 * ライセンス状態
 * @const {string[]}
 */
export const LICENSE_ALLOCATED_STATUS = {
  UNALLOCATED: 'Unallocated',
  ALLOCATED: 'Allocated',
  REUSABLE: 'Reusable',
  DELETED: 'Deleted',
} as const;

/**
 * ライセンスの期限切れが近いと見なす日数のしきい値
 * @const {number}
 */
export const LICENSE_EXPIRATION_THRESHOLD_DAYS = 14;

/**
 * カードライセンスの桁数
 * @const {number}
 */
export const CARD_LICENSE_LENGTH = 20;

/**
 * 音声ファイルに紐づくオプションアイテムの数
 * @const {string}
 */
export const OPTION_ITEM_NUM = 10;

/**
 * 文字起こしタスクのステータス
 * @const {string[]}
 */
export const TASK_STATUS = {
  UPLOADED: 'Uploaded',
  PENDING: 'Pending',
  IN_PROGRESS: 'InProgress',
  FINISHED: 'Finished',
  BACKUP: 'Backup',
} as const;

/**
 * タスク一覧でソート可能な属性の一覧
 */
export const TASK_LIST_SORTABLE_ATTRIBUTES = [
  'JOB_NUMBER',
  'STATUS',
  'ENCRYPTION',
  'AUTHOR_ID',
  'WORK_TYPE',
  'FILE_NAME',
  'FILE_LENGTH',
  'FILE_SIZE',
  'RECORDING_STARTED_DATE',
  'RECORDING_FINISHED_DATE',
  'UPLOAD_DATE',
  'TRANSCRIPTION_STARTED_DATE',
  'TRANSCRIPTION_FINISHED_DATE',
] as const;

/**
 * タスク一覧のソート条件（昇順・降順）
 */
export const SORT_DIRECTIONS = ['ASC', 'DESC'] as const;

/**
 * 通知タグの最大個数
 * NotificationHubの仕様上タグ式のOR条件で使えるタグは20個まで
 * https://learn.microsoft.com/ja-jp/azure/notification-hubs/notification-hubs-tags-segment-push-message#tag-expressions
 */
export const TAG_MAX_COUNT = 20;

/**
 * 通知のプラットフォーム種別文字列
 */
export const PNS = {
  WNS: 'wns',
  APNS: 'apns',
};

/**
 * ユーザーのライセンス状態
 */
export const USER_LICENSE_STATUS = {
  NORMAL: 'Normal',
  NO_LICENSE: 'NoLicense',
  ALERT: 'Alert',
  RENEW: 'Renew',
};
