using MaBibli.Shared.Textes; namespace MaBibli.Shared.Entites; /// /// Un article annoncé à la une d'un numéro de revue. /// /// /// Sur le NUMÉRO, jamais sur la revue (tranché avec l'utilisateur le 2026-08-20) : les /// articles à la une changent à chaque parution. Posés sur , ils décriraient /// une ligne éditoriale et non un sommaire. /// /// Pourquoi une table à part et non ? Un thème est un vocabulaire /// qu'on réutilise — « dark fantasy » revient sur dix livres —, alors qu'un titre /// d'article est unique à sa parution et ne se réutilisera jamais. Rangés dans /// Themes, « Ukraine : le front d'hiver » et ses semblables rempliraient de bruit un /// vocabulaire qui sert le catalogue. /// /// /// ⚠️ Conséquence directe : pas de n-n. Une simple clé étrangère vers le numéro suffit, /// puisque rien ne se partage. C'est ce qui distingue cette table de LivreTheme. /// /// /// ⚠️ La saisie se fait au point-virgule, et surtout pas à la virgule : un titre /// d'article en contient souvent (« Ukraine, deux ans après »), et elle le couperait en deux. /// Voir . /// /// public class ArticleUne { public int Id { get; set; } public int NumeroRevueId { get; set; } public NumeroRevue? NumeroRevue { get; set; } /// Le titre tel qu'il est imprimé en couverture. public string Titre { get; set; } = string.Empty; /// Forme mise à plat, porteuse de l'unicité au sein du numéro. public string TitreNormalise { get; set; } = string.Empty; /// Rang d'affichage : l'ordre de saisie est celui de la couverture. public int Position { get; set; } public void RecalculerFormes() { Titre = Titre.Trim(); TitreNormalise = NormalisationTexte.Normaliser(Titre); } }