Beispiel #1
0
        public static List <LecteurResult> TrouverLecteursParSearch(string search)
        {
            List <LecteurResult> result = new List <LecteurResult>();
            var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
            var s  = new MongoDB.Bson.BsonRegularExpression(search, "/i");

            foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find(
                         Builders <InfoLecteur> .Filter.And(
                             Builders <InfoLecteur> .Filter.Eq(a => a.localisation, Properties.Settings.Default.Localisation),
                             Builders <InfoLecteur> .Filter.Eq(a => a.deleted, false),
                             Builders <InfoLecteur> .Filter.Or(
                                 Builders <InfoLecteur> .Filter.Regex(a => a.nom, s),
                                 Builders <InfoLecteur> .Filter.Regex(a => a.prénom, s),
                                 Builders <InfoLecteur> .Filter.Regex(a => a.commentaires, s)
                                 )
                             )
                         ).ToList())
            {
                LecteurResult lr = new LecteurResult()
                {
                    infoLecteur = il,
                    lecteur     = db.GetCollection <Lecteur>("Lecteur").Find(a => a._id == il.lecteurId).FirstOrDefault()
                };
                result.Add(lr);
            }

            // Rechercher par titre
            foreach (Lecteur lecteur in db.GetCollection <Lecteur>("Lecteur").Find(Builders <Lecteur> .Filter.Regex(a => a.titre, s)).ToList())
            {
                foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a.lecteurId == lecteur._id).ToList())
                {
                    if (il.deleted == false && result.Find(a => a.infoLecteur._id == il._id) == null)
                    {
                        result.Add(new LecteurResult()
                        {
                            infoLecteur = il, lecteur = lecteur
                        });
                    }
                }
            }

            result.Sort((a, b) => {
                a.infoLecteur.nom = a.infoLecteur.nom ?? "";
                b.infoLecteur.nom = b.infoLecteur.nom ?? "";
                if (a.infoLecteur.nom.ToLower() != b.infoLecteur.nom.ToLower())
                {
                    return(a.infoLecteur.nom.ToLower().CompareTo(b.infoLecteur.nom.ToLower()));
                }
                else
                {
                    return(a.infoLecteur.prénom.ToLower().CompareTo(b.infoLecteur.prénom.ToLower()));
                }
            });

            return(result);
        }
Beispiel #2
0
 public static dynamic ToDynamic(this BsonRegularExpression bsonRegularExpression) => bsonRegularExpression.ToRegex();