Esempio n. 1
0
        public List <Tuple <String, Dictionary <Respuesta.RespuestaCualitativa, int> > > GetQuizResultsByMonthAndYear(int year, int monthNumber, int quizId)
        {
            List <Tuple <String, Dictionary <Respuesta.RespuestaCualitativa, int> > > resultados =
                new List <Tuple <string, Dictionary <Respuesta.RespuestaCualitativa, int> > >();

            List <QuizReportDto> quizResults = _quizRepository.GetQuizResultsByYearAndMonth(year, monthNumber, quizId);

            if (quizResults != null)
            {
                var answeredQuestion = quizResults.GroupBy(x => x.QuestionId).ToList();

                foreach (var question in answeredQuestion)
                {
                    var questionResults = quizResults.Where(x => x.QuestionId == question.First().QuestionId);

                    Dictionary <Respuesta.RespuestaCualitativa, int> diccionarioResultados =
                        new Dictionary <Respuesta.RespuestaCualitativa, int>();

                    int answerCount = 0;
                    foreach (var questionResult in questionResults)
                    {
                        diccionarioResultados.Add(GetRespuestaCualitativa(questionResult.Answer), questionResult.Quantity);
                        answerCount++;
                    }

                    if (answerCount < 5)
                    {
                        foreach (Respuesta.RespuestaCualitativa respuestaCualitativa in Enum.GetValues(typeof(Respuesta.RespuestaCualitativa)).Cast <Respuesta.RespuestaCualitativa>())
                        {
                            if (!diccionarioResultados.ContainsKey(respuestaCualitativa))
                            {
                                diccionarioResultados.Add(respuestaCualitativa, 0);
                            }
                        }
                    }

                    resultados.Add(new Tuple <string, Dictionary <Respuesta.RespuestaCualitativa, int> >(question.First().Question, diccionarioResultados));
                }
            }
            else
            {
                throw new NullReferenceException("No hay datos para la encuesta");
            }


            return(resultados);
        }