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); }
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); }