/// <summary>
        /// TODO
        /// </summary>
        /// <param name="paramA09">Parameter a09.</param>
        private async Task SendPresenceAck(string paramA09) //, int? idPrestation)
        {
            int idParticipant;

            if (!int.TryParse(paramA09, out idParticipant))
            {
                //await this.ShowAlert("Attention", "Problème de lecture du QR Code.");
                await this.DisplayAlert("Attention", "Problème de lecture du QR Code.", "Cancel");

                return;
            }

            // On appelle le WS pour signifier la présence
            // On passe par validateService
            // On prépare la validation de la présence
            var validateService = new ValidatePresenceService(this.Token);

            // On ajoute la ligne à valider
            var validate = validateService.AddNewPresence(idParticipant, this.idPrestation, true);

            // On déclenche l'envoi au WS (si besoin)
            if (validate != null)
            {
                // On envoie uniquement en cas de connexion
                if (!Global.GetSettingsBool(TypeSettings.IsHorsConnexion))
                {
                    //await validateService.SendAll();
                    // Attention : si participant déjà enregistré : erreur 403
                    try
                    {
                        await validateService.Send(validate);

                        await this.DisplayAlert("OK", "Le billet est validé.", "OK");
                    }
                    catch (WebException ex)
                    {
                        HttpWebResponse objresponse = ex.Response as HttpWebResponse;
                        if (objresponse.StatusCode == HttpStatusCode.Forbidden)
                        {
                            // 403 : le participant a déjà été enregistré aujourd'hui
                            // Message d'erreur
                            await this.DisplayAlert("Attention", "Le billet a déjà été enregistré, le numéro du billet a déjà été scanné auparavant.", "OK");

                            return;
                        }
                        else if (objresponse.StatusCode == HttpStatusCode.NotFound)
                        {
                            // 404 : billet non valide
                            await this.DisplayAlert("Attention", "Le billet n'est pas valide.", "Cancel");

                            return;
                        }
                        else if (objresponse.StatusCode == HttpStatusCode.Unauthorized)
                        {
                            // 401 : impossible d'identifier le numéro du billet
                            await this.DisplayAlert("Attention", "Impossible d'identifier le numéro du billet, veuillez vérifier les informations de celui ci.", "Cancel");

                            return;
                        }
                    }
                    catch (Exception e) {
                        // Erreur
                        await this.DisplayAlert("Attention", e.Message, "Cancel");

                        return;
                    }
                }
                else
                {
                    // Hors connexion : on vérifie juste si l'utilisateur n'est pas déjà présent dans la table SQL

                    // Attention : si pas de prestation : on a le droit d'enregistrer plusieurs fois la présence
                    // Si il y a une prestation, en revanche, on doit vérifier qu'il n'est pas déjà inscrit

                    if (validate.IdPrestation.HasValue &&
                        validateService.IsInscriptionAlreadyRecorded(validate))
                    {
                        // Déjà trouvé : message d'erreur
                        await this.DisplayAlert("Attention", "Le participant a déjà été enregistré.", "OK");

                        return;
                    }
                }
            }
            else
            {
                // Pb à l'insertion des données ??
            }


            return;
        }
示例#2
0
        private async Task BtnValidateClicked(object sender, EventArgs e)
        {
            // On prépare la validation de la présence
            var validateService = new ValidatePresenceService(this.Token);

            // On ajoute la ligne à valider
            var validate = validateService.AddNewPresence(this.idParticipant, this.idPrestation);

            // On déclenche l'envoi au WS (si besoin)
            if (validate != null)
            {
                // On envoie uniquement en cas de connexion
                if (!Global.GetSettingsBool(TypeSettings.IsHorsConnexion))
                {
                    //await validateService.SendAll();
                    // Attention : si participant déjà enregistré : erreur 403
                    try
                    {
                        await validateService.Send(validate);
                    }
                    catch (WebException ex)
                    {
                        HttpWebResponse objresponse = ex.Response as HttpWebResponse;
                        if (objresponse.StatusCode == HttpStatusCode.Forbidden)
                        {
                            // 403 : le participant a déjà été enregistré aujourd'hui
                            // Message d'erreur
                            await this.DisplayAlert("Attention", "Le participant a déjà été enregistré aujourd'hui.", "OK");

                            return;
                        }
                        else if (objresponse.StatusCode == HttpStatusCode.Unauthorized)
                        {
                            // 401 : Votre session a expiré
                            await this.DisplayAlert("Attention", "Votre session a expiré, veuillez vous identifier à nouveau.", "Cancel");

                            return;
                        }
                        else if (objresponse.StatusCode == HttpStatusCode.NotFound)
                        {
                            // 404 : PArticipant pas sur la liste d'invités
                            await this.DisplayAlert("Attention", "Veuillez vérifier que le participant fait partie de la liste d'invités.", "Cancel");

                            return;
                        }
                        else
                        {
                            await this.DisplayAlert("Attention", "Erreur lors de la validation d'un invité en ligne.", "Cancel");

                            return;
                        }
                    }
                    catch (Exception ex2)
                    {
                        await this.DisplayAlert("Attention", "Erreur lors de la validation d'un invité en ligne : " + ex2.Message, "Cancel");

                        return;
                    }
                }
                else
                {
                    // Hors connexion : on vérifie juste si l'utilisateur n'est pas déjà présent dans la table SQL

                    // Attention : si pas de prestation : on a le droit d'enregistrer plusieurs fois la présence
                    // Si il y a une prestation, en revanche, on doit vérifier qu'il n'est pas déjà inscrit

                    if (validate.IdPrestation.HasValue &&
                        validateService.IsInscriptionAlreadyRecorded(validate))
                    {
                        // Déjà trouvé : message d'erreur
                        await this.DisplayAlert("Attention", "Le participant a déjà été enregistré.", "Cancel");


                        return;
                    }
                }

                // On marque dans la base la présence dans la table qui va bien (pour voir graphiquement que la présence a été enregistrée)
                validateService.ValidateSQLOnly(validate);
            } // else Afficher un lessage d'erreur ?

            // On réaffiche la liste des présences

            /*detailPeopleData.RefreshCells(this.idParticipant);
             * listView.ItemsSource = detailPeopleData.InscriptionsCells;
             * listView.ItemTemplate = new DataTemplate(typeof(InscriptionCell));*/

            // OK
            await this.DisplayAlert("OK", "Le participant a été correctement enregistré.", "OK");

            UserDialogs.ShowSpinner();
            // Affichage des données
            await displayData();

            UserDialogs.HideSpinner();
        }