public void AtualizarQuestionario(FornecedorAvaliacao avaliacao, FornecedorAvaliacaoQuestionario fornecedorQuestionario, 
            List<FornecedorAvaliacaoQuestionarioResposta> listaFornecedorQuestionarioResposta)
        {
            var questionario = fornecedorAvaliacaoQuestionarioBm.GetByID(fornecedorQuestionario.IdFornecedorAvaliacaoQuestionario);

            if (questionario != null)
                foreach (var respostaAtual in fornecedorAvaliacaoQuestionarioRespostaBm.GetByFornecedorQuestionario(questionario))
                    fornecedorAvaliacaoQuestionarioRespostaBm.Delete(respostaAtual);
            else
            {
                questionario = new FornecedorAvaliacaoQuestionario()
                {
                    Avaliacao = fornecedorAvaliacaoBm.GetByID(avaliacao.IdFornecedorAvaliacao),
                    Questionario = questionarioBm.GetByID(fornecedorQuestionario.Questionario.IdQuestionario),
                    DataPreenchimento = DateTime.Now,
                };

                fornecedorAvaliacaoQuestionarioBm.Insert(questionario);
            }

            questionario.MediaObtida = 0;
            var somaPeso = 0;

            foreach (var respostas in listaFornecedorQuestionarioResposta)
            {
                var novaResposta = new FornecedorAvaliacaoQuestionarioResposta()
                {
                    Avaliacao = respostas.Avaliacao,
                    Pergunta = questionarioPerguntaBm.GetByID(respostas.Pergunta.IdQuestionarioPergunta),
                    Verdadeiro = respostas.Verdadeiro,
                    FornecedorQuestionario = questionario
                };

                fornecedorAvaliacaoQuestionarioRespostaBm.Insert(novaResposta);

                somaPeso += novaResposta.Pergunta.Peso;

                switch (novaResposta.Pergunta.TipoResposta)
                {
                    case TipoResposta.Avaliativa:
                        questionario.MediaObtida += (novaResposta.Avaliacao.Value * novaResposta.Pergunta.Peso);
                        break;

                    case TipoResposta.Eletiva:
                        questionario.MediaObtida += novaResposta.Verdadeiro ? 1 * novaResposta.Pergunta.Peso : 0 ;
                        break;
                }

            }

            if (somaPeso == 0)
                somaPeso = 1;

            questionario.MediaObtida = questionario.MediaObtida / somaPeso;

            fornecedorAvaliacaoQuestionarioBm.Update(questionario);
        }
 public IList<FornecedorAvaliacaoQuestionarioResposta> GetFornecedorAvaliacaoQuestionarioRespostaByAvaliacaoQuestionario(FornecedorAvaliacaoQuestionario FornecedorQuestionario)
 {
     return fornecedorAvaliacaoQuestionarioRespostaBm.GetByFornecedorQuestionario(FornecedorQuestionario);
 }