Beispiel #1
0
        public ExpedienteBandejaDTO registrarDerivacion(Expediente expediente, string userId)
        {
            Derivacion derivacion = new Derivacion();

            derivacion = expediente.derivaciones.FirstOrDefault();
            derivacion.usuarioreceptor = userId;

            var filter = Builders <Expediente> .Filter.Eq(exp => exp.id, expediente.id);

            var update = Builders <Expediente> .Update.Push("derivaciones", derivacion);

            _expedientes.UpdateOne(filter, update);

            BandejaDocumento bandejaDocumento = new BandejaDocumento();

            bandejaDocumento.idexpediente = expediente.id;
            bandejaDocumento.iddocumento  = expediente.documentos.Last().iddocumento;

            UpdateDefinition <Bandeja> updateBandeja = Builders <Bandeja> .Update.Push("bandejaentrada", bandejaDocumento);

            _bandejas.UpdateOne(band => band.usuario == userId, updateBandeja);

            UpdateDefinition <Bandeja> updateBandejaS = Builders <Bandeja> .Update.Pull("bandejasalida", bandejaDocumento);

            _bandejas.UpdateOne(band => band.usuario == derivacion.usuarioemisor, updateBandejaS);

            UpdateDefinition <Bandeja> updateBandejaE = Builders <Bandeja> .Update.Pull("bandejaentrada", bandejaDocumento);

            _bandejas.UpdateOne(band => band.usuario == derivacion.usuarioemisor, updateBandejaE);

            Proceso proceso = new Proceso();

            proceso.area           = derivacion.areaprocedencia;
            proceso.fechaemision   = DateTime.Now;
            proceso.fecharecepcion = DateTime.Now;
            proceso.idemisor       = derivacion.usuarioemisor;
            proceso.idreceptor     = userId;

            UpdateDefinition <Documento> updateDocumento = Builders <Documento> .Update.Push("historialproceso", proceso);

            _documentos.UpdateOne(doc => doc.id == bandejaDocumento.iddocumento, updateDocumento);

            ExpedienteBandejaDTO ex = new ExpedienteBandejaDTO();

            ex = obtenerExpedienteBandeja(expediente.id);



            return(ex);
        }
Beispiel #2
0
 public async Task SendMessageBandeja(string user, ExpedienteBandejaDTO bandeja)
 {
     await Clients.Group(user).SendAsync("ReceiveMessageBandeja", user, bandeja);
 }
Beispiel #3
0
        public ExpedienteBandejaDTO obtenerExpedienteBandeja(string idexpediente)
        {
            BsonArray embebedpipeline = new BsonArray();
            var       match           = new BsonDocument("$match",
                                                         new BsonDocument("_id",
                                                                          new ObjectId(idexpediente)));

            embebedpipeline.Add(
                new BsonDocument("$match", new BsonDocument(
                                     "$expr", new BsonDocument(
                                         "$eq", new BsonArray {
                "$_id", new BsonDocument(
                    "$toObjectId", "$$iddoc")
            }
                                         ))));

            var lookup = new BsonDocument("$lookup",
                                          new BsonDocument("from", "documentos").
                                          Add("let", new BsonDocument("iddoc", "$documentos.iddocumento")).
                                          Add("pipeline", embebedpipeline).
                                          Add("as", "documentosobj"));


            var group = new BsonDocument("$group",
                                         new BsonDocument
            {
                { "_id", "$_id" },
                { "tipo",
                  new BsonDocument("$first", "$tipo") },
                { "cliente",
                  new BsonDocument("$first", "$cliente") },
                { "documentosobj",
                  new BsonDocument("$push", "$documentosobj") }
            });

            var project = new BsonDocument("$project",
                                           new BsonDocument
            {
                { "_id", 0 },
                { "idexpediente", "$_id" },
                { "tipo", "$tipo" },
                { "cliente", "$cliente" },
                { "documentosobj", "$documentosobj" },
                { "documento",
                  new BsonDocument("$arrayElemAt",
                                   new BsonArray
                    {
                        "$documentosobj",
                        -1
                    }) }
            });


            ExpedienteBandejaDTO listaexpedientesdto = new ExpedienteBandejaDTO();

            listaexpedientesdto = _expedientes.Aggregate()
                                  .AppendStage <Expediente>(match)
                                  .Unwind <Expediente, Expedientedoc>(x => x.documentos)
                                  .AppendStage <Expedientedoc_lookup>(lookup)
                                  .Unwind <Expedientedoc_lookup, Expedientedoc_lookup_ur>(x => x.documentosobj)
                                  .AppendStage <Expedientedoc_group>(group)
                                  .AppendStage <ExpedienteBandejaDTO>(project).SingleOrDefault();

            return(listaexpedientesdto);
        }