Example #1
0
        // Get data from XERO API.
        private async void LoadDeliveryBtn_Clicked(object sender, EventArgs e)
        {
            if (!App.CheckIfInternet())
            {
                await DisplayAlert("Oops", "No internet connection, couldn't load data from XERO", "OK");

                return;
            }
            spinnerActivity.IsVisible = true;
            // no access token in Preferences: first run -> login
            // more than 30 days -> login
            // more than 30 mins -> get new access token
            // otherwise -> get data directly
            XeroAPI.DecodeAccessToken();
            long currentUnixTimeStamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            try
            {
                if (XeroAPI._accessToken == null || currentUnixTimeStamp - XeroAPI._accessToken.nbf >= 30 * 24 * 3600)
                {
                    await Navigation.PushModalAsync(new XEROWebPage());

                    GridOverlay.IsVisible = false;
                }
                else if (currentUnixTimeStamp - XeroAPI._accessToken.nbf > 1800)
                {
                    // get a new access token
                    await XeroAPI.RefreshToken();

                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    await XeroAPI.FillData();

                    SupplyOrder();
                    //await DisplayAlert("Xero API", "You got a new access Token", "OK");
                    await DisplayAlert("Xero API", "Data has been loaded", "OK");
                }
                else
                {
                    // get the data by the access token;
                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    await XeroAPI.FillData();

                    SupplyOrder();
                    await DisplayAlert("Xero API", "Data has been loaded", "OK");
                }
            }
            catch
            {
                await DisplayAlert("Xero API", "Failure in loading data from XERO", "OK");
            }


            spinnerActivity.IsVisible = false;
        }
        private void InitXeroWebView()
        {
            xeroWebView.Source          = AuthorizeLink();
            activityIndicator.IsVisible = false;
            xeroWebView.Navigated      += async(object sender, WebNavigatedEventArgs e) =>
            {
                if (e.Url.Contains(@"https://www.xero.com/nz/"))
                {
                    activityIndicator.IsVisible = true;
                    int indexStart = e.Url.IndexOf("code=") + 5;
                    int length     = e.Url.IndexOf("&scope=") - indexStart;
                    Preferences.Set("Code", e.Url.Substring(indexStart, length));

                    try {
                        await XeroAPI.GetToken();

                        await XeroAPI.GetTenantID();

                        await XeroAPI.GetInvoices();

                        await XeroAPI.FillData();
                    }
                    catch {
                        await DisplayAlert("XERO API", "Failure in retrieving data from XERO", "OK");
                    }

                    await Navigation.PopModalAsync();
                }
            };
        }
        private void InitXeroWebView()
        {
            xeroWebView.Source          = AuthorizeLink();
            activityIndicator.IsVisible = false;
            xeroWebView.Navigated      += async(object sender, WebNavigatedEventArgs e) =>
            {
                if (e.Url.Contains(@"https://www.xero.com/nz/"))
                {
                    activityIndicator.IsVisible = true;
                    int indexStart = e.Url.IndexOf("code=") + 5;
                    int length     = e.Url.IndexOf("&scope=") - indexStart;
                    Preferences.Set("Code", e.Url.Substring(indexStart, length));

                    var isSuccess = await XeroAPI.GetToken();

                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    //await DisplayAlert("OK", $"{XeroAPI._InvoiceResponse.Invoices[0].InvoiceID}", "OK");
                    await XeroAPI.FillData();

                    await Navigation.PopModalAsync();
                }
            };
        }
Example #4
0
        //Get data from XERO API
        private async void LoadDeliveryBtn_Clicked(object sender, EventArgs e)
        {
            // test data
            // Get invoice
            // _InvoiceResponse = JsonConvert.DeserializeObject<InvoiceResponse>(responseBody);

            //XeroAPI._InvoiceResponse = new InvoiceResponse();
            //XeroAPI._InvoiceResponse.Id = "b0379bbd-a973-acd5-81a37798b2ab";
            //XeroAPI._InvoiceResponse.Status = "OK";
            //XeroAPI._InvoiceResponse.ProviderName = "WhiterocksStudAndFeed";
            //XeroAPI._InvoiceResponse.DateTimeUTC = DateTime.UtcNow;

            if (!App.CheckIfInternet())
            {
                await DisplayAlert("Oops", "No internet connection, couldn't load data from XERO", "OK");

                return;
            }
            // no access token in Preferences: first run -> login
            // more than 30 days -> login
            // more than 30 mins -> get new access token
            // otherwise -> get data directly
            XeroAPI.DecodeAccessToken();
            long currentUnixTimeStamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            if (XeroAPI._accessToken == null || currentUnixTimeStamp - XeroAPI._accessToken.nbf >= 30 * 24 * 3600)
            {
                await Navigation.PushModalAsync(new XEROWebPage());

                GridOverlay.IsVisible = false;
            }
            else if (currentUnixTimeStamp - XeroAPI._accessToken.nbf > 1800)
            {
                // get a new access token
                await XeroAPI.RefreshToken();

                await XeroAPI.GetInvoices();

                await XeroAPI.FillData();

                await DisplayAlert("Xero API", "You got a new access Token", "OK");
            }
            else
            {
                // get the data by the access token;
                await XeroAPI.GetInvoices();

                await XeroAPI.FillData();
                await DisplayAlert("Xero API", "You got the data", "OK");
            }

            SupplyOrder();
            CheckHasDataLabel();
        }
Example #5
0
        public void GetWeightTest()
        {
            double weight = XeroAPI.GetWeight("Apple Pie 23kg");

            Assert.AreEqual(23, weight);
            weight = XeroAPI.GetWeight("Apple Pie 24 kg");
            Assert.AreEqual(24, weight);
            weight = XeroAPI.GetWeight("Apple Pie 25 kg new");
            Assert.AreEqual(25, weight);

            // failed cases
            //weight = XeroAPI.GetWeight("Apple Package 26-kg) new");
            //Assert.AreEqual(26, weight);
            //weight = XeroAPI.GetWeight("Apple Packge 27 kg new");
            //Assert.AreEqual(27, weight);
        }