Exemple #1
0
        public PreguntasActualizar()
        {
            var conventions = new ConventionPack {
                new IgnoreExtraElementsConvention(true)
            };

            ConventionRegistry.Register("IgnoreExtraElements", conventions, _ => true);

            Url = new MongoUrl(url);
            Db  = new MongoClient(Url).GetServer().GetDatabase(Url.DatabaseName);
            var cl        = Db.GetCollection <Pregunta> ("pregunta");
            var preguntas = cl.FindAll().ToList();
            var tabla     = TablaNormas.GetData();

            BulkWriteOperation bw = cl.InitializeOrderedBulkOperation();

            tabla.ForEach(r => {
                var item = preguntas.FirstOrDefault(p => p.Numeral == r.Numeral);
                if (item != default(Pregunta))
                {
                    bw.Find(Query <Pregunta> .Where(q => q.Numeral == r.Numeral))
                    .Upsert().UpdateOne(Update <Pregunta>
                                        .Set(f => f.Decreto, r.Decreto).Set(f => f.OHSAS, r.OHSAS).Set(f => f.RUC, r.RUC));
                }
                else
                {
                    Console.WriteLine("NO encontrado :'{0}'", r.Numeral);
                }
            });

            bw.Execute();
        }
 public void runSampleUpdates()
 {
     using (_ms.RequestStart(_mdb)) {
         try {
             MongoCollection    mc  = _mdb.GetCollection("csharp");
             BulkWriteOperation bwo = mc.InitializeOrderedBulkOperation();
             foreach (var doc in getAllDocuments("csharp"))
             {
                 BulkWriteRequestBuilder bwrb = bwo.Find(new QueryDocument {
                     { "counter", doc.GetValue("counter").AsInt32 }
                 });
                 bwrb.Update(new UpdateDocument {
                     { "$set", new UpdateDocument {
                           { "counter", 1 }
                       } }
                 });
             }
             BulkWriteResult bwr = bwo.Execute();
             Console.WriteLine("Completed BulkWriteOperations [updates: " + bwr.ModifiedCount + "]");
             displayCollection("csharp");
         } catch (Exception ex) {
             Console.WriteLine("Caught Exception while BulkWriteOperation for Update: " + ex.StackTrace);
         }
     }
 }
 public void runSampleDeletes()
 {
     using (_ms.RequestStart(_mdb)) {
         try {
             IEnumerable <string>    collNames = _mdb.GetCollectionNames();
             MongoCollection         mc        = _mdb.GetCollection("csharp");
             BulkWriteOperation      bwo       = mc.InitializeOrderedBulkOperation();
             BulkWriteRequestBuilder bwrb      = bwo.Find(new QueryDocument {
             });
             bwrb.Remove();
             BulkWriteResult bwr = bwo.Execute();
             Console.WriteLine("Completed BulkWriteOperations [deletes: " + bwr.DeletedCount + "]");
             displayCollection("csharp");
         } catch (Exception ex) {
             Console.WriteLine("Caught Exception while BulkWriteOperation for Delete: " + ex.StackTrace);
         }
     }
 }
Exemple #4
0
        public BulkResult <Descarga> UpdateCuestionario(UpdateCuestionario request)
        {
            var descarga = Single <Descarga> (q => q.Token == request.Data.Descarga.Token &&
                                              q.IdDiagnostico == request.Data.Descarga.IdDiagnostico
                                              );

            if (descarga.Id.IsNullOrEmpty())
            {
                throw new Exception("Token token:'{0}' No encontrado".Fmt(request.Data.Descarga.Token));
            }

            if (descarga.Estado == "green")
            {
                throw new Exception("Cuestionario asociado al Token token:'{0}' ya esta actualizado"
                                    .Fmt(request.Data.Descarga.Token));
            }

            if (descarga.Estado == "red")
            {
                descarga.Estado = "yellow";
                Put(descarga);
            }

            var bwr = new BulkWrite();

            if (request.Data.Respuestas.Count > 0)
            {
                var cl = GetCollection <Respuesta> ();
                BulkWriteOperation bw = cl.InitializeOrderedBulkOperation();
                request.Data.Respuestas.ForEach(r => {
                    if (r.Respuestas.Count > 0)
                    {
                        r.Valor = (short?)(r.Respuestas.Exists(v => v == false)?0:1);
                    }
                    bw.Find(Query <Respuesta> .Where(q => q.IdDiagnostico == descarga.IdDiagnostico && q.IdPregunta == r.IdPregunta))
                    .Upsert().UpdateOne(Update <Respuesta>
                                        .Set(f => f.Valor, r.Valor).Set(f => f.NoAplicaChecked, r.NoAplicaChecked).Set(f => f.Respuestas, r.Respuestas));
                });
                var wc = bw.Execute();
                bwr.PopulateWith(wc);
                bwr.UpsertsCount = wc.Upserts.Count;
            }

            if (request.Data.RespuestasGuias.Count > 0)
            {
                var gIds = request.Data.RespuestasGuias.ConvertAll(e => e.IdGuia);

                var guias = GetCollection <Guia>().Find(Query <Guia> .In((q) => q.Id, gIds));

                var cl2 = GetCollection <RespuestaGuia> ();
                BulkWriteOperation bw2 = cl2.InitializeOrderedBulkOperation();
                request.Data.RespuestasGuias.ForEach(r => {
                    var guia = guias.FirstOrDefault(g => g.Id == r.IdGuia);
                    bw2.Find(Query <RespuestaGuia>
                             .Where(q => q.IdDiagnostico == descarga.IdDiagnostico && q.IdGuia == r.IdGuia))
                    .Upsert().UpdateOne(Update <RespuestaGuia>
                                        .Set(f => f.Valor, r.Valor)
                                        .Set(f => f.NoAplicaChecked, r.NoAplicaChecked)
                                        .Set(f => f.Tipo, guia.Tipo));
                });

                var wc2 = bw2.Execute();
                bwr.DeleteCount   += wc2.DeletedCount;
                bwr.InsertedCount += wc2.InsertedCount;
                bwr.MatchedCount  += wc2.MatchedCount;
                bwr.UpsertsCount  += wc2.Upserts.Count;
            }
            if ((request.Data.Respuestas.Count + request.Data.RespuestasGuias.Count) > 0 &&
                ((bwr.UpsertsCount + bwr.MatchedCount) ==
                 (request.Data.Respuestas.Count + request.Data.RespuestasGuias.Count)))
            {
                descarga.Estado = "green";
                Put(descarga);
                GetCollection <Diagnostico> ().FindAndModify(new FindAndModifyArgs {
                    Query  = Query <Diagnostico> .EQ(x => x.Id, descarga.IdDiagnostico),
                    Update = Update <Diagnostico> .Inc(x => x.Revision, 1).Set(x => x.FechaRevision, DateTime.UtcNow)
                });
            }

            return(CreateResult(descarga, bwr));
        }