コード例 #1
0
        private async Task LoadContent(int id)
        {
            Loading = true;

            try
            {
                Bundle = await Mvx.Resolve <IWebService>().LoadProductCard(id);

                if (Bundle != null)
                {
                    ShopName    = Bundle.ShopName;
                    ProductName = Bundle.Name;

                    Price = Bundle.Price.ToPriceString();

                    if (Bundle.OldPrice != null && Bundle.OldPrice.HasValue)
                    {
                        OldPrice = Bundle.OldPrice.Value.ToPriceString();
                    }
                }
                else
                {
                    UserInteractions.Alert("Не удалось загрузить подробную информацию", title: "Ошибка");
                }
            }
            catch (Exception ex)
            {
                UserInteractions.Alert(ex.Message ?? "Не удалось загрузить подробную информацию", title: "Ошибка");
            }
            finally
            {
                Loading = false;
            }
        }
コード例 #2
0
        /// <summary>
        /// Вызывается, когда рядом находится маячок
        /// </summary>
        /// <param name="msg">Сообщение <see cref="Demo.Core.Messages.BeaconFoundMessage"/>.</param>
        private void OnBeaconIsNear(BeaconFoundMessage msg)
        {
            //Проверяем, что найденный маячок "наш", т.е. находится в списке загруженных с сервера
            var beacon = Beacons.FirstOrDefault(x => x.UUID.ToLower() == msg.UUID.ToLower() && x.Major == msg.Major && x.Minor == msg.Minor);

            if (beacon != null)
            {
                //Скрываем индикатор загрузки, ведь поиск уже закончен
                Loading = false;

                //Останавливаем поиск маячков
                Mvx.Resolve <IBeaconService>().Stop();

                //Отписываемся от подписки на сообщения BeaconFoundMessage
                Messenger.Unsubscribe <BeaconFoundMessage>(_beaconToken);

                //Пишем в output какой маячок мы нашли
                Mvx.Resolve <IMvxTrace>().Trace(MvxTraceLevel.Diagnostic, "Beacon", string.Format("Current Beacon {0} - {1} - {2}", beacon.UUID, beacon.Major, beacon.Minor));

                //Показываем пользователю диалог о том, что мы нашли для него интересное предложение
                UserInteractions.Alert(
                    "Персональное предложение! Специально для Вас товар со скидкой!",
                    () => ShowViewModel <ProductViewModel>(new { id = beacon.ID }),
                    "Уведомление");
            }
        }
コード例 #3
0
        /// <summary>
        /// Запускает загрузку доступных маячков и начинает поиск ближайших
        /// </summary>
        private async void StartLoadAndSearchBeacons()
        {
            //Отображаем индикатор загрузки
            Loading = true;

            try
            {
                //Получаем экземпляр сервиса IWebService и загружаем доступные маячки
                Beacons = await Mvx.Resolve <IWebService>().LoadBeacons();

                if (Beacons.IsNullOrEmpty())
                {
                    return;
                }

                //Подписываемся на сообщение о том, что рядом был обнаружен маячок
                _beaconToken = Messenger.Subscribe <BeaconFoundMessage>(OnBeaconIsNear);

                //Начинаем поиск маячков рядом с пользователем
                Mvx.Resolve <IBeaconService>().Start(Beacons);
            }
            catch (Exception ex)
            {
                //Что-то пошло не так – отображаем пользователю соответствующий диалог
                UserInteractions.Alert(ex.Message ?? "Не удалось найти ни одного маячка рядом, попробуйте в другом месте", title: "Ошибка");

                //Скрываем индикатор загрузки
                Loading = false;
            }
        }
コード例 #4
0
        private async void LoadContent()
        {
            Loading = true;
            try
            {
                var instance = new YaMoneyInstance {
                    InstanceID = "Raqlr8fgDFqlICSixvkEk1g4wgjUhaQCDXqSHAcM6ImWEWwzjpsGC4sp9dpR37Xq"
                };
//                var instance = await Mvx.Resolve<IYaMoneyService>().LoadMoneyInstance ();

                var request = await Mvx.Resolve <IYaMoneyService>().LoadMoneyRequest(instance.InstanceID, ProductCard.YaMoney, ProductCard.Price);

                var process = await Mvx.Resolve <IYaMoneyService>().LoadMoneyProcess(request.RequestID, instance.InstanceID);

                var hiddenParams = new StringBuilder();
                foreach (var acsParam in process.YaMoneyACSParams)
                {
                    hiddenParams.AppendFormat("<input type=\"hidden\" name=\"{0}\" value=\"{1}\" />", acsParam.Key, acsParam.Value);
                }

                HtmlText = string.Format(pageFormat, process.ASCUri, hiddenParams);
            }
            catch (Exception ex)
            {
                UserInteractions.Alert(ex.Message ?? "Не удалось провести платеж", title: "Ошибка");
            }
            finally
            {
                Loading = false;
            }
        }
コード例 #5
0
        public async void PaymentFailed()
        {
            Order.Status = Status.Fail;

            try
            {
                var order = await Mvx.Resolve <IWebService>().SendOrderWithStatus(Order);

                UserInteractions.Alert("Не удалось совершить платеж", title: "Ошибка");
            }
            catch (Exception ex)
            {
                UserInteractions.Alert(ex.Message, title: "Ошибка");
            }
        }
コード例 #6
0
        public async void PaymentSucceeded()
        {
            Order.Status = Status.Success;

            try
            {
                var order = await Mvx.Resolve <IWebService>().SendOrderWithStatus(Order);

                ShowViewModel <ThanksViewModel>(new { product = JsonConvert.SerializeObject(ProductCard), order = JsonConvert.SerializeObject(order) });
            }
            catch (Exception ex)
            {
                UserInteractions.Alert(ex.Message, title: "Ошибка");
            }
        }