public async Task <IActionResult> GetMatchList(int?id) { if (id == null) { return(NotFound()); } //Recolher dados estatisticos do Match feito anteriormente. var matchStatsInfoDb = _context.MatchStats.ToList(); var matchStatsInfo = new MatchStatsInfo { //NrRecords = matchStatsInfoDb.Count(), GrupoSanguineoMulher = matchStatsInfoDb.Count(x => x.GrupoSanguineoMulher), GrupoSanguineoHomem = matchStatsInfoDb.Count(x => x.GrupoSanguineoHomem), CorOlhosMulher = matchStatsInfoDb.Count(x => x.CorOlhosMulher), CorCabeloMulher = matchStatsInfoDb.Count(x => x.CorCabeloMulher), RacaHomem = matchStatsInfoDb.Count(x => x.RacaHomem), CorPeleMulher = matchStatsInfoDb.Count(x => x.CorPeleMulher), CorOlhosHomem = matchStatsInfoDb.Count(x => x.CorOlhosHomem), CorCabeloHomem = matchStatsInfoDb.Count(x => x.CorCabeloHomem), CorPeleHomem = matchStatsInfoDb.Count(x => x.CorPeleHomem), TexturaCabeloHomem = matchStatsInfoDb.Count(x => x.TexturaCabeloHomem), TexturaCabeloMulher = matchStatsInfoDb.Count(x => x.TexturaCabeloMulher), RacaMulher = matchStatsInfoDb.Count(x => x.RacaMulher), }; //Recolher dados do casal e lista de dadores filtrados com factor de exclusao var casal = _context.Casal.FirstOrDefault(x => x.CasalID == id); var matchList = _context.Dador .Where(x => x.Amostras.Any(y => y.PedidoGametas == null)) .Where(x => casal.GamMatch(x)) .ToList(); //Mecanismo de ordenação baseada nas escolhas frequentes do utilizador var listaOrdenada = MatchHelper.GetOrdedList(matchList, casal, matchStatsInfo); if (!listaOrdenada.Any()) { casal.PedidoGametas.EstadoProcessoPedido = EstadoProcesso.EmListaEspera; //TODO apresentar mensagem utilizador de "sem match possiveis de momento" return(NotFound()); } ViewBag.CasalId = id; return(View("ListaDadores", listaOrdenada)); }