package response

import (
	"time"
)

// Chat Session Response
type ChatSessionResponse struct {
	ID           uint                       `json:"id"`
	Name         *string                    `json:"name"`
	Type         string                     `json:"type"`
	CreatedBy    uint                       `json:"createdBy"`
	CreatedAt    time.Time                  `json:"createdAt"`
	UpdatedAt    time.Time                  `json:"updatedAt"`
	Creator      *UserBasicInfo             `json:"creator,omitempty"`
	Participants []*ChatParticipantResponse `json:"participants,omitempty"`
	LastMessage  *ChatMessageResponse       `json:"lastMessage,omitempty"`
	UnreadCount  int                        `json:"unreadCount"`
}

// Chat Message Response
type ChatMessageResponse struct {
	ID            uint           `json:"id"`
	ChatSessionID uint           `json:"chatSessionId"`
	SenderID      uint           `json:"senderId"`
	Message       string         `json:"message"`
	MessageType   string         `json:"messageType"`
	IsEdited      bool           `json:"isEdited"`
	EditedAt      *time.Time     `json:"editedAt"`
	IsDeleted     bool           `json:"isDeleted"`
	DeletedAt     *time.Time     `json:"deletedAt"`
	CreatedAt     time.Time      `json:"createdAt"`
	UpdatedAt     time.Time      `json:"updatedAt"`
	Sender        *UserBasicInfo `json:"sender,omitempty"`
}

// Chat Participant Response
type ChatParticipantResponse struct {
	ID            uint           `json:"id"`
	ChatSessionID uint           `json:"chatSessionId"`
	UserID        uint           `json:"userId"`
	JoinedAt      time.Time      `json:"joinedAt"`
	LeftAt        *time.Time     `json:"leftAt"`
	IsActive      bool           `json:"isActive"`
	CreatedAt     time.Time      `json:"createdAt"`
	UpdatedAt     time.Time      `json:"updatedAt"`
	User          *UserBasicInfo `json:"user,omitempty"`
}

// User Basic Info (reused from work_history)
type UserBasicInfo struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Fullname string `json:"fullname"`
	Email    string `json:"email"`
}
