public object ListarUsuariosMaisParecidosComUsuarioLogado(ListarUsuariosMaisParecidosComUsuarioLogadoQueryFilter filter, int usuarioLogadoId)
        {
            DateTime seteDiasAtras = DateTime.Now.AddDays(-7);

            ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel usuarioQueryModel = null;
            Usuario usuarioAlias = null;
            Arquivo fotoAlias    = null;
            Opiniao opiniaoAlias = null;

            var noticias = _session.QueryOver <Opiniao>()
                           .Where(x => x.Usuario.Id == usuarioLogadoId)
                           .And(x => x.Tipo == TipoOpiniao.Concordo)
                           .Select(x => x.Noticia.Id).List <int>();

            var query = _session.QueryOver <Opiniao>(() => opiniaoAlias)
                        .JoinAlias(() => opiniaoAlias.Usuario, () => usuarioAlias)
                        .Left.JoinAlias(() => usuarioAlias.Foto, () => fotoAlias)
                        .Where(x => x.Tipo == TipoOpiniao.Concordo)
                        .And(x => usuarioAlias.Id != usuarioLogadoId)
                        .AndRestrictionOn(x => x.Noticia.Id).IsInG(noticias)
                        .SelectList(l => l
                                    .Select(x => usuarioAlias.Id).WithAlias(() => usuarioQueryModel.Id)
                                    .Select(x => usuarioAlias.Username).WithAlias(() => usuarioQueryModel.Username)
                                    .Select(x => usuarioAlias.Nome).WithAlias(() => usuarioQueryModel.Nome)
                                    .Select(x => usuarioAlias.Email).WithAlias(() => usuarioQueryModel.Email)
                                    .Select(x => fotoAlias.Nome).WithAlias(() => usuarioQueryModel.FotoNome)
                                    .SelectCount(x => x.Id).WithAlias(() => usuarioQueryModel.Quantidade)
                                    .SelectGroup(x => usuarioAlias.Id))
                        .OrderByAlias(() => usuarioQueryModel.Quantidade).Desc
                        .TransformUsing(Transformers.AliasToBean <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel>());

            var pagedObject = new PagedObject <Opiniao>();

            pagedObject.Paginate(query, 10, filter.Pagina);

            return(pagedObject.PageResult(Mapper.Map <IList <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel> >(pagedObject.ResultQuery.List <ListarUsuariosMaisParecidosComUsuarioLogadoQueryModel>())));
        }
 public IActionResult ListarUsuariosMenosParecidos([FromBody] ListarUsuariosMaisParecidosComUsuarioLogadoQueryFilter filter)
 {
     return(Ok(_usuarioQuery.Query.ListarUsuariosMenosParecidosComUsuarioLogado(filter, _serviceContext.UsuarioAtualId)));
 }