Exemple #1
0
        public static List <LecteurResult> TrouverLecteursParGroupe(InfoLecteur ilParent)
        {
            List <LecteurResult> result = new List <LecteurResult>();
            var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");

            foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a.lecteurId == ilParent.lecteurId).ToList())
            {
                if (!il.deleted)
                {
                    LecteurResult lr = new LecteurResult()
                    {
                        infoLecteur = il,
                        lecteur     = db.GetCollection <Lecteur>("Lecteur").Find(a => a._id == il.lecteurId).FirstOrDefault()
                    };
                    result.Add(lr);
                }
            }

            result.Sort((a, b) => {
                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);
        }
Exemple #2
0
 public void Init(LecteurResult lecteur)
 {
     m_lecteur      = lecteur;
     llGroupe.Text  = lecteur.lecteur.titre;
     lblNom.Text    = lecteur.infoLecteur.nom;
     lblPrenom.Text = lecteur.infoLecteur.prénom;
     FillPrêts();
     timer1.Start();
 }
Exemple #3
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);
        }
Exemple #4
0
        public void Init(ObjectId lecteurId)
        {
            m_lecteurId = lecteurId;
            LecteurResult lr = Lecteur.TrouverLecteurParId(lecteurId);

            lblNom.Text    = lr.infoLecteur.nom;
            lblPrenom.Text = lr.infoLecteur.prénom;
            lblTitre.Text  = lr.lecteur.titre;
            FillPrêts();
            timer1.Start();
        }
Exemple #5
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            // Ajouter ou supprimer un exemplaire
            var           collNotice  = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Notice>("Notice");
            var           collEmprunt = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Emprunt>("Emprunt");
            List <Notice> tmp         = collNotice.Find(new BsonDocument("exemplaires.codeBarre", txtNewExplaire.Text)).ToList();

            if (tmp != null && tmp.Count == 1)
            {
                // Cet exemplaire est-il disponible?
                List <Emprunt> emprunts = collEmprunt.Find(
                    Builders <Emprunt> .Filter.And(
                        Builders <Emprunt> .Filter.Eq(a => a.IdExemplaire, tmp[0].exemplaires.Find(a => a.codeBarre == txtNewExplaire.Text)._id),
                        Builders <Emprunt> .Filter.Eq(a => a.etat, 1)
                        )
                    ).ToList();
                if (emprunts == null || emprunts.Count == 0)
                {
                    // L'ajouter pour ce lecteur
                    Emprunt emprunt = new Emprunt()
                    {
                        idLecteur        = m_lecteurId,
                        IdExemplaire     = tmp[0].exemplaires.Find(a => a.codeBarre == txtNewExplaire.Text)._id,
                        etat             = 1,
                        dateEmprunt      = DateTime.Now,
                        dateRetourPrévue = DateTime.Now.AddDays(21)
                    };
                    collEmprunt.InsertOne(emprunt);
                    FillPrêts();
                }
                else if (emprunts.Count > 0)
                {
                    // Est-ce le lecteur en cours
                    if (emprunts[0].idLecteur == m_lecteurId)
                    {
                        // Le supprimer de la liste des emprunts de ce lecteur
                        collEmprunt.UpdateOne(Builders <Emprunt> .Filter.Eq(a => a._id, emprunts[0]._id),
                                              Builders <Emprunt> .Update.Set(a => a.etat, 2).CurrentDate(a => a.dateRetourEffective));
                        FillPrêts();
                    }
                    else
                    {
                        // Retrouver le lecteur
                        LecteurResult lr = Lecteur.TrouverLecteurParId(emprunts[0].idLecteur);
                        if (lr != null)
                        {
                            MessageBox.Show($"Ce document est déjà emprunté par {lr.infoLecteur.nom} {lr.infoLecteur.prénom} ({lr.lecteur.titre})");
                        }
                    }
                }
            }
            txtNewExplaire.SelectAll();
        }
Exemple #6
0
        private void Circ_AfficherGroupeEvent(LecteurResult lr)
        {
            // Retrouver les membres du groupe
            ctrlChoixLecteur choix = new ctrlChoixLecteur()
            {
                Dock = DockStyle.Fill
            };

            choix.Init(Lecteur.TrouverLecteursParGroupe(lr.infoLecteur));
            choix.ChoixLecteurEvent += Choix_ChoixLecteurEvent;
            pnlCirculation.Controls.Clear();
            pnlCirculation.Controls.Add(choix);
        }
Exemple #7
0
        private void AffichageLecteur(LecteurResult lecteur)
        {
            ctrlCirculation circ = new ctrlCirculation()
            {
                Dock = DockStyle.Fill
            };

            circ.Init(lecteur);
            circ.AfficherGroupeEvent += Circ_AfficherGroupeEvent;
            circ.RafraichirRecherche  = () => { btnCirculation_Click(null, null); };
            pnlCirculation.Controls.Clear();
            pnlCirculation.Controls.Add(circ);
        }
Exemple #8
0
        public static LecteurResult TrouverLecteurParId(ObjectId id)
        {
            var           db     = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
            LecteurResult result = new LecteurResult()
            {
                infoLecteur = db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a._id == id /*&& a.deleted == false*/).FirstOrDefault()
            };

            if (result.infoLecteur != null)
            {
                result.lecteur = db.GetCollection <Lecteur>("Lecteur").Find(a => a._id == result.infoLecteur.lecteurId /*&& a.deleted == false*/).FirstOrDefault();
            }
            return(result);
        }
