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); }