package commands

import (
	"fmt"

	"github.com/spf13/cobra"
)

var assignTaskCmd = &cobra.Command{
	Use:   "assign-task [task-id] [agent-name]",
	Short: "Assign a task to an agent",
	Long: `Assign an existing task to a specific agent.

Examples:
  staff assign-task task-1234567890-abcd1234 backend-engineer
  staff assign-task task-1234567890-abcd1234 frontend-engineer`,
	Args: cobra.ExactArgs(2),
	RunE: runAssignTask,
}

func runAssignTask(cmd *cobra.Command, args []string) error {
	taskID := args[0]
	agentName := args[1]

	// Get the task
	task, err := taskManager.GetTask(taskID)
	if err != nil {
		return fmt.Errorf("failed to get task: %w", err)
	}

	// Assign the task
	task.Assignee = agentName
	if err := taskManager.UpdateTask(task); err != nil {
		return fmt.Errorf("failed to assign task: %w", err)
	}

	fmt.Printf("Task %s assigned to %s successfully!\n", taskID, agentName)
	fmt.Printf("Title: %s\n", task.Title)
	fmt.Printf("Priority: %s\n", task.Priority)
	fmt.Printf("Status: %s\n", task.Status)

	return nil
}
