package agent

import (
	"net/http"

	"github.com/gin-gonic/gin"

	"github.com/tidbcloud/AgentTeam/internal/api/dto"
)

func (h *AgentThreadHandler) writeAgentThreadAttestation(c *gin.Context) {
	var request agentThreadAttestationRequest
	if err := c.ShouldBindJSON(&request); err != nil {
		writeAgentThreadError(c, agentThreadStageRequestValidation, badRequest("invalid request body"))
		return
	}
	attestation, ok := h.resolveAgentThreadAttestation(c, request.target())
	if !ok {
		return
	}
	c.JSON(http.StatusOK, agentThreadAttestationResponse(attestation))
}

func agentThreadAttestationResponse(attestation AgentThreadAttestation) dto.AgentThreadAttestationResponse {
	return dto.AgentThreadAttestationResponse{
		WorkspaceID:       attestation.WorkspaceID,
		TargetKey:         attestation.TargetKey,
		TargetType:        attestation.TargetType,
		MessageID:         attestation.MessageID,
		ThreadChannelID:   attestation.ThreadChannelID,
		ParentChannelID:   attestation.ParentChannelID,
		RootMessageID:     attestation.RootMessageID,
		AgentID:           attestation.AgentID,
		AgentMemberID:     attestation.AgentMemberID,
		ActingUserID:      attestation.ActingUserID,
		ActingMemberID:    attestation.ActingMemberID,
		ActingDisplayName: attestation.ActingDisplayName,
	}
}
