public async Task <IActionResult> ObtenerUsuarios([FromQuery] ParametrosUsuarios parametrosUsuarios) { var idUsuarioActual = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var usuarioActual = await _repo.ObtenerUsuario(idUsuarioActual); parametrosUsuarios.Id = idUsuarioActual; if (string.IsNullOrEmpty(parametrosUsuarios.Genero)) { parametrosUsuarios.Genero = usuarioActual.Genero == "Masculino" ? "Femenino" : "Masculino"; } var usuarios = await _repo.ObtenerUsuarios(parametrosUsuarios); var usariosReturn = _mapper.Map <IEnumerable <UsuarioLista> >(usuarios); Response.AgregarPaginacion(usuarios.PaginaActual, usuarios.TamanoPagina, usuarios.Total, usuarios.TotalPaginas); return(Ok(usariosReturn)); }
public async Task <ListaPagina <Usuario> > ObtenerUsuarios(ParametrosUsuarios parametosUsuario) { var usuarios = _context.Usuarios.OrderByDescending(u => u.UltimaConexion).AsQueryable(); usuarios = usuarios.Where(u => u.Id != parametosUsuario.Id); usuarios = usuarios.Where(u => u.Genero == parametosUsuario.Genero); if (parametosUsuario.Likers) { var usuarioLikers = await obtenerUsuarioLikes(parametosUsuario.Id, parametosUsuario.Likers); usuarios = usuarios.Where(u => usuarioLikers.Contains(u.Id)); } if (parametosUsuario.Likees) { var usuarioLikees = await obtenerUsuarioLikes(parametosUsuario.Id, parametosUsuario.Likers); usuarios = usuarios.Where(u => usuarioLikees.Contains(u.Id)); } if (parametosUsuario.MinEdad != 18 || parametosUsuario.MaxEdad != 99) { var minDob = DateTime.Today.AddYears(-parametosUsuario.MaxEdad - 1); var maxDob = DateTime.Today.AddYears(-parametosUsuario.MinEdad); usuarios = usuarios.Where(u => u.FechaNacimiento >= minDob && u.FechaNacimiento <= maxDob); } if (!string.IsNullOrEmpty(parametosUsuario.ordenarPor)) { switch (parametosUsuario.ordenarPor) { case "Creado": usuarios = usuarios.OrderByDescending(u => u.Creado); break; default: usuarios = usuarios.OrderByDescending(u => u.UltimaConexion); break; } } return(await ListaPagina <Usuario> .CrearAsync(usuarios, parametosUsuario.NumeroPaginas, parametosUsuario.TamanoPagina)); }