From 0f2b81346ac299053b5dc63e9bafabaac35c2ebe Mon Sep 17 00:00:00 2001
From: mathieu
Date: Fri, 11 Sep 2026 00:00:30 +0200
Subject: [PATCH] =?UTF-8?q?On=20affiche=20les=20s=C3=A9ries=20termin=C3=A9?=
=?UTF-8?q?es=20ou=20abandonn=C3=A9es.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...0260910204753_AjouterEtatSerie.Designer.cs | 699 ++++++++++++++++++
.../20260910204753_AjouterEtatSerie.cs | 29 +
.../MaBibliDbContextModelSnapshot.cs | 3 +
MaBibli.Client/Pages/Serie.razor | 30 +-
MaBibli.Shared/Dtos/SerieDto.cs | 8 +
MaBibli.Shared/Entites/EtatSerie.cs | 11 +
MaBibli.Shared/Entites/Serie.cs | 3 +
7 files changed, 774 insertions(+), 9 deletions(-)
create mode 100644 MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.Designer.cs
create mode 100644 MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.cs
create mode 100644 MaBibli.Shared/Entites/EtatSerie.cs
diff --git a/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.Designer.cs b/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.Designer.cs
new file mode 100644
index 0000000..ddace1b
--- /dev/null
+++ b/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.Designer.cs
@@ -0,0 +1,699 @@
+//
+using System;
+using MaBibli.Api.Data;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace MaBibli.Api.Data.Migrations
+{
+ [DbContext(typeof(MaBibliDbContext))]
+ [Migration("20260910204753_AjouterEtatSerie")]
+ partial class AjouterEtatSerie
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "10.0.11");
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.ArticleUne", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("NumeroRevueId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Position")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NumeroRevueId", "TitreNormalise")
+ .IsUnique();
+
+ b.ToTable("ArticlesUne");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Auteur", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CleRegroupement")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Nom")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("NomNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CleRegroupement")
+ .IsUnique();
+
+ b.HasIndex("NomNormalise");
+
+ b.ToTable("Auteurs");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.BibliographieMasquee", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AuteurId")
+ .HasColumnType("INTEGER");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Utilisateur")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Utilisateur", "AuteurId");
+
+ b.HasIndex(new[] { "AuteurId", "Utilisateur", "TitreNormalise" }, "IX_BibliographiesMasquees_Auteur_Utilisateur_Titre")
+ .IsUnique();
+
+ b.ToTable("BibliographiesMasquees");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.ElementSerie", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("LivreId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Numero")
+ .HasColumnType("TEXT");
+
+ b.Property("Position")
+ .HasColumnType("INTEGER");
+
+ b.Property("SerieId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LivreId");
+
+ b.HasIndex(new[] { "SerieId" }, "IX_ElementsSerie_SerieId");
+
+ b.HasIndex(new[] { "SerieId", "LivreId" }, "IX_ElementsSerie_SerieId_LivreId")
+ .IsUnique()
+ .HasFilter("\"LivreId\" IS NOT NULL");
+
+ b.ToTable("ElementsSerie");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Livre", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AjoutePar")
+ .HasColumnType("TEXT");
+
+ b.Property("CoverUrl")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("Editeur")
+ .HasColumnType("TEXT");
+
+ b.Property("Format")
+ .HasColumnType("INTEGER");
+
+ b.Property("Isbn")
+ .HasColumnType("TEXT");
+
+ b.Property("NombrePages")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TypeDocument")
+ .HasColumnType("INTEGER");
+
+ b.Property("UrlNotice")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Isbn");
+
+ b.HasIndex("TitreNormalise");
+
+ b.ToTable("Livres");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.LivreAuteur", b =>
+ {
+ b.Property("LivreId")
+ .HasColumnType("INTEGER");
+
+ b.Property("AuteurId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Position")
+ .HasColumnType("INTEGER");
+
+ b.Property("Role")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("LivreId", "AuteurId");
+
+ b.HasIndex("AuteurId");
+
+ b.ToTable("LivreAuteurs");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.LivreSouhaite", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Annee")
+ .HasColumnType("TEXT");
+
+ b.Property("Auteur")
+ .HasColumnType("TEXT");
+
+ b.Property("AuteurNormalise")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT")
+ .HasDefaultValue("");
+
+ b.Property("CoverUrl")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("Editeur")
+ .HasColumnType("TEXT");
+
+ b.Property("Isbn")
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasColumnType("TEXT");
+
+ b.Property("Rang")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Utilisateur")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "Utilisateur" }, "IX_LivresSouhaites_Utilisateur");
+
+ b.HasIndex(new[] { "Utilisateur", "TitreNormalise", "AuteurNormalise" }, "IX_LivresSouhaites_Utilisateur_Oeuvre")
+ .IsUnique();
+
+ b.ToTable("LivresSouhaites");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.LivreTheme", b =>
+ {
+ b.Property("LivreId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ThemeId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("LivreId", "ThemeId");
+
+ b.HasIndex("ThemeId");
+
+ b.ToTable("LivreThemes");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.NumeroRevue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CoverUrl")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("DateParution")
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasColumnType("TEXT");
+
+ b.Property("Numero")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("NumeroNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("RevueId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RevueId", "NumeroNormalise")
+ .IsUnique();
+
+ b.ToTable("NumerosRevue");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Pret", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DatePret")
+ .HasColumnType("TEXT");
+
+ b.Property("DateRetour")
+ .HasColumnType("TEXT");
+
+ b.Property("Emprunteur")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("LivreId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "LivreId" }, "IX_Prets_LivreId");
+
+ b.HasIndex(new[] { "LivreId" }, "IX_Prets_LivreId_EnCours")
+ .IsUnique()
+ .HasFilter("\"DateRetour\" IS NULL");
+
+ b.ToTable("Prets");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.RapprochementRefuse", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AuteurAId")
+ .HasColumnType("INTEGER");
+
+ b.Property("AuteurBId")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AuteurAId", "AuteurBId")
+ .IsUnique();
+
+ b.ToTable("RapprochementsRefuses");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Revue", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AjoutePar")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("Editeur")
+ .HasColumnType("TEXT");
+
+ b.Property("Issn")
+ .HasColumnType("TEXT");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TitreNormalise")
+ .IsUnique();
+
+ b.HasIndex(new[] { "Issn" }, "IX_Revues_Issn")
+ .IsUnique()
+ .HasFilter("\"Issn\" IS NOT NULL");
+
+ b.ToTable("Revues");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.RevueSouhaitee", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("Issn")
+ .HasColumnType("TEXT");
+
+ b.Property("Note")
+ .HasColumnType("TEXT");
+
+ b.Property("Numero")
+ .HasColumnType("TEXT");
+
+ b.Property("NumeroNormalise")
+ .IsRequired()
+ .ValueGeneratedOnAdd()
+ .HasColumnType("TEXT")
+ .HasDefaultValue("");
+
+ b.Property("Rang")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("Utilisateur")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex(new[] { "Utilisateur" }, "IX_RevuesSouhaitees_Utilisateur");
+
+ b.HasIndex(new[] { "Utilisateur", "TitreNormalise", "NumeroNormalise" }, "IX_RevuesSouhaitees_Utilisateur_Revue")
+ .IsUnique();
+
+ b.ToTable("RevuesSouhaitees");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Serie", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("AjoutePar")
+ .HasColumnType("TEXT");
+
+ b.Property("DateAjout")
+ .HasColumnType("TEXT");
+
+ b.Property("Etat")
+ .HasColumnType("INTEGER");
+
+ b.Property("Position")
+ .HasColumnType("INTEGER");
+
+ b.Property("SerieParenteId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Titre")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("TitreNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SerieParenteId");
+
+ b.HasIndex("TitreNormalise")
+ .IsUnique();
+
+ b.ToTable("Series");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.StatutLecture", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DateMaj")
+ .HasColumnType("TEXT");
+
+ b.Property("LivreId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Statut")
+ .HasColumnType("INTEGER");
+
+ b.Property("Utilisateur")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Utilisateur");
+
+ b.HasIndex("LivreId", "Utilisateur")
+ .IsUnique();
+
+ b.ToTable("StatutsLecture");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Theme", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("Nom")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("NomNormalise")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NomNormalise")
+ .IsUnique();
+
+ b.ToTable("Themes");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.ArticleUne", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.NumeroRevue", "NumeroRevue")
+ .WithMany("Articles")
+ .HasForeignKey("NumeroRevueId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("NumeroRevue");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.ElementSerie", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
+ .WithMany()
+ .HasForeignKey("LivreId")
+ .OnDelete(DeleteBehavior.SetNull);
+
+ b.HasOne("MaBibli.Shared.Entites.Serie", "Serie")
+ .WithMany("Elements")
+ .HasForeignKey("SerieId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Livre");
+
+ b.Navigation("Serie");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.LivreAuteur", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Auteur", "Auteur")
+ .WithMany("Livres")
+ .HasForeignKey("AuteurId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
+ .WithMany("Auteurs")
+ .HasForeignKey("LivreId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Auteur");
+
+ b.Navigation("Livre");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.LivreTheme", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
+ .WithMany("Themes")
+ .HasForeignKey("LivreId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("MaBibli.Shared.Entites.Theme", "Theme")
+ .WithMany("Livres")
+ .HasForeignKey("ThemeId")
+ .OnDelete(DeleteBehavior.Restrict)
+ .IsRequired();
+
+ b.Navigation("Livre");
+
+ b.Navigation("Theme");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.NumeroRevue", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Revue", "Revue")
+ .WithMany("Numeros")
+ .HasForeignKey("RevueId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Revue");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Pret", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
+ .WithMany("Prets")
+ .HasForeignKey("LivreId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Livre");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Serie", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Serie", "SerieParente")
+ .WithMany("SousSeries")
+ .HasForeignKey("SerieParenteId")
+ .OnDelete(DeleteBehavior.SetNull);
+
+ b.Navigation("SerieParente");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.StatutLecture", b =>
+ {
+ b.HasOne("MaBibli.Shared.Entites.Livre", "Livre")
+ .WithMany("Statuts")
+ .HasForeignKey("LivreId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Livre");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Auteur", b =>
+ {
+ b.Navigation("Livres");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Livre", b =>
+ {
+ b.Navigation("Auteurs");
+
+ b.Navigation("Prets");
+
+ b.Navigation("Statuts");
+
+ b.Navigation("Themes");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.NumeroRevue", b =>
+ {
+ b.Navigation("Articles");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Revue", b =>
+ {
+ b.Navigation("Numeros");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Serie", b =>
+ {
+ b.Navigation("Elements");
+
+ b.Navigation("SousSeries");
+ });
+
+ modelBuilder.Entity("MaBibli.Shared.Entites.Theme", b =>
+ {
+ b.Navigation("Livres");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.cs b/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.cs
new file mode 100644
index 0000000..ad1b813
--- /dev/null
+++ b/MaBibli.Api/Data/Migrations/20260910204753_AjouterEtatSerie.cs
@@ -0,0 +1,29 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace MaBibli.Api.Data.Migrations
+{
+ ///
+ public partial class AjouterEtatSerie : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "Etat",
+ table: "Series",
+ type: "INTEGER",
+ nullable: false,
+ defaultValue: 0);
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "Etat",
+ table: "Series");
+ }
+ }
+}
diff --git a/MaBibli.Api/Data/Migrations/MaBibliDbContextModelSnapshot.cs b/MaBibli.Api/Data/Migrations/MaBibliDbContextModelSnapshot.cs
index ac2160a..f5552d4 100644
--- a/MaBibli.Api/Data/Migrations/MaBibliDbContextModelSnapshot.cs
+++ b/MaBibli.Api/Data/Migrations/MaBibliDbContextModelSnapshot.cs
@@ -465,6 +465,9 @@ namespace MaBibli.Api.Data.Migrations
b.Property("DateAjout")
.HasColumnType("TEXT");
+ b.Property("Etat")
+ .HasColumnType("INTEGER");
+
b.Property("Position")
.HasColumnType("INTEGER");
diff --git a/MaBibli.Client/Pages/Serie.razor b/MaBibli.Client/Pages/Serie.razor
index eaa6f48..9c1fdaa 100644
--- a/MaBibli.Client/Pages/Serie.razor
+++ b/MaBibli.Client/Pages/Serie.razor
@@ -50,6 +50,10 @@ else
var total = Total(_serie);
@total.Possedes sur @total.Total tomes dans la bibliothèque.
}
+ @if (_serie.Etat != EtatSerie.EnCours)
+ {
+ — Série @(_serie.Etat == EtatSerie.Terminee ? "terminée" : "abandonnée").
+ }
@@ -472,14 +476,6 @@ else
@if (!element.Possede)
{
- @* Le tome manquant est COMMUN au foyer, l'envie qu'il devient est
- PERSONNELLE : deux membres peuvent vouloir le même tome. *@
-
SouhaiterAsync(element)">
- Ajouter à mes envies
-
-
OuvrirRattachement(element.Id)">
@@ -648,6 +644,15 @@ else
+
+ État
+
+ En cours — d'autres tomes à venir
+ Terminée — pas d'autres tomes
+ Abandonnée — arrêtée sans conclusion
+
+
+
Remplace la série courante par celle que vient de rendre le serveur.
@@ -1533,7 +1540,12 @@ else
private async Task EnregistrerAsync()
{
await EcrireAsync(() => Api.ModifierSerieAsync(
- Id, new EnregistrementSerie { Titre = _titre, SerieParenteId = _parenteId == 0 ? null : _parenteId }));
+ Id, new EnregistrementSerie
+ {
+ Titre = _titre,
+ SerieParenteId = _parenteId == 0 ? null : _parenteId,
+ Etat = _etat
+ }));
if (_erreur is null)
{
diff --git a/MaBibli.Shared/Dtos/SerieDto.cs b/MaBibli.Shared/Dtos/SerieDto.cs
index 8c7289f..2a83d6e 100644
--- a/MaBibli.Shared/Dtos/SerieDto.cs
+++ b/MaBibli.Shared/Dtos/SerieDto.cs
@@ -1,3 +1,5 @@
+using MaBibli.Shared.Entites;
+
namespace MaBibli.Shared.Dtos;
///
@@ -27,6 +29,9 @@ public record SerieDto
/// Qui a créé la série. Trace d'affichage : la série est commune au foyer.
public string? AjoutePar { get; init; }
+ /// État de progression de la série (en cours, terminée, abandonnée).
+ public EtatSerie Etat { get; init; } = EtatSerie.EnCours;
+
/// Tomes possédés sur tomes recensés — « 4 sur 7 », le cœur de l'écran.
public int NombrePossedes => Elements.Count(e => e.Possede);
}
@@ -68,6 +73,9 @@ public record EnregistrementSerie
/// Série parente, pour ranger une trilogie dans un cycle. null = à la racine.
public int? SerieParenteId { get; set; }
+
+ /// État de progression de la série (en cours, terminée, abandonnée).
+ public EtatSerie Etat { get; set; } = EtatSerie.EnCours;
}
///
diff --git a/MaBibli.Shared/Entites/EtatSerie.cs b/MaBibli.Shared/Entites/EtatSerie.cs
new file mode 100644
index 0000000..65d1498
--- /dev/null
+++ b/MaBibli.Shared/Entites/EtatSerie.cs
@@ -0,0 +1,11 @@
+namespace MaBibli.Shared.Entites;
+
+///
+/// État de progression d'une série.
+///
+public enum EtatSerie
+{
+ EnCours = 0,
+ Terminee = 1,
+ Abandonnee = 2,
+}
diff --git a/MaBibli.Shared/Entites/Serie.cs b/MaBibli.Shared/Entites/Serie.cs
index aacdf7b..0345e38 100644
--- a/MaBibli.Shared/Entites/Serie.cs
+++ b/MaBibli.Shared/Entites/Serie.cs
@@ -61,6 +61,9 @@ public class Serie
/// Qui a créé la série. Trace, pas frontière : la série est commune.
public string? AjoutePar { get; set; }
+ /// État de progression de la série (en cours, terminée, abandonnée).
+ public EtatSerie Etat { get; set; } = EtatSerie.EnCours;
+
public void RecalculerFormes()
{
Titre = Titre.Trim();