package response

import (
	"time"
)

// Conversations Response DTOs
type ConversationsResponse struct {
	ID             uint       `json:"id"`
	Participant1ID uint       `json:"participant1Id"`
	Participant2ID uint       `json:"participant2Id"`
	LastMessageAt  *time.Time `json:"lastMessageAt"`
	CreatedAt      time.Time  `json:"createdAt"`
	UpdatedAt      time.Time  `json:"updatedAt"`
	
	// Nested user info
	Participant1 *UserBasicInfo `json:"participant1,omitempty"`
	Participant2 *UserBasicInfo `json:"participant2,omitempty"`
	
	// Last message preview
	LastMessage *ChatMessagesResponse `json:"lastMessage,omitempty"`
	
	// Unread count
	UnreadCount int `json:"unreadCount"`
}

// Chat Messages Response DTOs
type ChatMessagesResponse struct {
	ID             uint       `json:"id"`
	ConversationID uint       `json:"conversationId"`
	SenderID       uint       `json:"senderId"`
	MessageText    *string    `json:"messageText"`
	MessageType    string     `json:"messageType"`
	FileURL        *string    `json:"fileUrl"`
	FileName       *string    `json:"fileName"`
	FileSize       *int64     `json:"fileSize"`
	IsRead         bool       `json:"isRead"`
	CreatedAt      time.Time  `json:"createdAt"`
	
	// Nested user info
	Sender *UserBasicInfo `json:"sender,omitempty"`
}

type UserBasicInfo struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Fullname string `json:"fullname"`
	Email    string `json:"email"`
}

// Conversation with messages
type ConversationWithMessagesResponse struct {
	Conversation *ConversationsResponse  `json:"conversation"`
	Messages     []*ChatMessagesResponse `json:"messages"`
	Pagination   interface{}             `json:"pagination"`
}
