public async Task <PagedList <Cliente> > GetClientes(ClienteQueryFilter filters, ResourceLocation resourceLocation) { var clientes = await _unitOfWork.ClienteRepository.GetAll(); clientes = filters.Dni != null ? clientes = clientes.Where(x => x.Dni == filters.Dni) : clientes; clientes = filters.Nombre != null ? clientes = clientes.Where(x => x.Nombre.ToLower() == filters.Nombre.ToLower()) : clientes; clientes = filters.Apellidos != null ? clientes = clientes.Where(x => x.Apellidos.ToLower() == filters.Apellidos.ToLower()) : clientes; clientes = filters.Email != null ? clientes = clientes.Where(x => x.Email.ToLower().Contains(filters.Email.ToLower())) : clientes; clientes = filters.Telefono != null ? clientes = clientes.Where(x => x.Telefono == filters.Telefono) : clientes; clientes = filters.Direccion != null ? clientes = clientes.Where(x => x.Direccion.ToLower().Contains(filters.Direccion.ToLower())) : clientes; clientes = filters.Nacimiento != null ? clientes = clientes.Where(x => DateTime.Parse(x.Nacimiento).Year == filters.Nacimiento) : clientes; clientes = GetItemsOrdered(clientes, resourceLocation); return(_pagedGenerator.GeneratePagedList(clientes, filters)); }
public async Task <ActionResult <IEnumerable <ClienteDTO> > > Get([FromQuery] ClienteQueryFilter filters) { var location = new ResourceLocation() { Scheme = Request.Scheme, Host = Request.Host.Value, PathBase = Request.PathBase }; var clientes = await _clienteService.GetClientes(filters, location); var clientesDTO = _mapper.Map <IEnumerable <ClienteDTO> >(clientes); var metadata = new MetaData().BuildMeta <Cliente>(clientes, filters, Request.Path.Value, _uriService); var response = new ApiResponse <IEnumerable <ClienteDTO> >(clientesDTO) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); return(Ok(response)); }