Example #1
0
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            clientName = Android.OS.Build.Manufacturer + " " + Android.OS.Build.Model;
            SetContentView(Resource.Layout.premium);

            Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity = this;

            InitElements();

            if (_databaseMethods.UserExists())
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }
                var purchaseInfo = await _accounts.AccountAuthorize(_databaseMethods.GetAccessJwt(), clientName);

                //var deserialized_info = JsonConvert.DeserializeObject<AuthorizeRootObject>(purchase_info);
                AuthorizeAfterPurchase(purchaseInfo);
            }

            FindViewById <RelativeLayout>(Resource.Id.backRL).Click += (s, e) => OnBackPressed();

            _monthBn.Click += async(s, e) =>
            {
                if (!_databaseMethods.UserExists())
                {
                    call_login_menu();
                    return;
                }

                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }

                _monthActivityIndicator.Visibility = ViewStates.Visible;
                _monthBn.Visibility = ViewStates.Gone;

                string productId = "month_auto_subscription";
                InAppBillingService  inAppBillingService = new InAppBillingService();
                InAppBillingPurchase purchase            = new InAppBillingPurchase();

                var authorizeCheck = await _accounts.AccountAuthorize(_databaseMethods.GetAccessJwt(), clientName);

                if (/*res_card_data == Constants.status_code409 ||*/ authorizeCheck == Constants.status_code401)
                {
                    ShowSeveralDevicesRestriction();
                    return;
                }
                var deserialized = JsonConvert.DeserializeObject <AuthorizeRootObject>(authorizeCheck);
                if (deserialized != null)
                {
                    var jsonObj   = JsonConvert.SerializeObject(new { accountID = deserialized.accountID.ToString() });
                    var textBytes = Encoding.UTF8.GetBytes(jsonObj);
                    var base64    = Convert.ToBase64String(textBytes);

                    if (deserialized.accountID != null)
                    {
                        purchase = await inAppBillingService.PurchaseSubscription(productId, base64);
                    }
                }
                //else
                //purchase = await inAppBillingService.PurchaseSubscription(product_id, String.Empty);
                if (purchase != null)
                {
                    Toast.MakeText(this, TranslationHelper.GetString("waitServerSync", _ci), ToastLength.Short).Show();
                    // Inform our server.

                    var notifyServer = await _accounts.AccountSubscribeAndroid(_databaseMethods.GetAccessJwt(),
                                                                               3,
                                                                               purchase.ProductId,
                                                                               purchase.PurchaseToken);

                    //var notify_server = await accounts.AccountSubscribe(
                    //databaseMethods.GetAccessJwt(),
                    //Constants.personalGoogle.ToString(),
                    //purchase,
                    //DateTime.UtcNow.AddDays(1), // ATTENTION with days.
                    //NativeMethods.GetDeviceId()
                    //);

                    var authorizeCheckAfterPurchase = await _accounts.AccountAuthorize(_databaseMethods.GetAccessJwt(), clientName);

                    AuthorizeAfterPurchase(authorizeCheckAfterPurchase);
                    _monthActivityIndicator.Visibility = ViewStates.Gone;
                    Toast.MakeText(this, TranslationHelper.GetString("syncDoneSuccessfully", _ci), ToastLength.Short).Show();
                    return;
                }
                _monthActivityIndicator.Visibility = ViewStates.Gone;
                _monthBn.Visibility = ViewStates.Visible;
            };

            _yearBn.Click += async(s, e) =>
            {
                if (!_databaseMethods.UserExists())
                {
                    call_login_menu();
                    return;
                }

                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    return;
                }

                _yearActivityIndicator.Visibility = ViewStates.Visible;
                _yearBn.Visibility = ViewStates.Gone;

                string productId = "year_auto_subscription";
                InAppBillingService  inAppBillingService = new InAppBillingService();
                InAppBillingPurchase purchase            = new InAppBillingPurchase();

                var authorizeCheck = await _accounts.AccountAuthorize(_databaseMethods.GetAccessJwt(), clientName);

                if (/*res_card_data == Constants.status_code409 ||*/ authorizeCheck == Constants.status_code401)
                {
                    ShowSeveralDevicesRestriction();
                    return;
                }
                var deserialized = JsonConvert.DeserializeObject <AuthorizeRootObject>(authorizeCheck);
                if (deserialized != null)
                {
                    var jsonObj   = JsonConvert.SerializeObject(new { accountID = deserialized.accountID.ToString() });
                    var textBytes = Encoding.UTF8.GetBytes(jsonObj);
                    var base64    = Convert.ToBase64String(textBytes);

                    if (deserialized.accountID != null)
                    {
                        purchase = await inAppBillingService.PurchaseSubscription(productId, base64);
                    }
                }
                //else
                //purchase = await inAppBillingService.PurchaseSubscription(product_id, String.Empty);
                if (purchase != null)
                {
                    Toast.MakeText(this, TranslationHelper.GetString("waitServerSync", _ci), ToastLength.Short).Show();
                    // Inform our server.

                    var notifyServer = await _accounts.AccountSubscribeAndroid(_databaseMethods.GetAccessJwt(),
                                                                               3,
                                                                               purchase.ProductId,
                                                                               purchase.PurchaseToken);

                    //var notify_server = await accounts.AccountSubscribe(
                    //databaseMethods.GetAccessJwt(),
                    //Constants.personalGoogle.ToString(),
                    //purchase,
                    //DateTime.UtcNow.AddDays(1), // ATTENTION with days.
                    //NativeMethods.GetDeviceId()
                    //);

                    var authorizeCheckAfterPurchase = await _accounts.AccountAuthorize(_databaseMethods.GetAccessJwt(), clientName);

                    AuthorizeAfterPurchase(authorizeCheckAfterPurchase);
                    _yearActivityIndicator.Visibility = ViewStates.Gone;
                    Toast.MakeText(this, TranslationHelper.GetString("syncDoneSuccessfully", _ci), ToastLength.Short).Show();
                    return;
                }
                _yearActivityIndicator.Visibility = ViewStates.Gone;
                _yearBn.Visibility = ViewStates.Visible;
            };

            _termsBn.Click += (s, e) =>
            {
                var uri = Android.Net.Uri.Parse("https://myqrcards.com/agreement/ru");
                StartActivity(new Intent(Intent.ActionView, uri));
            };
            _politicsBn.Click += (s, e) =>
            {
                var uri = Android.Net.Uri.Parse("https://myqrcards.com/privacy-policy/ru");
                StartActivity(new Intent(Intent.ActionView, uri));
            };
        }
        protected override async void OnResume()
        {
            base.OnResume();

            CardsCreatingProcessActivity.CameFrom = Constants.email_confirmation_waiting;
            if (!_methods.IsConnected())
            {
                NoConnectionActivity.ActivityName = this;
                StartActivity(typeof(NoConnectionActivity));
                Finish();
                Analytics.TrackEvent("147 finish waiting email");
                return;
            }

            AccountActions.cycledRequestCancelled = false;
            string res = null;

            try
            {
                res = await _accountActions.AccountActionsGet(_databaseMethods.GetActionJwt(), clientName);
            }
            catch (Exception ex)
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    Analytics.TrackEvent("164 finish waiting email");
                    return;
                }
            }
            if (String.IsNullOrEmpty(res))
            {
                if (!_methods.IsConnected())
                {
                    NoConnectionActivity.ActivityName = this;
                    StartActivity(typeof(NoConnectionActivity));
                    Finish();
                    Analytics.TrackEvent("175 finish waiting email");
                    return;
                }
            }
            if (res.Contains("processed"))
            {
                var    deserializedGet = JsonConvert.DeserializeObject <AccountActionsGetModel>(res);
                string resAuth         = null;
                try
                {
                    resAuth = await _accounts.AccountAuthorize(deserializedGet.accountClientJwt, clientName);
                }
                catch (Exception ex)
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        Analytics.TrackEvent("194 finish waiting email");
                        return;
                    }
                }
                if (String.IsNullOrEmpty(resAuth))
                {
                    if (!_methods.IsConnected())
                    {
                        NoConnectionActivity.ActivityName = this;
                        StartActivity(typeof(NoConnectionActivity));
                        Finish();
                        Analytics.TrackEvent("205 finish waiting email");
                        return;
                    }
                }
                var deserialized     = JsonConvert.DeserializeObject <AuthorizeRootObject>(resAuth);
                int lastSubscription = deserialized.subscriptions[deserialized.subscriptions.Count - 1].id;
                _databaseMethods.InsertLoginAfter(deserialized.accessJwt, deserialized.accountUrl, lastSubscription);
                try
                {
                    foreach (var subs in deserialized.subscriptions)
                    {
                        if (subs.limitations != null)
                        {
                            if (subs.limitations.allowMultiClients)
                            {
                                QrActivity.IsPremium = true;
                                break;
                            }
                        }
                    }
                    //if (!is_premium)
                    foreach (var subscription in deserialized.subscriptions)
                    {
                        if (subscription.limitations != null)
                        {
                            if (subscription.limitations?.cardsRemaining == null)
                            {
                                QrActivity.CardsRemaining = 10;
                                break;
                            }
                            else
                            if (subscription.limitations.cardsRemaining > QrActivity.CardsRemaining)
                            {
                                QrActivity.CardsRemaining = subscription.limitations.cardsRemaining.Value;
                            }
                        }
                    }
                    foreach (var subscription in deserialized.subscriptions)
                    {
                        if (subscription.features != null)
                        {
                            foreach (var feature in subscription.features)
                            {
                                if (feature == Constants.ExtraEmploymentData)
                                {
                                    QrActivity.ExtraEmploymentData = feature;
                                }
                                if (feature == Constants.CompanyLogoInQr)
                                {
                                    QrActivity.CompanyLogoInQr = feature;
                                }
                                if (feature == Constants.ExtraPersonData)
                                {
                                    QrActivity.ExtraPersonData = feature;
                                }
                            }
                        }
                        else
                        {
                        }
                    }
                }
                catch
                {
                }
                if (!resAuth.Contains("userTermsAccepted"))
                {
                    var    deviceId      = NativeMethods.GetDeviceId();
                    string resApplyTerms = null;
                    try
                    {
                        resApplyTerms = await _accounts.ApplyUserTerms(deserialized.accessJwt, deserializedGet.processed, deviceId);
                    }
                    catch (Exception ex)
                    {
                        if (!_methods.IsConnected())
                        {
                            NoConnectionActivity.ActivityName = this;
                            StartActivity(typeof(NoConnectionActivity));
                            Finish();
                            Analytics.TrackEvent("274 finish waiting email");
                            return;
                        }
                    }
                    if (String.IsNullOrEmpty(resApplyTerms))
                    {
                        if (!_methods.IsConnected())
                        {
                            NoConnectionActivity.ActivityName = this;
                            StartActivity(typeof(NoConnectionActivity));
                            Finish();
                            Analytics.TrackEvent("285 finish waiting email");
                            return;
                        }
                    }
                    if (resApplyTerms.ToLower().Contains(": 20") || resApplyTerms.ToLower().Contains("accepted"))
                    {
                        if (_databaseMethods.GetLoginedFrom() == Constants.from_card_creating)
                        {
                            Intent intent = new Intent(this, typeof(CardsCreatingProcessActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(CardsCreatingProcessActivity));
                            //Finish();
                        }
                        else if (_databaseMethods.GetLoginedFrom() == Constants.from_slide_menu)
                        {
                            Intent intent = new Intent(this, typeof(MyCardActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(MyCardActivity));
                            //Finish();
                        }
                        else if (_databaseMethods.GetLoginedFrom() == Constants.from_card_creating_premium)
                        {
                            Intent intent = new Intent(this, typeof(PersonalDataActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(PersonalDataActivity));
                            //Finish();
                        }
                        else
                        {
                            if (!QrActivity.IsPremium)
                            {
                                Intent intent = new Intent(this, typeof(MyCardActivity));
                                intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                                StartActivity(intent);
                                //StartActivity(typeof(MyCardActivity));
                            }
                            else
                            {
                                Intent intent = new Intent(this, typeof(QrActivity));
                                intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                                StartActivity(intent);
                                //StartActivity(typeof(QRActivity));
                            }
                            Finish();
                        }
                    }
                }
                else
                {
                    if (_databaseMethods.GetLoginedFrom() == Constants.from_card_creating)
                    {
                        Intent intent = new Intent(this, typeof(CardsCreatingProcessActivity));
                        intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                        StartActivity(intent);
                        //StartActivity(typeof(CardsCreatingProcessActivity));
                        //Finish();
                    }
                    else if (_databaseMethods.GetLoginedFrom() == Constants.from_slide_menu)
                    {
                        if (!QrActivity.IsPremium)
                        {
                            Intent intent = new Intent(this, typeof(MyCardActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(MyCardActivity));
                        }
                        else
                        {
                            Intent intent = new Intent(this, typeof(QrActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(QRActivity));
                        }
                        Finish();
                    }
                    else if (_databaseMethods.GetLoginedFrom() == Constants.from_card_creating_premium)
                    {
                        Intent intent = new Intent(this, typeof(PersonalDataActivity));
                        intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                        StartActivity(intent);
                        //StartActivity(typeof(PersonalDataActivity));
                        //Finish();
                    }
                    else
                    {
                        if (!QrActivity.IsPremium)
                        {
                            Intent intent = new Intent(this, typeof(MyCardActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(MyCardActivity));
                        }
                        else
                        {
                            Intent intent = new Intent(this, typeof(QrActivity));
                            intent.AddFlags(ActivityFlags.ClearTop); // Removes other Activities from stack
                            StartActivity(intent);
                            //StartActivity(typeof(QRActivity));
                        }
                        Finish();
                    }
                }
            }
        }