public async Task <List <EscrituraPublicaRDTO> > autocompleteFilterCompleto([FromQuery] ParametrosBusquedaEscrituraPublica parametrosbusqueda)
        {
            List <EscrituraPublicaRDTO> listaescriturasPublicasFiltrado = await escriturasPublicasService.filtradoEspecial(parametrosbusqueda);

            await HttpContext.InsertPagedParameterOnResponse(listaescriturasPublicasFiltrado.AsQueryable(), parametrosbusqueda.cantidadregistros);

            List <EscrituraPublicaRDTO> listaescriturasPublicasFiltradoPaginado =
                listaescriturasPublicasFiltrado.AsQueryable().Paginate(parametrosbusqueda.Paginacion).ToList();

            return(listaescriturasPublicasFiltradoPaginado);
        }
예제 #2
0
        public async Task <List <EscrituraPublicaRDTO> > filtradoEspecial(ParametrosBusquedaEscrituraPublica parametrosbusqueda)
        {
            BsonArray subpipeline = new BsonArray();

            subpipeline.Add(
                new BsonDocument("$match", new BsonDocument(
                                     "$expr", new BsonDocument(
                                         "$eq", new BsonArray {
                "$_id", new BsonDocument("$toObjectId", "$$notariox")
            }
                                         )
                                     ))
                );
            var lookup = new BsonDocument("$lookup",
                                          new BsonDocument("from", "notarios")
                                          .Add("let", new BsonDocument("notariox", "$idnotario"))
                                          .Add("pipeline", subpipeline)
                                          .Add("as", "notario"));

            //Creación del BsonDocument del filtros de busqueda
            var filtroDocumento = new BsonDocument();

            if (parametrosbusqueda.direccionoficionotarial != null & parametrosbusqueda.direccionoficionotarial != "")
            {
                filtroDocumento.Add("direccionoficio",
                                    new BsonDocument("$regex", parametrosbusqueda.direccionoficionotarial + ".*")
                                    .Add("$options", "i"));
            }
            if (parametrosbusqueda.nombrenotario != null & parametrosbusqueda.nombrenotario != null)
            {
                filtroDocumento.Add("notario",
                                    new BsonDocument("$regex", parametrosbusqueda.nombrenotario + ".*")
                                    .Add("$options", "i"));
            }
            if (parametrosbusqueda.actojuridico != null & parametrosbusqueda.actojuridico != "")
            {
                filtroDocumento.Add("actosjuridicos.titulo",
                                    new BsonDocument("$regex", parametrosbusqueda.actojuridico + ".*")
                                    .Add("$options", "i"));
            }
            if (parametrosbusqueda.nombreotorgantes != null)
            {
                if (parametrosbusqueda.nombreotorgantes.Count != 0)
                {
                    var listaOtorgantesRegex = parametrosbusqueda.nombreotorgantes.Select(o => new Regex(o + ".*")).ToList();
                    filtroDocumento.Add("actosjuridicos.otorgantes.nombre",
                                        new BsonDocument("$in", new BsonArray().AddRange(listaOtorgantesRegex)));
                }
            }


            List <EscrituraPublicaRDTO> escrituraPublicas = new List <EscrituraPublicaRDTO>();

            escrituraPublicas = await _escriturapublicas.Aggregate()
                                .AppendStage <EscrituraPublicasDTO>(lookup)
                                .Unwind <EscrituraPublicasDTO, EscrituraPublicaDTO>(p => p.notario)
                                .Project(ep => new EscrituraPublicaRDTO
            {
                id = ep.id,
                direccionoficio       = ep.direccionoficio,
                idnotario             = ep.idnotario,
                actosjuridicos        = ep.actosjuridicos,
                fechaescriturapublica = ep.fechaescriturapublica,
                url     = ep.url,
                estado  = ep.estado,
                notario = ep.notario.nombre + " " + ep.notario.apellido,
                titulo  = ep.titulo
            })
                                .Match(filtroDocumento)
                                .ToListAsync();

            return(escrituraPublicas);
        }