import { ApiProperty } from '@nestjs/swagger';
import { IsEmail, IsNotEmpty, IsString } from 'class-validator';
import {
  ApiFilterParamsDecorator,
  ApiGetListParams,
} from 'src/common/types/api-filter-params';

export class SendInvitationDTO {
  @IsEmail()
  @IsNotEmpty()
  @ApiProperty({})
  email: string;

  @IsString()
  @IsNotEmpty()
  @ApiProperty({})
  lang: string;
}

export class AcceptInvitationDTO {
  @IsString()
  @IsNotEmpty()
  @ApiProperty({})
  code: string;

  @IsString()
  @IsNotEmpty()
  @ApiProperty({})
  username: string;
}

export class RevokeInvitationDTO {
  @IsEmail()
  @IsNotEmpty()
  @ApiProperty({})
  email: string;
}

export class InvitationQueryDTOWhere {}

@ApiFilterParamsDecorator(InvitationQueryDTOWhere)
export class InvitationQueryDTO extends ApiGetListParams<InvitationQueryDTOWhere> {}

export class InvitationDTO {
  @ApiProperty({})
  email: string;

  @ApiProperty({})
  inviterId: number;

  @ApiProperty({})
  createdAt: Date;
}
