@using MaBibli.Shared.Dtos
  • @Serie.Titre @Avancement() @if (ActionsActives) { }
    @if (Deplie) {
    @if (Serie.Elements.Count == 0) {

    Aucun tome recensé.

    } else { @foreach (var element in Serie.Elements) { @if (element.LivreId is { } livreId && Livres.FirstOrDefault(l => l.Id == livreId) is { } livre) { } else {

    @element.Titre Pas dans la bibliothèque

    } } } @if (Enfants.Count > 0) {
      @foreach (var enfant in Enfants.Where(e => !CheminAvecSerie.Contains(e.Id))) { }
    }
    }
  • @code { [Parameter, EditorRequired] public SerieDto Serie { get; set; } = default!; [Parameter, EditorRequired] public IReadOnlyList Toutes { get; set; } = []; [Parameter, EditorRequired] public IReadOnlyList Livres { get; set; } = []; [Parameter, EditorRequired] public IReadOnlyDictionary Totaux { get; set; } = new Dictionary(); [Parameter] public IReadOnlySet Chemin { get; set; } = new HashSet(); [Parameter] public ISet Deplies { get; set; } = new HashSet(); [Parameter] public bool ActionsActives { get; set; } [Parameter] public string? MotifBlocage { get; set; } [Parameter] public EventCallback OnDeplacer { get; set; } private List Soeurs => Toutes .Where(s => s.SerieParenteId == Serie.SerieParenteId) .OrderBy(s => s.Position) .ThenBy(s => s.Id) .ToList(); private List Enfants => Toutes .Where(s => s.SerieParenteId == Serie.Id) .OrderBy(s => s.Position) .ThenBy(s => s.Id) .ToList(); private int _index => Soeurs.FindIndex(s => s.Id == Serie.Id); private bool Deplie => Deplies.Contains(Serie.Id); private IReadOnlySet CheminAvecSerie => new HashSet(Chemin) { Serie.Id }; private string Avancement() { var total = Totaux.TryGetValue(Serie.Id, out var valeur) ? valeur : (Possedes: Serie.NombrePossedes, Total: Serie.Elements.Count); return total.Total == 0 ? "Aucun tome recensé" : $"{total.Possedes} sur {total.Total} tome{(total.Total > 1 ? "s" : "")}"; } private void Basculer() { if (!Deplies.Add(Serie.Id)) { Deplies.Remove(Serie.Id); } } private Task Monter() => Deplacer(-1); private Task Descendre() => Deplacer(1); private Task Deplacer(int delta) => Serie.SerieParenteId is { } parent ? OnDeplacer.InvokeAsync(new DeplacementSerie(Serie.Id, parent, delta)) : Task.CompletedTask; }