package response

import "agent-desk/internal/pkg/enums"

type ConversationTagResponse struct {
	ID   int64  `json:"id"`
	Name string `json:"name"`
}

type ConversationParticipantResponse struct {
	ID                    int64        `json:"id"`
	ParticipantType       string       `json:"participantType"`
	ParticipantID         int64        `json:"participantId"`
	ExternalParticipantID string       `json:"externalParticipantId,omitempty"`
	JoinedAt              string       `json:"joinedAt,omitempty"`
	LeftAt                string       `json:"leftAt,omitempty"`
	Status                enums.Status `json:"status"`
}

type ConversationResponse struct {
	ID                        int64                           `json:"id"`
	AIAgentID                 int64                           `json:"aiAgentId"`
	ChannelID                 int64                           `json:"channelId"`
	CustomerID                int64                           `json:"customerId"`
	CustomerName              string                          `json:"customerName"`
	Status                    enums.IMConversationStatus      `json:"status"`
	ServiceMode               enums.IMConversationServiceMode `json:"serviceMode"`
	Priority                  int                             `json:"priority"`
	CurrentAssigneeID         int64                           `json:"currentAssigneeId"`
	CurrentAssigneeName       string                          `json:"currentAssigneeName,omitempty"`
	CurrentTeamID             int64                           `json:"currentTeamId"`
	CurrentTeamName           string                          `json:"currentTeamName,omitempty"`
	LastMessageID             int64                           `json:"lastMessageId"`
	LastMessageAt             string                          `json:"lastMessageAt,omitempty"`
	LastActiveAt              string                          `json:"lastActiveAt,omitempty"`
	LastMessageSummary        string                          `json:"lastMessageSummary,omitempty"`
	CustomerUnreadCount       int                             `json:"customerUnreadCount"`
	AgentUnreadCount          int                             `json:"agentUnreadCount"`
	CustomerLastReadMessageID int64                           `json:"customerLastReadMessageId"`
	CustomerLastReadAt        string                          `json:"customerLastReadAt,omitempty"`
	AgentLastReadMessageID    int64                           `json:"agentLastReadMessageId"`
	AgentLastReadAt           string                          `json:"agentLastReadAt,omitempty"`
	CustomerOnline            bool                            `json:"customerOnline"`
	ClosedAt                  string                          `json:"closedAt,omitempty"`
	ClosedBy                  int64                           `json:"closedBy"`
	ClosedByName              string                          `json:"closedByName,omitempty"`
	CloseReason               string                          `json:"closeReason,omitempty"`
}

type ConversationDetailResponse struct {
	ConversationResponse
	Participants []ConversationParticipantResponse `json:"participants,omitempty"`
}
