private async Task Prihlasit(OsobaDto neprihlaseny) { // pokud kliknu na přihlášení a následně na změnu termínu, dojde // - ke spuštění volání API pro přihlášení // - k nastavení State.Prihlaseni na null // - a k spuštění volní API pro načtení detailů termínu. // Pokud dojde k dokončení přihlášení před načtením termínu, je již State.Prihlaseni a State.Neprihlaseni null. // Pokud dokde k dokončení přihlášení po načtení termíu, jsou ve State.Prihlaseni a State.Neprihlaseni hodnoty nového termínu. // Takže nemůžeme volat Add/Remove nad State.Prihlaseni. Potřebujeme je volat nad kolekcemi platnými před spuštěním přihlašování. var prihlaseni = State.Prihlaseni; var neprihlaseni = State.Neprihlaseni; await Progress.ExecuteInProgressAsync(async() => await TerminWebApiClient.PrihlasitAsync(State.AktualniTerminId.Value, neprihlaseny.Id)); if (!prihlaseni.Contains(neprihlaseny)) { prihlaseni.Add(neprihlaseny); } neprihlaseni.Remove(neprihlaseny); Toaster.Success($"{neprihlaseny.PrijmeniJmeno} přihlášen(a)."); await LocalStorageService.SetItemAsync("PrefferedOsobaId", neprihlaseny.Id); PrefferedOsobaId = neprihlaseny.Id; }
private async Task Odhlasit(OsobaDto prihlaseny) { var prihlaseni = State.Prihlaseni; var neprihlaseni = State.Neprihlaseni; await Progress.ExecuteInProgressAsync(async() => await TerminWebApiClient.OdhlasitAsync(State.AktualniTerminId.Value, prihlaseny.Id)); if (!neprihlaseni.Contains(prihlaseny)) // pokud došlo k doubleclicku, mohl se tam dostat { neprihlaseni.Add(prihlaseny); neprihlaseni.Sort((a, b) => a.PrijmeniJmeno.CompareTo(b.PrijmeniJmeno)); } prihlaseni.Remove(prihlaseny); Toaster.Success($"{prihlaseny.PrijmeniJmeno} odhlášen(a)."); }
protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); KandaEu.Volejbal.Web.WebApiClients.TerminListDto terminList = await Progress.ExecuteInProgressAsync(async() => await TerminWebApiClient.GetTerminyAsync()); State.Terminy = terminList.Terminy.ToList(); StateHasChanged(); if (State.Terminy.Count > 0) { await SetCurrentTerminAsync(State.Terminy[0]); } }
protected async Task SetCurrentTermin(int terminId) { State.AktualniTerminId = terminId; State.Prihlaseni = null; State.Neprihlaseni = null; StateHasChanged(); TerminDetailDto terminDetail = await Progress.ExecuteInProgressAsync(async() => await TerminWebApiClient.GetDetailTerminuAsync(terminId)); State.Prihlaseni = terminDetail.Prihlaseni.ToList(); State.Neprihlaseni = terminDetail.Neprihlaseni.ToList(); StateHasChanged(); }