export interface ReferentielSchema {
  endpoint: string;
  title: string;
  columns: {
    key: string;
    label: string;
  }[];
  formFields: {
    name: string;
    label: string;
    type?: string;
  }[];
}

export const referentielSchemas: Record<string, ReferentielSchema> = {
  administration_rendezvous: {
    endpoint: "/referentiels/administration_rendezvous",
    title: "Type de gestion administrative des rendez-vous",
    columns: [
      {
        key: "description_gestion_admin",
        label: "Description de type de gestion administrative"
      }
    ],
    formFields: [
      {
        name: "description_gestion_admin",
        label: "Description de type de gestion administrative",
        type: "text"
      }
    ]
  },
  aides: {
    endpoint: "/referentiels/aides",
    title: "Aides financières",
    columns: [
      {
        key: "designation",
        label: "Désignation"
      }
    ],
    formFields: [
      {
        name: "designation",
        label: "Désignation",
        type: "text"
      }
    ]
  },
  cfe: {
    endpoint: "/referentiels/cfe",
    title: "CFE",
    columns: [
      {
        key: "nom_cfe",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom_cfe",
        label: "Nom",
        type: "text"
      }
    ]
  },
  conseillers: {
    endpoint: "/referentiels/conseillers",
    title: "Conseillers référents",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom",
        type: "text"
      }
    ]
  },
  financeurs: {
    endpoint: "/referentiels/financeurs",
    title: "Financeurs",
    columns: [
      {
        key: "nom_financeur",
        label: "Nom Financeur"
      }
    ],
    formFields: [
      {
        name: "nom_financeur",
        label: "Nom Financeur",
        type: "text"
      }
    ]
  },
  indemnisation: {
    endpoint: "/referentiels/indemnisation",
    title: "Indemnisation",
    columns: [
      {
        key: "description_type",
        label: "Description"
      }
    ],
    formFields: [
      {
        name: "description_type",
        label: "Description",
        type: "text"
      }
    ]
  },
  lieu_de_proximite: {
    endpoint: "/referentiels/lieu_de_proximite",
    title: "Lieu de proximité",
    columns: [
      {
        key: "code_postal",
        label: "Code postal"
      },
      {
        key: "ville",
        label: "Ville"
      },
    ],
    formFields: [
      {
        name: "code_postal",
        label: "Code postal",
        type: "text"
      },
      {
        name: "ville",
        label: "Ville",
        type: "text"
      }
    ]
  },
  moyen_locomotion: {
    endpoint: "/referentiels/moyen_locomotion",
    title: "Moyens de locomotion",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom",
        type: "text"
      }
    ]
  },
  niveau_qualif_diplome: {
    endpoint: "/referentiels/niveau_qualif_diplome",
    title: "Niveaux de qualification",
    columns: [
      {
        key: "niveau",
        label: "Niveau"
      },
      {
        key: "description_niveau",
        label: "Description"
      }
    ],
    formFields: [
      {
        name: "niveau",
        label: "Niveau",
        type: "number"
      },
      {
        name: "description",
        label: "Description",
        type: "text"
      }
    ]
  },
  objet_rendezvous: {
    endpoint: "/referentiels/objet_rendezvous",
    title: "Objets de rendez-vous",
    columns: [
      {
        key: "description_objet_rdv",
        label: "Description"
      }
    ],
    formFields: [
      {
        name: "description_objet_rdv",
        label: "Description",
        type: "text"
      }
    ]
  },
  organisme_referent_unique: {
    endpoint: "/referentiels/organisme_referent_unique",
    title: "Organismes référent unique",
    columns: [
      {
        key: "nom",
        label: "Nom"
      },
      {
        key: "adresse_ligne_1",
        label: "Adresse ligne 1",
      },
      {
        key: "adresse_ligne_2",
        label: "Adresse ligne 2",
      },
      {
        key: "code_postal",
        label: "Code Postal",
      },
      {
        key: "ville",
        label: "Ville",
      },
      {
        key: "no_tel_1",
        label: "N° tel 1",
      },
      {
        key: "no_tel_2",
        label: "N° tel 2",
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom",
        type: "text"
      },
      {
        name: "adresse_ligne_1",
        label: "Adresse ligne 1",
        type: "text"
      },
      {
        name: "adresse_ligne_2",
        label: "Adresse ligne 2",
        type: "text"
      },
      {
        name: "code_postal",
        label: "Code Postal",
        type: "text"
      },
      {
        name: "ville",
        label: "Ville",
        type: "text"
      },
      {
        name: "no_tel_1",
        label: "N° tel 1",
        type: "text"
      },
      {
        name: "no_tel_2",
        label: "N° tel 2",
        type: "text"
      }
    ]
  },
  pays: {
    endpoint: "/referentiels/pays",
    title: "Pays",
    columns: [
      {
        key: "nom",
        label: "Nom"
      },
      {
        key: "code_zone",
        label: "Code zone"
      },
      {
        key: "intitule_zone",
        label: "Zone"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom"
      },
      {
        name: "code_zone",
        label: "Code zone",
      },
      {
        name: "intitule_zone",
        label: "Intitulé zone"
      }
    ]
  },
  prescripteurs: {
    endpoint: "/referentiels/prescripteurs",
    title: "Prescripteurs",
    columns: [
      {
        key: "nom_structure_prescripteur",
        label: "Nom Structure Prescripteur"
      },
      {
        key: "nom_prescripteur",
        label: "Nom Prescripteur"
      },
      {
        key: "adresse_ligne_1",
        label: "Adresse ligne 1",
      },
      {
        key: "adresse_ligne_2",
        label: "Adresse ligne 2",
      },
      {
        key: "code_postal",
        label: "Code Postal",
      },
      {
        key: "ville",
        label: "Ville",
      },
      {
        key: "no_tel_1",
        label: "N° tel 1",
      },
      {
        key: "no_tel_2",
        label: "N° tel 2",
      }
    ],
    formFields: [
      {
        name: "nom_structure_prescripteur",
        label: "Nom Structure Prescripteur",
        type: "text"
      },
      {
        name: "nom_prescripteur",
        label: "Nom Prescripteur",
        type: "text"
      },
      {
        name: "adresse_ligne_1",
        label: "Adresse ligne 1",
        type: "text"
      },
      {
        name: "adresse_ligne_2",
        label: "Adresse ligne 2",
        type: "text"
      },
      {
        name: "code_postal",
        label: "Code Postal",
        type: "text"
      },
      {
        name: "ville",
        label: "Ville",
        type: "text"
      },
      {
        name: "no_tel_1",
        label: "N° tel 1",
        type: "text"
      },
      {
        name: "no_tel_2",
        label: "N° tel 2",
        type: "text"
      }
    ]
  },
  presence_rendezvous: {
    endpoint: "/referentiels/presence_rendezvous",
    title: "Présence RDV",
    columns: [
      {
        key: "code_presence",
        label: "Code Presence"
      },
      {
        key: "type_presence",
        label: "Type Presence"
      }
    ],
    formFields: [
      {
        name: "code_presence",
        label: "Code Presence",
        type: "text"
      },
      {
        name: "type_presence",
        label: "Type Presence",
        type: "text"
      }
    ]
  },
  quartier: {
    endpoint: "/referentiels/quartier",
    title: "Quartiers",
    columns: [
      {
        key: "nom",
        label: "Nom"
      },
      {
        key: "zone",
        label: "Zone"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom",
        type: "text"
      },
      {
        name: "zone",
        label: "Zone",
        type: "text"
      }
    ]
  },
  regime_fiscal: {
    endpoint: "/referentiels/regime_fiscal",
    title: "Régimes fiscaux",
    columns: [
      {
        key: "nom_regime",
        label: "Nom régime"
      }
    ],
    formFields: [
      {
        name: "nom_regime",
        label: "Nom régime"
      }
    ]
  },
  regime_tva: {
    endpoint: "/referentiels/regime_tva",
    title: "Régimes TVA",
    columns: [
      {
        key: "nom_regime",
        label: "Nom régime"
      }
    ],
    formFields: [
      {
        name: "nom_regime",
        label: "Nom régime"
      }
    ]
  },
  roles: {
    endpoint: "/referentiels/roles",
    title: "Rôles",
    columns: [
      {
        key: "intitule",
        label: "Intitulé"
      }
    ],
    formFields: [
      {
        name: "intitule",
        label: "Intitulé"
      }
    ]
  },
  secteur_activite: {
    endpoint: "/referentiels/secteur_activite",
    title: "Secteurs d'activité",
    columns: [
      {
        key: "code_naf",
        label: "Code NAF"
      },
      {
        key: "intitule_secteur",
        label: "Intitulé secteur"
      }
    ],
    formFields: [
      {
        name: "code_naf",
        label: "Code NAF",
        type: "text"
      },
      {
        name: "intitule_secteur",
        label: "Intitulé secteur",
        type: "text"
      }
    ]
  },
  secteur_logement: {
    endpoint: "/referentiels/secteur_logement",
    title: "Secteurs logement",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom"
      }
    ]
  },
  service_insertion: {
    endpoint: "/referentiels/service_insertion",
    title: "Services insertion",
    columns: [
      {
        key: "nom",
        label: "Nom"
      },
      {
        key: "adresse_ligne_1",
        label: "Adresse ligne 1",
      },
      {
        key: "adresse_ligne_2",
        label: "Adresse ligne 2",
      },
      {
        key: "code_postal",
        label: "Code Postal",
      },
      {
        key: "ville",
        label: "Ville",
      },
      {
        key: "no_tel_1",
        label: "N° tel 1",
      },
      {
        key: "no_tel_2",
        label: "N° tel 2",
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom",
        type: "text"
      },
      {
        name: "adresse_ligne_1",
        label: "Adresse ligne 1",
        type: "text"
      },
      {
        name: "adresse_ligne_2",
        label: "Adresse ligne 2",
        type: "text"
      },
      {
        name: "code_postal",
        label: "Code Postal",
        type: "text"
      },
      {
        name: "ville",
        label: "Ville",
        type: "text"
      },
      {
        name: "no_tel_1",
        label: "N° tel 1",
        type: "text"
      },
      {
        name: "no_tel_2",
        label: "N° tel 2",
        type: "text"
      }
    ]
  },
  situation_de_travail: {
    endpoint: "/referentiels/situation_de_travail",
    title: "Situations de travail",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom"
      }
    ]
  },
  situation_matrimoniale: {
    endpoint: "/referentiels/situation_matrimoniale",
    title: "Situations matrimoniales",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom"
      }
    ]
  },
  statut_juridique: {
    endpoint: "/referentiels/statut_juridique",
    title: "Statuts juridiques",
    columns: [
      {
        key: "nom_statut",
        label: "Nom statut"
      }
    ],
    formFields: [
      {
        name: "nom_statut",
        label: "Nom statut"
      }
    ]
  },
  type_logement: {
    endpoint: "/referentiels/type_logement",
    title: "Types de logement",
    columns: [
      {
        key: "nom",
        label: "Nom"
      }
    ],
    formFields: [
      {
        name: "nom",
        label: "Nom"
      }
    ]
  },
  type_rendezvous: {
    endpoint: "/referentiels/type_rendezvous",
    title: "Types de rendez-vous",
    columns: [
      {
        key: "description_type_rdv",
        label: "Description type de RDV"
      }
    ],
    formFields: [
      {
        name: "description_type_rdv",
        label: "Description type de RDV"
      }
    ]
  }
};

export function getDefaultValues(schema: any) {
  return Object.keys(schema.formFields).reduce((acc, key) => {
    acc[key] = "";

    return acc;
  }, {} as Record<string, string>);
}