package mapper

import (
	"narasi-ahli-be/app/database/entity"
	"narasi-ahli-be/app/module/ai_chat/response"
)

func AIChatSessionsResponseMapper(session *entity.AIChatSessions) *response.AIChatSessionsResponse {
	result := &response.AIChatSessionsResponse{
		ID:           session.ID,
		SessionID:    session.SessionID,
		UserID:       session.UserID,
		AgentID:      session.AgentID,
		Title:        session.Title,
		MessageCount: session.MessageCount,
		IsActive:     session.IsActive,
		CreatedAt:    session.CreatedAt,
		UpdatedAt:    session.UpdatedAt,
	}

	if session.User != nil {
		result.User = &response.UserBasicInfo{
			ID:       session.User.ID,
			Username: session.User.Username,
			Fullname: session.User.Fullname,
			Email:    session.User.Email,
		}
	}

	return result
}

func AIChatMessagesResponseMapper(message *entity.AIChatMessages) *response.AIChatMessagesResponse {
	return &response.AIChatMessagesResponse{
		ID:          message.ID,
		SessionID:   message.SessionID,
		MessageType: message.MessageType,
		Content:     message.Content,
		IsActive:    message.IsActive,
		CreatedAt:   message.CreatedAt,
	}
}

func AIChatSessionWithMessagesResponseMapper(session *entity.AIChatSessions, messages []*entity.AIChatMessages) *response.AIChatSessionWithMessagesResponse {
	sessionResponse := AIChatSessionsResponseMapper(session)

	var messagesResponse []*response.AIChatMessagesResponse
	for _, message := range messages {
		messagesResponse = append(messagesResponse, AIChatMessagesResponseMapper(message))
	}

	return &response.AIChatSessionWithMessagesResponse{
		Session:  sessionResponse,
		Messages: messagesResponse,
	}
}

func AIChatLogsResponseMapper(log *entity.AIChatLogs) *response.AIChatLogsResponse {
	result := &response.AIChatLogsResponse{
		ID:            log.ID,
		UserID:        log.UserID,
		SessionID:     log.SessionID,
		StartDate:     log.StartDate,
		EndDate:       log.EndDate,
		TotalDuration: log.TotalDuration,
		CreatedAt:     log.CreatedAt,
		UpdatedAt:     log.UpdatedAt,
	}

	return result
}
