import {
  EducationApiItem,
  MappedEducation,
  EducationFormValues,
  EducationBody,
} from "../types/education.types";

/**
 * Converts raw API education items → MappedEducation[] for CustomTextbox options.
 * Pure — easy to unit-test.
 */
export function mapEducations(
  items: EducationApiItem[] = [],
): MappedEducation[] {
  return items.map((edu: any) => ({
    id: edu.uuid || edu.id,
    label: edu.degree_name, // satisfies UniversalOption
    degree_name: edu.degree_name,
    institute_name: edu.institute_name,
    location: edu.country,
    passing_year: edu.passing_year,
    major: edu.major,
    result: edu.result,
    start_date: edu.start_date,
    end_date: edu.end_date,
    city: edu.city,
    is_ongoing: edu.is_ongoing,
    country: edu.country,
  }));
}

/**
 * Converts a MappedEducation list item → RHF default values for edit mode.
 * Pure — easy to unit-test.
 */
export function mapItemToEducationFormValues(item: any): any {
  console.log("item--------", item);

  const yearVal = item.passing_year || "";
  return {
    degree_name: item.degree_name,
    institute_name: item.institute_name,
    country: item.country || item.location,
    passing_year: yearVal ? yearVal.toString() : "",
    major: item.major,
    result: item.result,
    end_date: item.end_date,
    start_date: item.start_date,
    is_ongoing: item.is_ongoing,
    city: item.city,
  };
}

/**
 * Converts RHF form values → API request body.
 * Pure — easy to unit-test.
 */
export function mapFormToBody(
  values: EducationFormValues,
  id?: number,
): EducationBody {
  return {
    ...(id !== undefined && { id }), // only include id on edit
    degree_name: values.degree_name,
    institute_name: values.institute_name,
    country: values.country,
    passing_year: values.passing_year || "",
    major: values.major,
    result: values.result,
    start_date: values.start_date,
    end_date: values.end_date,
    city: values.city,
    is_ongoing: values.is_ongoing,
  };
}
