import { newId, type FormField, type DocumentRequest } from "./types";

/**
 * Templates par défaut pour chaque service.
 * Servent de point de départ — l'admin les édite ensuite via le form builder.
 */

interface DefaultTemplate {
  title: string;
  description?: string;
  fields: FormField[];
  documentRequests: DocumentRequest[];
}

/* ─── Champs communs (réutilisés) ────────────────────────────────── */

const baseContactFields = (): FormField[] => [
  {
    id: "contactFirstName",
    type: "text",
    label: "Prénom",
    required: true,
  },
  {
    id: "contactLastName",
    type: "text",
    label: "Nom",
    required: true,
  },
  {
    id: "contactEmail",
    type: "email",
    label: "Email",
    description: "Vous recevrez votre facture et vos accès à cette adresse.",
    required: true,
  },
  {
    id: "contactPhone",
    type: "phone",
    label: "Téléphone",
    placeholder: "06 12 34 56 78",
  },
];

/* ─── Templates par service ────────────────────────────────────────── */

export const defaultTemplates: Record<string, DefaultTemplate> = {
  "creation-de-societe": {
    title: "Création de société",
    description:
      "Renseignez les informations principales de votre projet. Vous recevrez votre facture par email pour valider le dossier.",
    fields: [
      ...baseContactFields(),
      {
        id: "form",
        type: "radio",
        label: "Forme juridique souhaitée",
        required: true,
        options: [
          { value: "sas", label: "SAS / SASU" },
          { value: "sarl", label: "SARL / EURL" },
          { value: "sci", label: "SCI" },
          { value: "sc", label: "Autre société civile" },
          { value: "indecis", label: "Je ne sais pas, à conseiller" },
        ],
      },
      {
        id: "denomination",
        type: "text",
        label: "Dénomination sociale envisagée",
        placeholder: "Ex : Atelier Vendôme",
        required: true,
      },
      {
        id: "objet",
        type: "textarea",
        label: "Objet social (activité)",
        description: "Décrivez en quelques lignes l'activité principale et secondaire.",
        required: true,
        minLength: 20,
      },
      {
        id: "capital",
        type: "number",
        label: "Capital social envisagé (€)",
        placeholder: "1000",
        required: true,
        min: 1,
      },
      {
        id: "associes",
        type: "number",
        label: "Nombre d'associés",
        required: true,
        min: 1,
      },
      {
        id: "siegeAdresse",
        type: "text",
        label: "Adresse du siège social",
        required: true,
      },
      {
        id: "notes",
        type: "textarea",
        label: "Précisions complémentaires",
        description: "Pacte d'associés ? Activité réglementée ? Particularités ?",
      },
    ],
    documentRequests: [
      {
        id: "id_dirigeant",
        label: "Pièce d'identité du dirigeant",
        description: "Carte nationale d'identité ou passeport en cours de validité.",
        required: true,
      },
      {
        id: "justif_domicile",
        label: "Justificatif de domicile du dirigeant",
        description: "Moins de 3 mois : facture EDF, quittance, etc.",
        required: true,
      },
      {
        id: "justif_siege",
        label: "Justificatif de domiciliation du siège",
        description: "Bail commercial, attestation de domiciliation, etc.",
        required: true,
      },
    ],
  },

  "depot-des-comptes": {
    title: "Dépôt des comptes annuels",
    description:
      "Confiez-nous le dépôt légal de vos comptes au Greffe du Tribunal de Commerce.",
    fields: [
      ...baseContactFields(),
      {
        id: "denomination",
        type: "text",
        label: "Dénomination de la société",
        required: true,
      },
      {
        id: "siret",
        type: "text",
        label: "SIRET",
        required: true,
      },
      {
        id: "exerciceClos",
        type: "date",
        label: "Date de clôture de l'exercice",
        required: true,
      },
      {
        id: "ago",
        type: "date",
        label: "Date de l'AGO d'approbation des comptes",
        description: "Si déjà tenue, sinon laissez vide.",
      },
      {
        id: "confidentialite",
        type: "radio",
        label: "Souhaitez-vous demander la confidentialité ?",
        required: true,
        options: [
          { value: "totale", label: "Totale (microentreprise)" },
          { value: "partielle", label: "Partielle (petite entreprise)" },
          { value: "non", label: "Non / Je ne sais pas" },
        ],
      },
    ],
    documentRequests: [
      {
        id: "comptes",
        label: "Comptes annuels (bilan, compte de résultat, annexes)",
        description: "Format PDF ou Excel.",
        required: true,
      },
      {
        id: "pv_ago",
        label: "Procès-verbal d'AGO",
        description: "Si déjà tenue.",
      },
    ],
  },

  "dissolution-de-societe": {
    title: "Dissolution de société",
    description:
      "Procédure complète : dissolution, liquidation amiable, radiation au RCS.",
    fields: [
      ...baseContactFields(),
      {
        id: "denomination",
        type: "text",
        label: "Dénomination de la société",
        required: true,
      },
      {
        id: "siret",
        type: "text",
        label: "SIRET",
        required: true,
      },
      {
        id: "formeSociale",
        type: "select",
        label: "Forme sociale",
        required: true,
        options: [
          { value: "sas", label: "SAS / SASU" },
          { value: "sarl", label: "SARL / EURL" },
          { value: "sci", label: "SCI" },
          { value: "autre", label: "Autre" },
        ],
      },
      {
        id: "associeUniqueMorale",
        type: "checkbox",
        label: "L'associé unique est une personne morale (éligible TUP)",
      },
      {
        id: "situationDettes",
        type: "radio",
        label: "Situation financière",
        required: true,
        options: [
          { value: "in_bonis", label: "Pas de dettes impayées (in bonis)" },
          { value: "dettes", label: "Dettes en cours" },
        ],
      },
      {
        id: "motif",
        type: "textarea",
        label: "Motif de la dissolution",
        required: true,
      },
    ],
    documentRequests: [
      {
        id: "kbis",
        label: "K-bis récent",
        required: true,
      },
      {
        id: "statuts",
        label: "Statuts à jour",
        required: true,
      },
      {
        id: "comptes_recents",
        label: "Derniers comptes annuels",
        required: true,
      },
    ],
  },

  "depot-de-marques": {
    title: "Dépôt de marque",
    description:
      "Recherche d'antériorité, dépôt INPI / EUIPO / international, surveillance et renouvellement.",
    fields: [
      ...baseContactFields(),
      {
        id: "marqueNom",
        type: "text",
        label: "Nom / signe à protéger",
        required: true,
      },
      {
        id: "typeMarque",
        type: "radio",
        label: "Type de marque",
        required: true,
        options: [
          { value: "verbale", label: "Verbale (mots, slogan)" },
          { value: "figurative", label: "Figurative (logo seul)" },
          { value: "semi_figurative", label: "Semi-figurative (mots + logo)" },
        ],
      },
      {
        id: "territoire",
        type: "radio",
        label: "Territoire de protection souhaité",
        required: true,
        options: [
          { value: "france", label: "France (INPI)" },
          { value: "ue", label: "Union européenne (EUIPO)" },
          { value: "international", label: "International (Madrid)" },
        ],
      },
      {
        id: "activites",
        type: "textarea",
        label: "Activités et produits / services à protéger",
        description:
          "Décrivez votre activité et les produits/services concernés. Nous identifierons les classes de Nice pertinentes.",
        required: true,
        minLength: 30,
      },
    ],
    documentRequests: [
      {
        id: "logo",
        label: "Logo (si marque figurative ou semi-figurative)",
        description: "Format vectoriel (SVG, AI) ou haute résolution (PNG 1500px+).",
      },
      {
        id: "id_deposant",
        label: "Pièce d'identité du déposant",
        description: "Si dépôt par une personne physique.",
        required: true,
      },
    ],
  },
};

/* Modifications statutaires : template générique réutilisable. */
export function genericModificationTemplate(
  serviceTitle: string
): DefaultTemplate {
  return {
    title: serviceTitle,
    description:
      "Renseignez les informations de votre société et l'objet précis de la modification.",
    fields: [
      ...baseContactFields(),
      {
        id: "denomination",
        type: "text",
        label: "Dénomination de la société",
        required: true,
      },
      {
        id: "siret",
        type: "text",
        label: "SIRET",
        required: true,
      },
      {
        id: "objetModification",
        type: "textarea",
        label: "Objet précis de la modification",
        description: "Décrivez ce qui doit être modifié (avant / après).",
        required: true,
        minLength: 20,
      },
    ],
    documentRequests: [
      {
        id: "kbis",
        label: "K-bis récent",
        required: true,
      },
      {
        id: "statuts",
        label: "Statuts à jour",
        required: true,
      },
    ],
  };
}
