Esempio n. 1
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();
        }
Esempio n. 2
0
        private void P_RetourEvent(ctrlPret ctrl)
        {
            // Notice notice = ctrl.Tag as Notice;
            var      collNotice   = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Notice>("Notice");
            ObjectId exemplaireId = (ObjectId)ctrl.Tag;

            if (exemplaireId == ObjectId.Empty) // Supprimer directement
            {
                var            collEmprunt = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Emprunt>("Emprunt");
                List <Emprunt> emprunts    = collEmprunt.Find(
                    Builders <Emprunt> .Filter.And(
                        Builders <Emprunt> .Filter.Eq(a => a.idLecteur, m_lecteur.infoLecteur._id),
                        Builders <Emprunt> .Filter.Eq(a => a.etat, 1)
                        )
                    ).ToList();
                foreach (Emprunt e in emprunts)
                {
                    List <Notice> tmp = collNotice.Find(new BsonDocument("exemplaires._id", e.IdExemplaire)).ToList();
                    if (tmp == null || tmp.Count == 0)
                    {
                        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
            {
                List <Notice> tmp = collNotice.Find(new BsonDocument("exemplaires._id", exemplaireId)).ToList();
                if (tmp != null && tmp.Count > 0)
                {
                    txtNewExplaire.Text = tmp[0].exemplaires.Find(a => a._id == exemplaireId).codeBarre;
                    btnOK_Click(null, null);
                }
            }
        }