Ejemplo n.º 1
0
        public async Task <YNCEndpointStatus> AddBeaconRegistration(String jsonBeacons)
        {
            HttpResponseMessage response;

            try
            {
                response = await PerformPOSTRequestJSONWithToken("/registration", jsonBeacons);

                String            responseContent = response.Content.ReadAsStringAsync().Result;
                YNCEndpointStatus status          = CheckAuthFailure(response);

                if (_verboseMode)
                {
                    Debug.WriteLine("JSON request: " + jsonBeacons);
                }
                Debug.WriteLine("Token: " + _authToken);
                Debug.WriteLine(responseContent);

                if (status != YNCEndpointStatus.OK)
                {
                    return(status);
                }

                return(YNCEndpointStatus.OK);
            } catch (Exception ex)
            {
                if (_verboseMode)
                {
                    Debug.WriteLine(ex.Message);
                }


                return(YNCEndpointStatus.UnexpectedHttpError);
            }
        }
        public async void ActivateBluetooth(object sender, EventArgs e)
        {
            if (_beaconDiscovery == null)
            {
                return;
            }

            ((Button)sender).IsEnabled = false;

            await RequestPermissions();

            ((Button)sender).Text += "...";

            try
            {
                await _beaconDiscovery.PerformSingleScan();
            } catch (System.NullReferenceException)
            {
                _beaconDiscovery.Disable();
                await DisplayAlert("Fout", "Er is een onbekende fout opgetreden!", "OK");

                ((Button)sender).IsEnabled = true;

                return;
            }

            var result  = _beaconDiscovery.GetLatestScanResult();
            var beacons = new ObservableCollection <Beacon>();

            foreach (Beacon b in result)
            {
                if (b.BeaconType != Beacon.BeaconTypeEnum.Unknown && b.BeaconFrames.Count > 0)
                {
                    beacons.Add(b);
                }
            }

            if (beacons.Count > 0)
            {
                String     str          = "Er zijn " + beacons.Count + " beacons gevonden:\n";
                BeaconJSON beaconInJson = new BeaconJSON();

                foreach (Beacon b in beacons)
                {
                    beaconInJson.Add(GetBeaconUUID(b), b.Rssi);

                    str += " - " + GetBeaconUUID(b);
                    str += " RSSI: " + b.Rssi.ToString();
                    str += "\n";
                }

                try
                {
                    String json = beaconInJson.ParseJson();

                    var yncEndpoint = RootWorkItem.Services.Get <YNCEndpoint>();

                    if (yncEndpoint == null)
                    {
                        await DisplayAlert("Fout", "Er is een onbekende fout opgetreden! Probeer het later opnieuw.", "OK");

                        return;
                    }

                    YNCEndpointStatus endpointStatus = await yncEndpoint.AddBeaconRegistration(json);

                    switch (endpointStatus)
                    {
                    case YNCEndpointStatus.OK:
                        await DisplayAlert("Succes", "Geregistreerd!", "OK");

                        break;

                    case YNCEndpointStatus.NoYNCBeaconsFound:
                        await DisplayAlert("Fout", "Er zijn geen beacons van Academy Attendance gevonden!", "OK");

                        break;

                    case YNCEndpointStatus.AuthFailed:
                        await DisplayAlert("Autorisatie fout", "Er is een autorisatie fout opgetreden. Probeer opnieuw te registreren.", "OK");

                        break;

                    case YNCEndpointStatus.AlreadyRegistered:
                        await DisplayAlert("Registratie fout", "Je bent al registreert voor deze les!", "OK");

                        break;

                    case YNCEndpointStatus.UnexpectedHttpError:
                        await DisplayAlert("Fout", "Er is een onbekende fout opgetreden! Probeer het later opnieuw.", "OK");

                        break;

                    default:
                        break;
                    }
                }
                catch (JsonException ex)
                {
                    Debug.WriteLine("JsonConvert error: " + ex.ToString());
                    await DisplayAlert("Fout", "Er is een onbekende fout opgetreden! Probeer het later opnieuw.", "OK");
                }


                beaconsText.Text = str;
            }

            ((Button)sender).Text      = ((Button)sender).Text.Replace("...", "");
            ((Button)sender).IsEnabled = true;
        }