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 void AtualizarMediaAvaliacao(FornecedorAvaliacao avaliacao)
 {
     avaliacao.MediaObtida = fornecedorAvaliacaoQuestionarioBm.getFornecedorQuestionarioByAvaliacao(avaliacao).Average(x => x.MediaObtida);
     fornecedorAvaliacaoBm.Update(avaliacao);
 }
 public void InserirAvaliacao(FornecedorAvaliacao fornecedorAvaliacao)
 {
     fornecedorAvaliacao.DataAlteracao = DateTime.Now;
     fornecedorAvaliacao.DataCriacao = DateTime.Now;
     fornecedorAvaliacaoBm.Insert(fornecedorAvaliacao);
 }
 public void AlterarAvaliacao(FornecedorAvaliacao avaliacao)
 {
     avaliacao.DataAlteracao = DateTime.Now;
     fornecedorAvaliacaoBm.Update(avaliacao);
 }
 public IList<FornecedorAvaliacaoQuestionario> GetFornecedorAvaliacaoQuestionarioByAvaliacao(FornecedorAvaliacao avaliacao)
 {
     return fornecedorAvaliacaoQuestionarioBm.getFornecedorQuestionarioByAvaliacao(avaliacao).Where(x => x.Questionario.Ativo).ToList();
 }