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(); }
private void IntegrerEmprunt(Notice notice) { if (notice.indexes == null) { notice.indexes = new BsonDocument(); } if (notice.indexes.Contains("ajouterLecteur")) { Emprunt emprunt = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <Emprunt>(notice.indexes["ajouterLecteur"].AsBsonDocument); InfoLecteur lecteur = new MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <InfoLecteur>("InfoLecteur").Find(_ => _._id == emprunt.idLecteur).FirstOrDefault(); var collEmprunt = new MongoClient(Properties.Settings.Default.MongoDB).GetDatabase("wfBiblio").GetCollection <Emprunt>("Emprunt"); if (notice.exemplaires != null && notice.exemplaires.Count > 0) { emprunt.IdExemplaire = notice.exemplaires.FirstOrDefault()._id; collEmprunt.InsertOne(emprunt); AddLog($"Ajout de l'emprunt pour le lecteur {lecteur.nom} {lecteur.prénom} {notice.isbn} => {notice.titre} - {notice.auteur}"); } else { AddLog($"Pas d'exemplaires, impossible d'enregistrer l'emprunt pour le lecteur {lecteur.nom} {lecteur.prénom} {notice.isbn} => {notice.titre} - {notice.auteur}"); } } }
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(); }