public IActionResult Roll(EstudanteRollViewModel estudanteRollViewModel) { var viewModel = _estudanteAppService.ObterEstudante(User, estudanteRollViewModel); return(viewModel == null?View("EndOfRoll") : View(viewModel)); }
public EstudanteRollViewModel ObterEstudante(ClaimsPrincipal user, EstudanteRollViewModel previousViewModel = null) { var idUsuario = _userManager.GetUserId(user); var estudante = _estudanteRepository.ObterPorUsuario(idUsuario); IEnumerable <Estudante> listaEstudantes; switch (estudante.OrientacaoSexual) { case OrientacaoSexual.Hetero: listaEstudantes = _estudanteRepository.ListarPorGenero(estudante.Genero == Genero.Masculino ? Genero.Feminino : Genero.Masculino) .Where(x => x.OrientacaoSexual == OrientacaoSexual.Bi || x.OrientacaoSexual == OrientacaoSexual.Hetero); break; case OrientacaoSexual.H**o: listaEstudantes = _estudanteRepository.ListarPorGenero(estudante.Genero) .Where(x => x.OrientacaoSexual == OrientacaoSexual.H**o); break; case OrientacaoSexual.Bi: listaEstudantes = _estudanteRepository.GetAll(); break; default: throw new ArgumentOutOfRangeException(); } if (previousViewModel != null) { listaEstudantes = listaEstudantes.Where(x => !previousViewModel.UsuariosDescartados.Contains(x.UsuarioId)); } var matches = _curtidaRepository.ObterMatchesPorUsuario(idUsuario); if (matches != null) { } if (!listaEstudantes.Any()) { return(null); } var random = new Random(); var index = random.Next(0, listaEstudantes.Count()); var estudanteSelecionado = listaEstudantes.ElementAt(index); var estudanteRollViewModel = new EstudanteRollViewModel { CaminhoFoto = estudanteSelecionado.CaminhoFoto, Nome = estudanteSelecionado.Nome, Idade = DateTime.Now.Year - estudanteSelecionado.DataNascimento.Year, Descricao = estudanteSelecionado.Descricao, OrientacaoPolitica = estudanteSelecionado.OrientacaoPolitica?.Nome, TipoDeConsumoBebida = estudanteSelecionado.TipoDeConsumoBebida?.Nome, TiposDeAtracao = estudanteSelecionado.TiposDeAtracao .Select(x => x.TipoDeAtracao.Nome).ToArray(), AreaConhecimento = estudanteSelecionado.Curso.UnidadeUniversitaria.AreaConhecimento.Nome, AnoIngresso = estudanteSelecionado.AnoIngresso, UsuarioId = estudanteSelecionado.UsuarioId }; if (previousViewModel != null) { estudanteRollViewModel.UsuariosDescartados.AddRange(previousViewModel.UsuariosDescartados); } estudanteRollViewModel.UsuariosDescartados.Add(estudanteRollViewModel.UsuarioId); return(estudanteRollViewModel); }