import { ApiProperty } from "@nestjs/swagger"
import {
  IsString,
  IsEnum,
  IsBoolean,
  IsOptional,
  IsUrl,
  IsSemVer,
} from "class-validator"

export class CreateAppVersionDto {
  @ApiProperty({ enum: ["android", "ios", "web"], example: "android" })
  @IsEnum(["android", "ios", "web"])
  platform: "android" | "ios" | "web"

  @ApiProperty({ example: "2.5.0" })
  @IsString()
  @IsSemVer()
  latest_version: string

  @ApiProperty({ example: "2.0.0" })
  @IsString()
  @IsSemVer()
  minimum_supported_version: string

  @ApiProperty({ example: false, required: false })
  @IsBoolean()
  @IsOptional()
  force_update?: boolean = false

  @ApiProperty({
    example: "https://play.google.com/store/apps/details?id=com.example.app",
  })
  @IsUrl()
  store_url: string

  @ApiProperty({
    example: "Bug fixes and performance improvements",
    required: false,
  })
  @IsString()
  @IsOptional()
  release_notes?: string

  @ApiProperty({ example: false, required: false })
  @IsBoolean()
  @IsOptional()
  maintenance?: boolean = false

  @ApiProperty({ example: false, required: false })
  @IsBoolean()
  @IsOptional()
  alert?: boolean = false

  @ApiProperty({
    example: "Scheduled maintenance in progress",
    required: false,
  })
  @IsString()
  @IsOptional()
  alert_message?: string

  @ApiProperty({
    example: "Scheduled maintenance in progress",
    required: false,
  })
  @IsString()
  @IsOptional()
  maintenance_message?: string

  @ApiProperty({
    enum: ["USER", "dispatcher", "driver"],
    example: "customer",
    required: false,
  })
  @IsEnum(["USER", "dispatcher", "driver"])
  type?: "USER" | "dispatcher" | "driver"
}
