import { IsNumber, IsBoolean, IsOptional, IsString, Min, Max, Matches } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';

export class CreateScheduleDto {
  @ApiProperty({ example: 1, description: 'روز هفته (۰=یکشنبه، ۶=شنبه)' })
  @IsNumber()
  @Min(0)
  @Max(6)
  @Type(() => Number)
  weekDay!: number;

  @ApiProperty({ example: '08:00', description: 'زمان باز شدن (HH:MM, از ۰۰:۰۰ تا ۲۳:۵۹)' })
  @IsString()
  @Matches(/^([01]\d|2[0-3]):([0-5]\d)$/, {
    message: 'openTime باید در فرمت HH:MM باشد (00:00 تا 23:59)',
  })
  openTime!: string;

  @ApiProperty({ example: '23:00', description: 'زمان بستن (HH:MM, از ۰۰:۰۰ تا ۲۳:۵۹)' })
  @IsString()
  @Matches(/^([01]\d|2[0-3]):([0-5]\d)$/, {
    message: 'closeTime باید در فرمت HH:MM باشد (00:00 تا 23:59)',
  })
  closeTime!: string;

  @ApiPropertyOptional({ example: true, description: 'آیا این برنامه فعال است؟' })
  @IsOptional()
  @IsBoolean()
  @Type(() => Boolean)
  isActive?: boolean;
}
