import { IsNotEmpty, IsString } from 'class-validator';
import { i18nValidationMessage } from 'nestjs-i18n';
import { I18nTranslations } from '../../.generate/i18n.generated';
import { ApiProperty } from '@nestjs/swagger';

export class CreateMenuDto {
  @ApiProperty({
    description: '排序'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  order: number;
  @ApiProperty({
    description: '菜单类型'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  menuType: string;
  @ApiProperty({
    description: '菜单key'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  name: string;
  @ApiProperty({
    description: '路由路径'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  path: string;
  @ApiProperty({
    description: '组件路径'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  component: string;
  @ApiProperty({
    description: '菜单图标',
    required: false,
  })
  @IsString({
    message: i18nValidationMessage<I18nTranslations>('validation.TYPE_ERROR', {type: 'string'}),
  })
  icon: string;
  @ApiProperty({
    description: '菜单国际化key'
  })
  @IsNotEmpty({
    message: i18nValidationMessage<I18nTranslations>('validation.NOT_EMPTY'),
  })
  locale: string;

  @ApiProperty({
    description: '父级id, 必须保证parentId存在',
    nullable: true
  })
  parentId: number | null;
}