public async Task <string> Charge(ChargeCardRequest request, MoneyDriver moneyDriver)
        {
            if (String.IsNullOrEmpty(moneyDriver.Token))
            {
                throw new Exception("Money Driver Token is required");
            }
            string resource = this.resources[moneyDriver.Environment].ChargeCard;
            List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string> (Headers.Authorization, moneyDriver.Token)
            };
            var response = await new ApiRequest(resource).MakeRequest(data: request, method: Verbs.POST, headers: headers);

            return(response);
        }
Example #2
0
        public async Task Send()
        {
            try
            {
                if (!CanSend())
                {
                    return;
                }

                if (!connectivity.IsConnected)
                {
                    await View.DisplayAlert("...", "Internet connection required", "Ok");

                    return;
                }

                var amount = decimal.Parse(Amount.Value);

                var request = new ChargeCardRequest
                {
                    Amount = amount,
                };

                using (WorkingScope.Enter())
                {
                    var response = await cardsService.ChargeCard(secureStorage.GetUserId().Value, appData.Cards.First().Id, request);

                    appData.Cards.First().Balance = response.NewCardBalance;
                    appData.BucketAmount = response.NewBucketAmount;

                    await cardData.SaveCards(appData.Cards);

                    await bucketData.SaveBucketInfo(new BucketInfo { Amount = appData.BucketAmount });
                }

                await View.DisplayAlert("Done", "Card charged successfully!", "Ok");
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex, new Dictionary <string, string>
                {
                    { "page", "send bucket to card" },
                    { "operation", $"{nameof(BucketHomeViewModel)}.{nameof(Send)}" }
                });
                await View.DisplayAlert("Error", "An error occurred while processing your request" + ex, "Ok");
            }
        }