@page "/souhaits/revues/{Id:int}/edition"
@inject ServiceLivresApi Api
@inject EtatReseau Reseau
@inject NavigationManager Navigation
@implements IDisposable
@*
Le même geste que pour une envie de livre, sur la table sœur : écran dédié, mode dans
l'adresse. Les deux formulaires ne se fondent pas en un seul — une revue n'a ni auteur, ni
éditeur, ni ISBN, et un formulaire à moitié grisé se lit plus mal que deux formulaires courts.
*@
MaBibli — modifier une envie de revue
Modifier une envie de revue
@if (_erreur is not null)
{
@_erreur
}
@if (_introuvable)
{
@(Reseau.EnLigne
? "Cette envie n'existe plus dans votre liste."
: "Cette envie n'est pas dans les données enregistrées sur cet appareil.")
}
else if (_saisie is null)
{
}
else
{
}
@code {
[Parameter] public int Id { get; set; }
private EnregistrementRevueSouhaitee? _saisie;
private bool _introuvable;
private bool _enCours;
private string? _erreur;
protected override async Task OnInitializedAsync()
{
Reseau.Change += SurChangementReseau;
await ChargerAsync();
}
private void SurChangementReseau() => _ = InvokeAsync(StateHasChanged);
public void Dispose() => Reseau.Change -= SurChangementReseau;
private string? MotifBlocage => Reseau.EnLigne ? null : EtatReseau.MotifHorsLigne;
private async Task ChargerAsync()
{
var envies = await Api.ListerRevuesSouhaiteesAsync();
var envie = envies.FirstOrDefault(e => e.Id == Id);
if (envie is null)
{
_introuvable = true;
return;
}
_saisie = new EnregistrementRevueSouhaitee
{
Titre = envie.Titre,
Numero = envie.Numero,
Issn = envie.Issn,
Note = envie.Note,
};
}
private async Task EnregistrerAsync()
{
if (_saisie is null)
{
return;
}
_enCours = true;
_erreur = null;
var resultat = await Api.ModifierRevueSouhaiteeAsync(Id, _saisie);
_enCours = false;
if (!resultat.EstOk)
{
_erreur = resultat.Erreur;
return;
}
Navigation.NavigateTo("souhaits");
}
}