Beispiel #1
0
        public JObject Recherche(ObjectifRecherche objectifRecherche, CritereRecherche rechercheCritere)
        {
            JObject ToSendDao = new JObject();
            JObject rechercheObjectif;
            JObject critereObjectif;
            JObject ToReturn;
            JToken  TestTrue       = true;
            JToken  TestEmpty      = "";
            JArray  tabRecherche   = new JArray();
            JObject tabCriterelcn  = new JObject();
            JObject tabCriteretel  = new JObject();
            JObject tabCritereinsc = new JObject();
            JObject tabCriterescn  = new JObject();
            JObject addlicencie;
            JObject addtelephone;
            JObject addinscription;
            JObject addseance;

            try
            {
                //remove diacritics
                rechercheCritere.Nom    = RemoveDiacritics(rechercheCritere.Nom);
                rechercheCritere.Prenom = RemoveDiacritics(rechercheCritere.Prenom);
                rechercheCritere.Ville  = RemoveDiacritics(rechercheCritere.Ville);
                rechercheCritere.Mail   = RemoveDiacritics(rechercheCritere.Mail);
                rechercheCritere.Prenom = RemoveDiacritics(rechercheCritere.Prenom);

                rechercheObjectif = JObject.FromObject(objectifRecherche);
                critereObjectif   = JObject.FromObject(rechercheCritere);
                //parcours recherche et création
                foreach (KeyValuePair <String, JToken> j in rechercheObjectif)
                {
                    if (j.Value.ToString() == TestTrue.ToString())
                    {
                        tabRecherche.Add(j.Key);
                    }
                }

                //parcours critere et remplissage
                foreach (KeyValuePair <String, JToken> j in critereObjectif)
                {
                    if (j.Value.ToString() != "" && j.Value.ToString() != "Peu importe" && j.Value.ToString() != "[]")
                    {
                        switch (j.Key)
                        {
                        case "Nom":
                            tabCriterelcn.Add(j.Key, j.Value);
                            break;

                        case "Prenom":
                            tabCriterelcn.Add(j.Key, j.Value);
                            break;

                        case "Age":
                            tabCriterelcn.Add(j.Key, (DateTime.Now.Year - (int)j.Value).ToString());
                            break;

                        case "CodePostal":
                            tabCriterelcn.Add(j.Key, j.Value);
                            break;

                        case "Ville":
                            tabCriterelcn.Add(j.Key, j.Value);
                            break;

                        case "Mail":
                            tabCriterelcn.Add(j.Key, j.Value);
                            break;

                        case "Telephone":
                            tabCriteretel.Add(j.Key, j.Value);
                            break;

                        case "Paiement":
                            tabCritereinsc.Add(j.Key, j.Value);
                            break;

                        case "Certificat":
                            tabCritereinsc.Add(j.Key, j.Value);
                            break;

                        case "Licence":
                            tabCritereinsc.Add(j.Key, j.Value);
                            break;

                        case "Discipline":
                            tabCriterescn.Add(j.Key, j.Value);
                            break;

                        case "Niveau":
                            //obliger de s'embeter pour éviter de mettre des "é" ou "É" dans base de données
                            JArray jaTemp = new JArray();
                            foreach (JValue jNiveau in (JArray)j.Value)
                            {
                                if (jNiveau.ToString() == "Éveil")
                                {
                                    jaTemp.Add("Eveil");
                                }
                                else if (jNiveau.ToString() == "Pré-poussin")
                                {
                                    jaTemp.Add("Pre-poussin");
                                }
                                else
                                {
                                    jaTemp.Add(jNiveau);
                                }
                            }
                            tabCriterescn.Add(j.Key, jaTemp);
                            jaTemp = null;
                            break;

                        case "Jour":
                            tabCriterescn.Add(j.Key, j.Value);
                            break;

                        case "Annees":
                            tabCriterescn.Add(j.Key, j.Value);
                            break;
                        }
                    }
                }


                //création des champs de critères
                addlicencie = new JObject {
                    new JProperty("licencie", tabCriterelcn)
                };
                addtelephone = new JObject {
                    new JProperty("telephone", tabCriteretel)
                };
                addinscription = new JObject {
                    new JProperty("inscription", tabCritereinsc)
                };
                addseance = new JObject {
                    new JProperty("seance", tabCriterescn)
                };

                ToSendDao = new JObject {
                    new JProperty("Recherche", tabRecherche), new JProperty("Critere", addlicencie, addtelephone, addinscription, addseance)
                };

                ToReturn = _dao.Recherche(ToSendDao);
                return(ToReturn);
            }
            catch (System.Exception e)
            {
                throw new System.Exception("Erreur Metier.cs/Recherche():\r\n" + e.Message, e);
            }
        }
        private void buttonValiderRecherche_Click(object sender, EventArgs e)
        //lancement de la recherche (onglet Recherche)
        {
            //initialisation des entités
            ObjectifRecherche objectif = null;
            CritereRecherche  critere  = null;

            try
            {
                //choix des champs à rechercher/afficher
                _afficherMail = checkBoxMail.Checked;
                objectif      = new ObjectifRecherche(checkBoxAdresse.Checked,
                                                      checkBoxVille.Checked, checkBoxCodePostal.Checked,
                                                      checkBoxAge.Checked, checkBoxTelephone.Checked);

                //SECURITE
                Regex           _regexNomPrenomVille = new Regex("^[-a-zÀ-ž ']*$", RegexOptions.IgnoreCase);
                Regex           _regexAgeCP          = new Regex("^[0-9]*$");
                Regex           _regexMail           = new Regex("^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$", RegexOptions.IgnoreCase);
                Regex           _regexTel            = new Regex("^0[1-9][0-9]{8}$");
                string          _champNom            = textBoxNom.Text.Trim();
                string          _champPrenom         = textBoxPrenom.Text.Replace(" ", string.Empty);
                string          _champAge            = textBoxAge.Text.Replace(" ", string.Empty);
                string          _champVille          = textBoxVille.Text.Trim();
                string          _champCP             = textBoxCP.Text.Replace(" ", string.Empty);
                string          _champMail           = textBoxMail.Text.Replace(" ", string.Empty);
                string          _champTel            = textBoxTelephone.Text.Replace(" ", string.Empty);
                MatchCollection matches;
                matches = _regexNomPrenomVille.Matches(_champNom);
                if (matches.Count != 1)
                {
                    throw new Exception("Le nom n'est pas correct.");
                }
                matches = _regexNomPrenomVille.Matches(_champPrenom);
                if (matches.Count != 1)
                {
                    throw new Exception("Le prénom n'est pas correct.");
                }
                matches = _regexAgeCP.Matches(_champAge);
                if (matches.Count != 1 || matches.Count == 1 && _champAge != string.Empty && int.Parse(_champAge) < 3)
                {
                    throw new Exception("L'âge n'est pas correct.");
                }
                matches = _regexNomPrenomVille.Matches(_champVille);
                if (matches.Count != 1)
                {
                    throw new Exception("La Ville n'est pas correcte.");
                }
                matches = _regexAgeCP.Matches(_champCP);
                if (matches.Count != 1)
                {
                    throw new Exception("Le Code Postal n'est pas correct.");
                }
                matches = _regexMail.Matches(_champMail);
                if (matches.Count != 1 && _champMail != string.Empty)
                {
                    throw new Exception("L'adress e-mail n'est pas correcte.");
                }
                matches = _regexTel.Matches(_champTel);
                if (matches.Count != 1 && _champTel != string.Empty)
                {
                    throw new Exception("Le numéro de téléphone n'est pas correct.");
                }

                //Si il n'y a pas d'erreur, validation des critères de recherche
                critere = new CritereRecherche(_champNom, _champPrenom, _champAge, _champVille,
                                               _champCP, _champMail, _champTel, comboBoxPaiement.SelectedItem.ToString(), comboBoxCertificat.SelectedItem.ToString(),
                                               comboBoxLicence.SelectedItem.ToString(), checkedListBoxDiscipline.CheckedItems, checkedListBoxNiveau.CheckedItems,
                                               checkedListBoxJour.CheckedItems, checkedListBoxDate.CheckedItems);

                //Récupération et affichage des données de résultat
                JObject resultats = _metier.Recherche(objectif, critere);
                popOutResultatsRecherche(resultats);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            finally //libère la mémoire des entités critere et objectif
            {
                if (!(critere is null))
                {
                    critere.Dispose();
                }
                if (!(objectif is null))
                {
                    objectif.Dispose();
                }
            }
        }