示例#1
0
        // List<Emprunt> TrouverEmpruntLecteur

        private void btnListeEmprunts_Click(object sender, EventArgs ea)
        {
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.Default))
                {
                    sw.WriteLine("Groupe;Nom;Prénom;Titre;Auteur;Date Emprunt;Date Retour;Exemplaire");
                    var db         = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
                    var collNotice = db.GetCollection <Notice>("Notice");

                    lecteurBindingSource.EndEdit();
                    Lecteur lecteur = ((List <Lecteur>)lecteurBindingSource.DataSource)[0];
                    foreach (InfoLecteur il in db.GetCollection <InfoLecteur>("InfoLecteur").Find(a => a.lecteurId == lecteur._id).ToList())
                    {
                        foreach (Emprunt emprunt in il.TrouverEmprunt())
                        {
                            List <Notice> tmp = collNotice.Find(new BsonDocument("exemplaires._id", emprunt.IdExemplaire)).ToList();
                            if (tmp != null && tmp.Count > 0)
                            {
                                Exemplaire ex = tmp[0].exemplaires.Find(a => a._id == emprunt.IdExemplaire);
                                sw.WriteLine($"{lecteur.titre};{il.nom};{il.prénom};{tmp[0].titre};{tmp[0].auteur};{emprunt.dateEmprunt.ToString("dd/MM/yyyy")};{emprunt.dateRetourPrévue.ToString("dd/MM/yyyy")};'{ex.codeBarre}");
                            }
                        }
                    }
                }
                System.Diagnostics.Process.Start("explorer.exe", "/select,\"" + saveFileDialog1.FileName + "\"");
            }
        }
示例#2
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();
        }
示例#3
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();
        }
示例#4
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);
        }
示例#5
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;
            }
        }
示例#6
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            lecteurBindingSource.EndEdit();
            infoLecteurBindingSource.EndEdit();
            var     db      = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
            Lecteur lecteur = ((List <Lecteur>)lecteurBindingSource.DataSource)[0];

            lecteur.localisation = Properties.Settings.Default.Localisation;
            var ops = new UpdateOptions {
                IsUpsert = true
            };

            db.GetCollection <Lecteur>("Lecteur").ReplaceOne(x => x._id == lecteur._id, lecteur, ops);
            foreach (InfoLecteur il in (List <InfoLecteur>)infoLecteurBindingSource.DataSource)
            {
                il.localisation = Properties.Settings.Default.Localisation;
                il.lecteurId    = lecteur._id;
                db.GetCollection <InfoLecteur>("InfoLecteur").ReplaceOne(x => x._id == il._id, il, ops);
            }
        }
