package task

import (
	"net/http"
	"strings"

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

// Create handles POST /api/tasks/:taskId/checkpoints.
// It appends a checkpoint entry to a task's activity timeline.
func (handler *CheckpointHandler) Create(r api.WorkspaceScopedJSON[dto.TaskCheckpointRequest]) (api.Response, error) {
	request := r.Body

	taskID := strings.TrimSpace(r.Gin.Param("taskId"))
	if taskID == "" {
		return api.Response{}, api.NewHTTPError(http.StatusBadRequest, "taskId is required")
	}

	response, err := handler.taskBoard.AddTaskCheckpoint(r.Context(), AddTaskCheckpointRequest{
		Context: NewUserServiceContext(r.WorkspaceID(), r.User.User.ID, r.User.User.Name),
		Task:    TaskRef{TaskID: taskID},
		Checkpoint: TaskCheckpointInput{
			Text: request.Text,
		},
	})
	if err != nil {
		return api.Response{}, err
	}

	return api.OK(converter.ToTaskResponse(taskboardTaskForDTO(response.Task))), nil
}
