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).");
        }
Esempio n. 3
0
        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();
        }