private void PopupMenu_MenuItemClick(object sender, PopupMenu.MenuItemClickEventArgs e)
        {
            popupMenu.Dismiss();
            switch (e.Item.ItemId)
            {
            case Resource.Id.edit:
                var intent  = new Intent(ItemView.Context, typeof(EditOutcomeActivity));
                var content = JsonConvert.SerializeObject(outcomeModel);
                intent.PutExtra("OutcomeDetail", content);

                ItemView.Context.StartActivity(intent);
                break;

            case Resource.Id.delete:
                ((Activity)ItemView.Context).RunOnUiThread(() =>
                {
                    ItemView.Context.ShowConfirmDialog(Resource.String.confirm, Resource.String.delete_outcome,
                                                       () =>
                    {
                        var dialog = ItemView.Context.CreateDialog(Resource.String.deleting_outcome, Resource.String.wait);
                        dialog.Show();
                        ((Activity)ItemView.Context).DoRequest(OutComesController.Instance.Delete(OutcomeModel),
                                                               () =>
                        {
                            dialog.Dismiss();
                            DeleteClick?.Invoke(OutcomeModel, e);
                            ItemView.Context.ShowMessage(Resource.String.delete_outcome_success);
                        });
                    },
                                                       () => { }).Show();
                });
                break;
            }
        }
        private void PopupMenu_MenuItemClick(object sender, PopupMenu.MenuItemClickEventArgs e)
        {
            popupMenu.Dismiss();
            switch (e.Item.ItemId)
            {
            case Resource.Id.edit:
                var intent  = new Intent(ItemView.Context, typeof(EditFeeActivity));
                var content = JsonConvert.SerializeObject(moneyState.MoneyModel);
                intent.PutExtra("MoneyDetail", content);

                ItemView.Context.StartActivity(intent);
                break;

            case Resource.Id.delete:
                ((Activity)ItemView.Context).RunOnUiThread(() =>
                {
                    ItemView.Context.ShowConfirmDialog(Resource.String.delete_fee, Resource.String.confirm_delete,
                                                       () =>
                    {
                        var dialog = ItemView.Context.CreateDialog("Deleting fee", "Please wait");
                        dialog.Show();
                        // delete
                        ((Activity)ItemView.Context).DoRequest(Task.Run(async() =>
                        {
                            await MoneysController.Instance.Delete(moneyState.MoneyModel);
                            foreach (var userMoneyModel in UserMoneysController.Instance.Values.Where(x =>
                                                                                                      x.MoneyId == moneyState.MoneyModel.Id))
                            {
                                await UserMoneysController.Instance.Delete(userMoneyModel);
                            }
                        }), () =>
                        {
                            DeleteClick?.Invoke("Success", null);
                            dialog.Dismiss();
                        });
                    },
                                                       () => { }).Show();
                });
                break;
            }
        }