import { ApiProperty } from "@nestjs/swagger"

export class DriverChatContactDto {
  @ApiProperty({ example: 123, description: "Driver ID" })
  id: number

  @ApiProperty({ example: "John", description: "Driver first name" })
  first_name: string

  @ApiProperty({ example: "Doe", description: "Driver last name" })
  last_name: string

  @ApiProperty({ example: "+1234567890", description: "Driver phone number" })
  phone_number: string

  @ApiProperty({
    example: "https://example.com/profile.jpg",
    description: "Driver profile photo URL",
    nullable: true,
  })
  profile_photo?: string

  @ApiProperty({
    example: "Hello dispatcher, I'm on my way",
    description: "Last message content",
    nullable: true,
  })
  last_message?: string

  @ApiProperty({
    example: "2025-01-15T10:30:00Z",
    description: "Last message timestamp",
    nullable: true,
  })
  last_message_time?: Date

  @ApiProperty({ example: 2, description: "Number of unread messages" })
  unread_count: number
}

export class CustomerChatContactDto {
  @ApiProperty({ example: 456, description: "Customer ID" })
  id: number

  @ApiProperty({ example: "ABC Hospital", description: "Customer name" })
  customer_name: string

  @ApiProperty({
    example: "123 Main St, City, State",
    description: "Customer primary address",
  })
  primary_address: string

  @ApiProperty({ example: "+1234567890", description: "Customer phone number" })
  phone_number: string

  @ApiProperty({
    example: "Hello dispatcher, we need to reschedule",
    description: "Last message content",
    nullable: true,
  })
  last_message?: string

  @ApiProperty({
    example: "2025-01-15T10:30:00Z",
    description: "Last message timestamp",
    nullable: true,
  })
  last_message_time?: Date

  @ApiProperty({ example: 1, description: "Number of unread messages" })
  unread_count: number
}

export class ChatContactsResponseDto {
  @ApiProperty({
    type: [DriverChatContactDto],
    description: "List of drivers the dispatcher has chatted with",
  })
  drivers?: DriverChatContactDto[]

  @ApiProperty({
    type: [CustomerChatContactDto],
    description: "List of customers the dispatcher has chatted with",
  })
  customers?: CustomerChatContactDto[]
}
