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

export class CreateAddressDto {
  @ApiProperty({
    description: "Address",
    example: "123 Main Street, City, State, ZIP",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "address",
    }),
  })
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "address",
      ":type": "string",
    }),
  })
  address: string

  @ApiProperty({
    description: "Latitude coordinate",
    example: "40.7128",
    required: false,
  })
  @IsOptional()
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "lat",
      ":type": "string",
    }),
  })
  lat?: string

  @ApiProperty({
    description: "Longitude coordinate",
    example: "-74.0060",
    required: false,
  })
  @IsOptional()
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "long",
      ":type": "string",
    }),
  })
  long?: string

  @ApiProperty({
    description: "Company ID",
    example: 1,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "company_id",
      ":type": "integer",
    }),
  })
  company_id?: number
}
