import { ApiProperty } from '@nestjs/swagger';
import { IsInt, Matches, Max, Min, Length } from 'class-validator';

export class CreateOrdersRequest {
  @ApiProperty()
  @Matches(/^[A-Z0-9]+$/)
  poNumber: string;

  @ApiProperty()
  @IsInt()
  @Min(1)
  @Max(9999)
  orderCount: number;
}

export class CreateOrdersResponse {}

export class IssueCardLicensesRequest {
  @ApiProperty()
  @IsInt()
  @Min(1)
  @Max(9999)
  createCount: number;
}

export class IssueCardLicensesResponse {
  @ApiProperty()
  cardLicenseKeys: string[];
}

export class ActivateCardLicensesRequest {
  @ApiProperty()
  @Matches(/^[A-Z0-9]+$/)
  @Length(20, 20)
  cardLicenseKey: string;
}

export class ActivateCardLicensesResponse {}

// ライセンス算出用に、その日の始まりの時刻（0:00:00.000）の日付を取得する
export class DateWithZeroTime extends Date {
  constructor(...args: any[]) {
    if (args.length === 0) {
      super(); // 引数がない場合、現在の日付で初期化
    } else {
      super(...(args as [string])); // 引数がある場合、引数をそのままDateクラスのコンストラクタに渡す
    }
    this.setHours(0, 0, 0, 0); // 時分秒を"0:00:00.000"に固定
  }
}
