Exemple #1
0
 public Task DeleteExpensePeriodAsync(Context context, ExpensePeriod expensePeriod, CancellationToken cancellationToken)
 {
     return(ExecuteWithAuthorizationAsync(context, () =>
     {
         var expensePeriodTable = _client.GetTable <ExpensePeriod>();
         return expensePeriodTable.DeleteAsync(expensePeriod);
     }, cancellationToken));
 }
        private async Task UpdateExpensePeriodAsync(Intent data)
        {
            var localDestroyCancellationSource = _destroyCancellationSource;

            string itemId = data.GetStringExtra(AddOrEditExpensePeriodActivity.ItemIdKey);
            int    amountAvailableInCents = data.GetIntExtra(AddOrEditExpensePeriodActivity.AmountAvailableInCentsKey, 0);
            long   startDateInTicks       = data.GetLongExtra(AddOrEditExpensePeriodActivity.StartDateInTicksKey, 0);

            var progressDialog = new ProgressDialog(Context);

            progressDialog.Indeterminate = true;
            progressDialog.SetTitle(Resource.String.UpdatingExpensePeriod);
            progressDialog.Show();

            var expensePeriod = new ExpensePeriod
            {
                Id = itemId,
                AmountAvailable = amountAvailableInCents / 100m,
                StartDate       = new DateTimeOffset(new DateTime(startDateInTicks, DateTimeKind.Local))
            };

            try
            {
                await _persistedDataFragment.UpdateExpensePeriodAsync(Context, expensePeriod, localDestroyCancellationSource.Token);
            }
            catch (Exception ex)
            {
                if (localDestroyCancellationSource.IsCancellationRequested)
                {
                    return;
                }

                progressDialog.Hide();

                var alert = new AlertDialog.Builder(Context).Create();
                alert.SetMessage(ex.Message);

                alert.Show();
                return;
            }

            _persistedDataFragment.InvalidateExpensePeriods();

            if (localDestroyCancellationSource.IsCancellationRequested)
            {
                return;
            }

            progressDialog.Hide();

            await InitializeExpensePeriodsAsync(View);
        }
        private void EditSelectedExpensePeriod()
        {
            var listView = View.FindViewById <ListView>(Resource.Id.ExpensePeriodsListView);
            var adapter  = listView.Adapter as ExpensePeriodsAdapter;

            if (listView.CheckedItemCount > 0 && adapter != null)
            {
                ExpensePeriod selectedExpensePeriod = adapter[listView.CheckedItemPosition];

                var intent = new Intent(View.Context, typeof(AddOrEditExpensePeriodActivity));

                intent.PutExtra(AddOrEditExpensePeriodActivity.ItemIdKey, selectedExpensePeriod.Id);
                intent.PutExtra(AddOrEditExpensePeriodActivity.AmountAvailableInCentsKey, (int)(selectedExpensePeriod.AmountAvailable * 100m));
                intent.PutExtra(AddOrEditExpensePeriodActivity.StartDateInTicksKey, selectedExpensePeriod.StartDate.LocalDateTime.Ticks);

                StartActivityForResult(intent, EditExpensePeriodRequestCode);
            }
        }
        private void DeleteSelectedExpensePeriod()
        {
            var listView = View.FindViewById <ListView>(Resource.Id.ExpensePeriodsListView);
            var adapter  = listView.Adapter as ExpensePeriodsAdapter;

            if (listView.CheckedItemCount > 0 && adapter != null)
            {
                ExpensePeriod selectedExpensePeriod = adapter[listView.CheckedItemPosition];

                var alert = new AlertDialog.Builder(Context).Create();
                alert.SetMessage(string.Format(GetString(Resource.String.DeleteExpensePeriodConfirmation), selectedExpensePeriod.StartDate.ToString("D")));
                alert.SetButton(
                    GetString(Resource.String.DeleteExpensePeriodCommand),
                    async(sender, e) => { await ExecuteDeleteExpensePeriodAsync(selectedExpensePeriod); });
                alert.SetButton2(
                    GetString(Android.Resource.String.Cancel),
                    (sender, e) => { alert.Cancel(); });

                alert.Show();
            }
        }
        private async Task ExecuteDeleteExpensePeriodAsync(ExpensePeriod expensePeriod)
        {
            var localDestroyCancellationSource = _destroyCancellationSource;

            var progressDialog = new ProgressDialog(Context);

            progressDialog.Indeterminate = true;
            progressDialog.SetTitle(Resource.String.DeletingExpensePeriod);
            progressDialog.Show();

            await _persistedDataFragment.DeleteExpensePeriodAsync(Context, expensePeriod, localDestroyCancellationSource.Token);

            _persistedDataFragment.InvalidateExpensePeriods();

            if (localDestroyCancellationSource.IsCancellationRequested)
            {
                return;
            }

            progressDialog.Hide();

            await InitializeExpensePeriodsAsync(View);
        }