import {
  MappedProject,
  ProjectFormValues,
  ProjectBody,
} from "../types/project.types";

/**
 * Converts raw API project items → MappedProject[] for CustomTextbox options.
 */
export function mapProjects(items: any[] = []): MappedProject[] {
  return items.map((item: any) => ({
    id: item.uuid || item.id,
    uuid: item.uuid || item.id,
    project_name: item.project_name,
    task_name: item.task_name,
    // Ensure task_url has a sensible default so UI shows `https://` when empty
    task_url: item.task_url || item.project_url || "https://",
    responsibilities: item.responsibilities || "",
  }));
}

/**
 * Converts a MappedProject list item → RHF default values for edit mode.
 */
export function mapItemToProjectFormValues(
  item: MappedProject,
): ProjectFormValues {
  return {
    uuid: item.uuid,
    project_name: item.project_name,
    // dialog uses `task_link` field name, so prefill that too
    task_link:
      (item as any).task_url || (item as any).project_url || "https://",
    task_url: (item as any).task_url || (item as any).project_url || "https://",
    task_name: item.task_name,
    responsibilities: item.responsibilities || "",
  };
}

/**
 * Converts RHF form values → API request body.
 */
export function mapFormToProjectBody(values: ProjectFormValues): ProjectBody {
  return {
    project_name: values.project_name,
    task_name: values.task_name || "",
    // accept either `task_link` (dialog) or `task_url` (internal)
    task_url: (values as any).task_link || values.task_url || "",

    responsibilities: values.responsibilities || "",
  };
}
