package converter

import (
	"github.com/tidbcloud/AgentTeam/internal/api/dto"
	"github.com/tidbcloud/AgentTeam/internal/store/app"
)

func ToAppNotificationResponse(result app.AppNotificationResult) dto.AppNotificationResponse {
	return dto.AppNotificationResponse{
		Accepted:             result.Accepted,
		AlreadyCreated:       result.AlreadyCreated,
		AlreadyApplied:       result.AlreadyApplied,
		NotificationID:       result.NotificationID,
		NotificationRevision: result.NotificationRevision,
		MessageID:            result.MessageID,
		ScopeID:              result.ScopeID,
		MessageSeq:           result.MessageSeq,
		Status:               result.Status,
		ContentKind:          result.ContentKind,
		CorrelationID:        result.CorrelationID,
		ExpiresAt:            result.ExpiresAt,
		ResolvedAt:           result.ResolvedAt,
		WithdrawnAt:          result.WithdrawnAt,
		CreatedAt:            result.CreatedAt,
		UpdatedAt:            result.UpdatedAt,
	}
}

func ToAppNotificationActionResponse(result app.AppNotificationActionResult) dto.AppNotificationActionResponse {
	return dto.AppNotificationActionResponse{
		Accepted:               result.Accepted,
		AlreadyAccepted:        result.AlreadyAccepted,
		ActionInvocationID:     result.ActionInvocationID,
		ServiceEventDeliveryID: result.ServiceEventDeliveryID,
		NotificationID:         result.NotificationID,
		MessageID:              result.MessageID,
		CardRevision:           result.CardRevision,
		NotificationRevision:   result.NotificationRevision,
		State:                  result.State,
		CorrelationID:          result.CorrelationID,
	}
}

func ToAppNotificationCardResponse(view app.AppNotificationCardView) dto.AppNotificationCardResponse {
	return dto.AppNotificationCardResponse{
		NotificationID:       view.NotificationID,
		NotificationRevision: view.NotificationRevision,
		NotificationStatus:   view.NotificationStatus,
		MessageID:            view.MessageID,
		ScopeID:              view.ScopeID,
		SchemaVersion:        view.SchemaVersion,
		CardRevision:         view.CardRevision,
		RenderPayload:        append([]byte(nil), view.RenderPayloadJSON...),
		State:                view.State,
		ExpiresAt:            view.ExpiresAt,
		CreatedAt:            view.CreatedAt,
		UpdatedAt:            view.UpdatedAt,
	}
}