Exemple #9
0
        public static LecteurResult TrouverLecteurParId(ObjectId id)
        {
            var           db     = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
            LecteurResult result = new LecteurResult()
            {
                infoLecteur = db.GetCollection <InfoLecteur>("InfoLecteur").Find(Builders <InfoLecteur> .Filter.Eq(a => a._id, id)).FirstOrDefault()
            };

            if (result.infoLecteur != null)
            {
                result.lecteur = db.GetCollection <Lecteur>("Lecteur").Find(Builders <Lecteur> .Filter.Eq(a => a._id, result.infoLecteur.lecteurId)).FirstOrDefault();
            }
            return(result);
        }
Exemple #10
0
        public void Init(ObjectId lecteur)
        {
            LecteurResult lr = Lecteur.TrouverLecteurParId(lecteur);

            if (lr != null)
            {
                var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
                infoLecteurBindingSource.DataSource = db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a.lecteurId == lr.lecteur._id).ToList();
                lecteurBindingSource.DataSource     = new List <Lecteur>()
                {
                    lr.lecteur
                };
                lecteurBindingSource.Position = 0;
            }
        }
Exemple #11
0
        public void Init(LecteurResult lr)
        {
            m_lr = lr;
            RefreshLecteursList();

            lecteurBindingSource.DataSource = new List <Lecteur>()
            {
                lr.lecteur
            };
            lecteurBindingSource.Position = 0;
            var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");

            titreComboBox.DataSource      = db.GetCollection <Lecteur>("Lecteur").Distinct <string>("titre", "{}").ToList();
            villeComboBox.DataSource      = db.GetCollection <Lecteur>("Lecteur").Distinct <string>("ville", "{}").ToList();
            codePostalComboBox.DataSource = db.GetCollection <Lecteur>("Lecteur").Distinct <string>("codePostal", "{}").ToList();
        }
Exemple #12
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            // Ajouter ou supprimer un exemplaire
            var           collNotice  = new MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Notice>("Notice");
            var           collEmprunt = new MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Emprunt>("Emprunt");
            List <Notice> tmp         = collNotice.Find(new BsonDocument("exemplaires.codeBarre", txtNewExplaire.Text)).ToList();

            if (tmp != null && tmp.Count == 1)
            {
                // Cet exemplaire est-il disponible?
                List <Emprunt> emprunts = collEmprunt.Find(
                    Builders <Emprunt> .Filter.And(
                        Builders <Emprunt> .Filter.Eq(a => a.IdExemplaire, tmp[0].exemplaires.Find(a => a.codeBarre == txtNewExplaire.Text)._id),
                        Builders <Emprunt> .Filter.Eq(a => a.etat, 1)
                        )
                    ).ToList();
                if (emprunts == null || emprunts.Count == 0)
                {
                    // L'ajouter pour ce lecteur
                    Emprunt emprunt = new Emprunt()
                    {
                        idLecteur        = m_lecteur.infoLecteur._id,
                        IdExemplaire     = tmp[0].exemplaires.Find(a => a.codeBarre == txtNewExplaire.Text)._id,
                        etat             = 1,
                        dateEmprunt      = DateTime.Now,
                        dateRetourPrévue = DateTime.Now.AddDays(21)
                    };
                    collEmprunt.InsertOne(emprunt);
                    FillPrêts();
                }
                else if (emprunts.Count > 0)
                {
                    // Est-ce le lecteur en cours
                    if (emprunts[0].idLecteur == m_lecteur.infoLecteur._id)
                    {
                        // Le supprimer de la liste des emprunts de ce lecteur
                        collEmprunt.UpdateOne(Builders <Emprunt> .Filter.Eq(a => a._id, emprunts[0]._id),
                                              Builders <Emprunt> .Update.Set(a => a.etat, 2).CurrentDate(a => a.dateRetourEffective));
                        FillPrêts();
                    }
                    else
                    {
                        // Retrouver le lecteur
                        LecteurResult lr = Lecteur.TrouverLecteurParId(emprunts[0].idLecteur);
                        if (lr != null)
                        {
                            MessageBox.Show($"Ce document est déjà emprunté par {lr.infoLecteur.nom} {lr.infoLecteur.prénom} ({lr.lecteur.titre})");
                        }
                    }
                }
            }
            else if (tmp.Count != null && tmp.Count > 1)
            {
                MessageBox.Show($"Ce code exemplaire existe {tmp.Count} fois.\r\nCorrigez la base");
            }
            else
            {
                if (MessageBox.Show("Ce code exemplaire n'existe pas.\r\nVoulez-vous quand même le prêter et l'ajouter à l'inventaire plus tard ?", "Erreur", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Emprunt emprunt = new Emprunt()
                    {
                        idLecteur = m_lecteur.infoLecteur._id,
                        //IdExemplaire = tmp[0].exemplaires.Find(a => a.codeBarre == txtNewExplaire.Text)._id,
                        etat             = 1,
                        dateEmprunt      = DateTime.Now,
                        dateRetourPrévue = DateTime.Now.AddDays(21)
                    };
                    Notice notice = new Notice()
                    {
                        isbn = txtNewExplaire.Text, indexes = new BsonDocument("ajouterLecteur", emprunt.ToBsonDocument()).Add("Status", ctrlAttente.A_TRAITER)
                    };
                    new MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Notice>("NoticeAttente").InsertOne(notice);
                }
            }
            txtNewExplaire.SelectAll();
        }
Exemple #13
0
 private void Choix_ChoixLecteurEvent(LecteurResult lecteur)
 {
     AffichageLecteur(lecteur);
 }