import { ApiProperty } from "@nestjs/swagger"
import { IsNotEmpty, IsString, IsStrongPassword } from "class-validator"
import { validationMessage } from "../../../utils/helpers"
import { messageKey } from "../../../constants/message-keys"

export class SetPasswordDto {
  @ApiProperty({
    description: "Password setup token",
    example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "token",
    }),
  })
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "token",
      ":type": "string",
    }),
  })
  token: string

  @ApiProperty({
    description: "New password (minimum 6 characters)",
    example: "newPassword123",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "password",
    }),
  })
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "password",
      ":type": "string",
    }),
  })
  @IsStrongPassword(
    {
      minLength: 8,
      minLowercase: 1,
      minNumbers: 1,
      minSymbols: 1,
      minUppercase: 1,
    },
    { message: validationMessage(messageKey.password_validation) },
  )
  password: string
}
