export interface FarmProfileFormSlice {
  fullName: string;
  dateOfBirth: string;
  gender: string;
  region: string;
  district: string;
  farmerType: string;
  householdSize: string;
  yearsFarming: string;
  education: string;
}

export const FARM_PROFILE_REQUIRED_FIELDS = [
  "fullName",
  "dateOfBirth",
  "gender",
  "region",
  "district",
  "farmerType",
  "householdSize",
  "yearsFarming",
  "education",
] as const;

export type FarmProfileRequiredField = (typeof FARM_PROFILE_REQUIRED_FIELDS)[number];

function isFieldFilled(field: FarmProfileRequiredField, form: FarmProfileFormSlice): boolean {
  const value = field === "fullName" ? form.fullName.trim() : form[field];
  return Boolean(value);
}

/** Client-side gate before PATCH /onboarding/.../FARM_PROFILE (matches OpenAPI required fields). */
export function isFarmProfileComplete(form: FarmProfileFormSlice): boolean {
  return FARM_PROFILE_REQUIRED_FIELDS.every((field) => isFieldFilled(field, form));
}

export function getFarmProfileMissingFields(form: FarmProfileFormSlice): FarmProfileRequiredField[] {
  return FARM_PROFILE_REQUIRED_FIELDS.filter((field) => !isFieldFilled(field, form));
}
