コード例 #1
0
        public async Task <bool> IsBasketValid(string versionId, CancellationToken token)
        {
            bool isValid = false;

            try
            {
                var validity = await ApiService.CheckBasketValidity(versionId, token);

                isValid = validity.IsValid;

                if (!isValid)
                {
                    UserDialogs.Error(validity.NotValidMessage);
                }
            }
            catch (ConnectionException ex)
            {
                OnConnectionException(ex);
            }
            catch (Exception ex)
            {
                OnException(ex);
            }

            return(isValid);
        }
コード例 #2
0
        protected virtual async Task Purchase()
        {
            var oid = await VmService.RegisterOrder(PaymentInfo.Amount, PaymentInfo.Currency == "RUB"? 643 : 0, PaymentInfo.CustomerEmail, PaymentInfo.CustomerPhone, OrderId);

            if (oid != 0)
            {
                PaymentUrl = VmService.GetPurchaseUrl(oid, PaymentInfo.CustomerEmail);
            }
            else
            {
                await UserDialogs.Error("Не удалось произвести оплату");
            }
        }
コード例 #3
0
        protected Task <bool> Operation(int operationId, int orderId)
        {
            var tcs = new TaskCompletionSource <bool>();

            _best2Pay.Operation(new B2POperationRequest()
            {
                ID        = orderId,
                operation = operationId,
                get_token = !_ePayment
            }, async(response, error) =>
            {
                if (response != null && (response.state == "REJECTED" || response.state == "TIMEOUT"))
                {
                    string errorText = GetErrorText(response.reason_code);

                    if (response.reason_code == 4 || response.reason_code == 5)
                    {
                        //_card = null;
                    }

                    await UserDialogs.Error(errorText ?? $"Не удалось произвести оплату");
                    tcs.TrySetResult(false);
                    return;
                }

                if (error == null)
                {
                    //if (!_ePayment)
                    //{
                    ////сохраняем токен
                    //var cardInfo = new CreditCardInfo();

                    //cardInfo.PAN = response.pan;
                    //cardInfo.Token = response.token;

                    //если нет ошибки, показываем спасибоэкран
                    //OnPaymentCompleted();
                    //}
                    //else
                    tcs.TrySetResult(true);
                }
                else
                {
                    //иначе показываем пользователю сообщение об ошибке
                    await UserDialogs.Error($"Не удалось произвести оплату");
                    tcs.TrySetResult(false);
                }
            });

            return(tcs.Task);
        }
コード例 #4
0
        protected virtual async void OnDeleteReview()
        {
            Loading = true;

            if (await VmService.DeleteReview(ReviewDetails.Id))
            {
                UserDialogs.Alert("Ваш отзыв удален");

                Close(this);
            }
            else
            {
                UserDialogs.Error("Не удалось удалить отзыв");
            }

            Loading = false;
        }
コード例 #5
0
        protected virtual async void OnPostReview()
        {
            Loading = true;

            if (await VmService.PostReview(ReviewId, ProductGroupId, ProductId, ReviewItems.OfType <IReviewParameterItemVm>().ToList()))
            {
                ChangePresentation(new NavigateToDefaultViewModelHint());

                UserDialogs.Alert("Ваш отзыв отправлен!");
            }
            else
            {
                UserDialogs.Error("Не удалось отправить отзыв");
            }

            Loading = false;
        }
コード例 #6
0
        protected virtual async Task ProcessCardPayment(PaymentOrderInfo paymentInfo)
        {
            Loading = true;

            var paymentResult = await VmService.PayWithCard(CardNumber.Without(' '), ExpirationDate, Cvv, CardHolder, paymentInfo.Amount, paymentInfo.Currency, () =>
            {
                Loading = false;
            }, OrderId);

            if (paymentResult.Succeeded)
            {
                await PaymentsVmService.OrderPaid(OrderId);
            }
            else
            {
                await UserDialogs.Error(paymentResult.ErrorMessage.IsNullOrEmtpy()? "Не удалось совершить платеж, проверьте введенные данные. Если ошибка повторится попробуйте совершить платеж позже" : paymentResult.ErrorMessage);
            }

            Loading = false;
        }
コード例 #7
0
        public async Task <bool> ValidateAndSaveUserFields(IEnumerable <IOrderFieldsGroupVM> fieldsGroups)
        {
            var result = false;

            try
            {
                var fields = fieldsGroups.SelectMany(x => x.Items);

                var validation = await Mvx.Resolve <IOrderService>().ConfirmUser(fields.ToDictionary(x => x.Id, x => x.Value));

                if (validation == null || (validation.NotValidFields.IsNullOrEmpty() && validation.Error.IsNullOrEmtpy()))
                {
                    result = true;
                }
                else
                {
                    foreach (var notValidField in validation.NotValidFields)
                    {
                        var field = fields.FirstOrDefault(x => x.Id.Equals(notValidField.Id));
                        field.IsValid = false;
                    }

                    if (!validation.Error.IsNullOrEmpty())
                    {
                        UserDialogs.Error(validation.Error);
                    }
                }
            }
            catch (ConnectionException ex)
            {
                OnConnectionException(ex);
            }
            catch (Exception ex)
            {
                OnException(ex);
            }

            return(result);
        }
コード例 #8
0
        public async Task <bool> ValidateAndSaveDeliveryAddressFields(string deliveryId, MvxObservableCollection <IOrderFieldItemVM> fields)
        {
            var result = false;

            try
            {
                var validation = await DeliveryService.ConfirmDeliveryAddress(deliveryId, fields.ToDictionary(x => x.Id, x => x.Value));

                if (validation == null || (validation.NotValidFields.IsNullOrEmpty() && validation.Error.IsNullOrEmtpy()))
                {
                    result = true;
                }
                else
                {
                    foreach (var notValidField in validation.NotValidFields)
                    {
                        var field = fields.FirstOrDefault(x => x.Id.Equals(notValidField.Id));
                        field.IsValid = false;
                    }

                    if (!validation.Error.IsNullOrEmpty())
                    {
                        UserDialogs.Error(validation.Error);
                    }
                }
            }
            catch (ConnectionException ex)
            {
                OnConnectionException(ex);
            }
            catch (Exception ex)
            {
                OnException(ex);
            }
            return(result);
        }
コード例 #9
0
        protected virtual void OnPaymentFailed()
        {
            UserDialogs.Error($"Не удалось оплатить заказ №{OrderId}");

            Close(this);
        }