public List <Alternativa> ProcessarMatriz(int idProjeto) { var criterios = _criterioService.SelecionarCriterios(idProjeto); var alternativas = _alternativaService.SelecionarAlternativas(idProjeto); var matrizNormalizada = NormalizarMatriz(idProjeto, criterios); var matrizNormalizadaPonderada = MatrizNormalizadaPonderada(matrizNormalizada, criterios); var matrizNormalizadaPonderadaClone = matrizNormalizadaPonderada.ConvertAll(x => new ItemMatrizDeDecisao() { Id = x.Id, Alternativa = x.Alternativa, Criterio = x.Criterio, Projeto = x.Projeto, Valor = x.Valor }); var vetorIdealPositivo = ObterVetorIdealPositivo(matrizNormalizadaPonderada, criterios); var vetorIdealNegativo = ObterVetorIdealNegativo(matrizNormalizadaPonderadaClone, criterios); var distanciaEuclidianaPositiva = ObterDistanciaEuclidianaDoVetor(matrizNormalizadaPonderada, vetorIdealPositivo, idProjeto, criterios, alternativas); var distanciaEuclidianaNegativa = ObterDistanciaEuclidianaDoVetor(matrizNormalizadaPonderadaClone, vetorIdealNegativo, idProjeto, criterios, alternativas); GerarResultado(alternativas, distanciaEuclidianaPositiva, distanciaEuclidianaNegativa); alternativas.ForEach(alternativa => _alternativaService.Atualizar(alternativa)); return(alternativas); }