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);
}
}