示例#7
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();
        }
        public static void Importer()
        {
            var lines      = Csv.CsvReader.ReadFromStream(new System.IO.StreamReader(@"I:\Dropbox\Public\Mediathèque2000\Cocteau\biblio.csv", Encoding.UTF8).BaseStream);
            var collNotice = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Notice>("Notice");

            foreach (var line in lines)
            {
                string isbn = "";
                try
                {
                    isbn = line["ISBN"];
                }
                catch
                {
                    try
                    {
                        isbn = line["ISSN"];
                    }
                    catch
                    {
                    }
                }

                Notice notice = new Notice()
                {
                    titre       = line["Titre"],
                    auteur      = line["Auteur"],
                    éditeur     = line["Editeur"],
                    année       = line["Annee d'edition"],
                    dateAchat   = line["Date d'achat"],
                    collection  = line["Collection"],
                    isbn        = isbn,
                    @public     = line["Public"],
                    exemplaires = new List <Exemplaire>()
                    {
                        new Exemplaire()
                        {
                            _id          = MongoDB.Bson.ObjectId.GenerateNewId(),
                            localisation = Properties.Settings.Default.Localisation,
                            codeBarre    = isbn
                        }
                    }
                };
                collNotice.InsertOne(notice);
            }

            lines = Csv.CsvReader.ReadFromStream(new System.IO.StreamReader(@"I:\Dropbox\Public\Mediathèque2000\Cocteau\adhérents.csv", Encoding.UTF8).BaseStream);
            var db = new MongoDB.Driver.MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio");
            Dictionary <string, List <InfoLecteur> > tmp      = new Dictionary <string, List <InfoLecteur> >();
            Dictionary <string, Lecteur>             lecteurs = new Dictionary <string, Lecteur>();

            foreach (var line in lines)
            {
                string Codefamille = line["Codefamille"];
                if (Codefamille.StartsWith("Calmette"))
                {
                    if (!lecteurs.ContainsKey(Codefamille))
                    {
                        lecteurs[Codefamille] = new Lecteur()
                        {
                            titre         = line["Codefamille"],
                            adresse       = line["No"] + " " + line["Rue"],
                            codePostal    = line["Code"],
                            ville         = line["Ville"],
                            téléphone     = line["Tel Pers"],
                            mail          = line["Email"],
                            débutAdhésion = DateTime.Now,
                            finAdhésion   = DateTime.Now.AddYears(1),
                            localisation  = Properties.Settings.Default.Localisation
                        }
                    }
                    ;
                    if (!tmp.ContainsKey(Codefamille))
                    {
                        tmp[Codefamille] = new List <InfoLecteur>();
                    }
                    tmp[Codefamille].Add(
                        new InfoLecteur()
                    {
                        nom          = line["Nom"],
                        prénom       = line["Prenom"],
                        localisation = Properties.Settings.Default.Localisation
                    }
                        );
                }
                else
                {
                    Lecteur lecteur = new Lecteur()
                    {
                        titre         = line["Codefamille"],
                        adresse       = line["No"] + " " + line["Rue"],
                        codePostal    = line["Code"],
                        ville         = line["Ville"],
                        téléphone     = line["Tel Pers"],
                        mail          = line["Email"],
                        débutAdhésion = DateTime.Now,
                        finAdhésion   = DateTime.Now.AddYears(1),
                        localisation  = Properties.Settings.Default.Localisation
                    };
                    db.GetCollection <Lecteur>("Lecteur").InsertOne(lecteur);
                    InfoLecteur infoLecteur = new InfoLecteur()
                    {
                        lecteurId    = lecteur._id,
                        nom          = line["Nom"],
                        prénom       = line["Prenom"],
                        localisation = Properties.Settings.Default.Localisation
                    };
                    db.GetCollection <InfoLecteur>("InfoLecteur").InsertOne(infoLecteur);
                }
            }

            foreach (var key in lecteurs)
            {
                db.GetCollection <Lecteur>("Lecteur").InsertOne(key.Value);
                foreach (InfoLecteur il in tmp[key.Key])
                {
                    il.lecteurId = key.Value._id;
                    db.GetCollection <InfoLecteur>("InfoLecteur").InsertOne(il);
                }
            }
        }
    }
示例#9
0
        private void btnCirculation_Click(object sender, EventArgs e)
        {
            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");

            // Chercher lecteur ou exemplaire emprunté
            if (txtSearchCirculation.Text.All(char.IsDigit))
            {
                List <Notice> tmp = collNotice.Find(new BsonDocument("exemplaires.codeBarre", txtSearchCirculation.Text)).ToList();
                if (tmp != null)
                {
                    if (tmp.Count == 1)
                    {
                        Exemplaire exemplaire = tmp[0].exemplaires.Find(a => a.codeBarre == txtSearchCirculation.Text);
                        if (exemplaire != null)
                        {
                            // Retrouver le lecteur concerné
                            List <Emprunt> tmp2 = collEmprunt.Find(
                                Builders <Emprunt> .Filter.And(
                                    Builders <Emprunt> .Filter.Eq(a => a.IdExemplaire, exemplaire._id),
                                    Builders <Emprunt> .Filter.Eq(a => a.etat, 1))
                                ).ToList();
                            if (tmp2 != null && tmp2.Count > 0)
                            {
                                AffichageLecteur(Lecteur.TrouverLecteurParId(tmp2[0].idLecteur));
                            }
                        }
                        else
                        {
                            MessageBox.Show("Erreur interne 1");
                        }
                    }
                    else
                    {
                        MessageBox.Show("Il existe plusieurs exemplaires ce qui est anormal");
                    }
                }
                else
                {
                    MessageBox.Show("Cet exemplaire n'existe pas");
                }
            }
            else
            {
                // Cherche le lecteur
                List <LecteurResult> lr = Lecteur.TrouverLecteursParSearch(txtSearchCirculation.Text);
                if (lr.Count > 0)
                {
                    if (lr.Count == 1)
                    {
                        AffichageLecteur(lr[0]);
                    }
                    else
                    {
                        ctrlChoixLecteur choix = new ctrlChoixLecteur()
                        {
                            Dock = DockStyle.Fill
                        };
                        choix.Init(lr);
                        choix.ChoixLecteurEvent += Choix_ChoixLecteurEvent;
                        pnlCirculation.Controls.Clear();
                        pnlCirculation.Controls.Add(choix);
                    }
                }
                else
                {
                    pnlCirculation.Controls.Clear();
                    MessageBox.Show("Pas de lecteur à ce nom");
                }
            }
            txtSearchCirculation.SelectAll();
        }