protected override async void OnAppearing()
        {
            base.OnAppearing();

            var cache = Resolver.Resolve <ISimpleCache>();

            if (cache != null)
            {
                var cachedPosts = cache.Get <List <TidsregistreringCache> >(TidsregistreringCache.Key);
                var kø          = new Queue <TidsregistreringCache>(cachedPosts);

                while (kø.Count > 0)
                {
                    var post = kø.Dequeue();

                    try
                    {
                        if (post.ErNy)
                        {
                            await AdvosysKlient.RegistrerTidAsync(
                                post.Sag,
                                post.Aktivitet,
                                post.Dato.Date.Add(post.FraKlokken.TimeOfDay),
                                (int)post.Forbrugt.TotalMinutes,
                                post.Beskrivelse);

                            // Send besked til achievement system.
                            MessagingCenter.Send(this, "TidRegistreret");
                        }
                        else
                        {
                            await AdvosysKlient.RetTidsregistreringAsync(
                                post.Id,
                                post.Sag,
                                post.Aktivitet,
                                post.Dato.Date.Add(post.FraKlokken.TimeOfDay),
                                (int)post.Forbrugt.TotalMinutes,
                                post.Beskrivelse);
                        }
                    }
                    catch
                    {
                        kø.Enqueue(post);
                        break;
                    }
                }

                cache.Replace(TidsregistreringCache.Key, kø.ToList());

                if (cachedPosts.Count > 0 && kø.Count == 0)
                {
                    await DisplayAlert("Gemte tidsregistreringer", "De gemte tidsregistreringer blev afsendt.", "OK");
                }
            }

            if (notLoaded == false)
            {
                await HentPostOversigt();

                notLoaded = true;
            }
        }
Beispiel #2
0
        public async Task Gem()
        {
            if (IsBusy)
            {
                return;
            }

            var sag           = SelectedSag;
            var aktivitet     = SelectedAktivitet;
            var datoOgTid     = new DateTimeOffset(dato.Date).Add(fraKlokken);
            var antalMinutter = (int)Tidsforbrug.TotalMinutes;  // Rund op til nærmeste femte minut eller hvordan det var.
            var beskrivelse   = Beskrivelse ?? string.Empty;

            try
            {
                IsBusy = true;

                if (id == null)
                {
                    await AdvosysKlient.RegistrerTidAsync(sag, aktivitet, datoOgTid, antalMinutter, beskrivelse);

                    // Send besked til achievement system.
                    MessagingCenter.Send(this, "TidRegistreret");
                }
                else
                {
                    await
                    AdvosysKlient.RetTidsregistreringAsync(id, sag, aktivitet, datoOgTid, antalMinutter, beskrivelse);
                }

                await Navigation.PopAsync();
            }
            catch (HttpRequestException ex)
            {
                MessagingCenter.Send(this, "TidsregistreringFejlede", ex);

                var tidsregistreringer = cache.Get <List <TidsregistreringCache> >(TidsregistreringCache.Key);

                if (!tidsregistreringer.Any(t =>
                                            t.Beskrivelse == Beskrivelse && t.Sag.Nummer == SelectedSag.Nummer &&
                                            t.Aktivitet.Kode == SelectedAktivitet.Kode))
                {
                    tidsregistreringer.Add(new TidsregistreringCache
                    {
                        Sag         = SelectedSag,
                        Aktivitet   = SelectedAktivitet,
                        Beskrivelse = Beskrivelse,
                        Dato        = dato.Date,
                        Forbrugt    = Tidsforbrug,
                        FraKlokken  = DateTime.MinValue.Add(Tidspunkt),
                        Id          = id
                    });
                    cache.Replace(TidsregistreringCache.Key, tidsregistreringer);
                }
            }
            catch (Exception ex)
            {
                MessagingCenter.Send(this, "TidsregistreringFejlede", ex);
            }
            finally
            {
                IsBusy = false;
            }
        }