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

export class CreateIncidentReportingDto {
  @ApiProperty({ example: 1, description: "Fleet ID " })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "Fleet id",
    }),
  })
  @IsInt()
  fleet_id?: number

  @ApiProperty({ example: 1, description: "Trip ID (optional)" })
  @IsOptional()
  @IsInt()
  trip_id?: number

  @ApiProperty({ example: 2, description: "Issue Type ID" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "Issue id",
    }),
  })
  @IsInt()
  issue_type_id: number

  @ApiProperty({ example: 3, description: "Driver (Team Member) ID" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "Driver id",
    }),
  })
  @IsInt()
  driver_id: number

  @ApiProperty({ example: "Flat tire", description: "Issue title" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "Issue title",
    }),
  })
  @IsString()
  issue_title: string

  @ApiProperty({ example: "Flat tire", description: "Issue title" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "comment",
    }),
  })
  @IsString()
  comment: string

  @ApiProperty({
    example: "2025-08-05",
    description: "Created date (YYYY-MM-DD)",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "created date",
    }),
  })
  @IsString()
  created_date: string

  @ApiProperty({ example: "14:30", description: "Created time (HH:mm)" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "Created time",
    }),
  })
  @IsString()
  created_time: string
}
