Beispiel #1
0
        public virtual List <QuestionnaireTemplate> GetQuestionnairHistoricalViewData(int userId, string locale,
                                                                                      int numberToRecords)
        {
            var template = new List <QuestionnaireTemplate>();

            List <QuestionnaireAnswers> lattestQuestioannairesAnswers =
                QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>().ToList()
                .Where(q => q.UserId == userId)
                .OrderByDescending(q => q.Date).Skip(numberToRecords - 1).Take(1)
                .ToList();



            lattestQuestioannairesAnswers.ForEach(specificAnswer =>
            {
                GenericError error;
                var templateBuilder   = _questionnaireRegistry.GetAveliableQuestioannaireTemplateBuilder(specificAnswer.TemplateId);
                var templateProcessor = _questionnaireRegistry.GetAveliableQuestioannaireProccesor(specificAnswer.TemplateId);

                QuestionnaireTemplate instanciatedTemplate = templateProcessor.
                                                             InstansiateQuestionnaireForSpecificAnswers(GetQuestionnaireTemplate(templateBuilder.TemplateId, templateBuilder.TemplateLocaleName, out error, specificAnswer.Date, userId), specificAnswer);

                instanciatedTemplate.Date = specificAnswer.Date;


                templateBuilder.QuestionnaireCalculationAlgorithm.CalculateSingleQuestionnaireCategoryColors(instanciatedTemplate);
                templateBuilder.QuestionnaireCoreScoreCalculationAlgorithm.CalculateSingleQuestionnaireCoreScoreColor(instanciatedTemplate);

                template.Add(instanciatedTemplate);
            });

            return(template);
        }
        public QuestionnaireTemplate SubmitAnsweredTemplate(int userId, QuestionnaireTemplate answeredTemplate,
                                                            DateTime?now)
        {
            if (!now.HasValue)
            {
                now = Controller.GetServerDateTime();
            }
            QuestionnaireAnswers lattestQuestioannairesAnswers = QuestionnaireAnswersRepository
                                                                 .GetAsQueryable <QuestionnaireAnswers>().ToList()
                                                                 .FirstOrDefault(
                q =>
                q.UserId == userId &&
                (DateTime.Compare(q.Date, now.Value.Date) == 0));

            if (lattestQuestioannairesAnswers == null)
            {
                QuestionnaireAnswers answers = ExtractAnwsersFromAnsweredTemplate(answeredTemplate);

                try
                {
                    QuestionnaireAnswers processedAnswers = ProceessQuestionAnswers(userId, answers, now);
                    answeredTemplate.CoreScoreAnswer = GetLocalizedCoreScore(Constants.DEFAULT_QUESTIONNAIRE_LOCALE,
                                                                             processedAnswers.CoreScore);
                    UpadatePersistedValues(processedAnswers);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }


            return(answeredTemplate);
        }
        public virtual List <QuestionnaireTemplate> GetQuestionnairHistoricalViewData(int userId, string locale,
                                                                                      int numberToRecords)
        {
            var template = new List <QuestionnaireTemplate>();

            List <QuestionnaireAnswers> lattestQuestioannairesAnswers =
                QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>().ToList()
                // ReSharper disable ImplicitlyCapturedClosure
                .Where(q => q.UserId == userId)
                // ReSharper restore ImplicitlyCapturedClosure
                .OrderByDescending(q => q.Date).Skip(numberToRecords - 1).Take(1)
                .ToList();


            lattestQuestioannairesAnswers.ForEach(q =>
            {
                GenericError error;
                QuestionnaireTemplate instanciatedTemplate =
                    InstansiateQuestionnaireForSpecificAnswers(
                        GetQuestionnaireTemplate(q.TemplateId, locale, out error, q.Date, userId), q);
                instanciatedTemplate.Date = q.Date;
                FillDailyInfoSpecificDisplayQuestions(userId, instanciatedTemplate, q.Date);
                template.Add(instanciatedTemplate);
            });


            return(template);
        }
Beispiel #4
0
        public CoreScoreAnswer GetLattestCoreScore(long userId)
        {
            QuestionnaireAnswers lattestSummaries = QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>().LastOrDefault(q => q.UserId == userId);

            //var calculationAlgorithm = new QuestionnaireCalculationAlgorithmWeek3();
            //if (lattestSummaries != null)
            //    return calculationAlgorithm.GetLocalizedCoreScore(Constants.DEFAULT_QUESTIONNAIRE_LOCALE, lattestSummaries.CoreScore);
            return(QuestionnaireCalculationAlgorithmBase.GetNullCoreScore());
        }
        private void UpadatePersistedValues(QuestionnaireAnswers questionnaireAnwsers)
        {
            GenericError error;

            QuestionnaireAnswersRepository.InsertEntity(out error, questionnaireAnwsers);

            if (error == null)
            {
                EventsService.UpdateUserDates(questionnaireAnwsers.UserId, Controller.GetServerDateTime(), null);
            }
        }
        public CoreScoreAnswer GetLattestCoreScore(long userId)
        {
            QuestionnaireAnswers lattestSummaries =
                QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>()
                .LastOrDefault(q => q.UserId == userId);

            if (lattestSummaries != null)
            {
                return(GetLocalizedCoreScore(Constants.DEFAULT_QUESTIONNAIRE_LOCALE, lattestSummaries.CoreScore));
            }
            return(GetNullCoreScore());
        }
Beispiel #7
0
        protected virtual bool CheckIfQuestionnaireAlreadyAnswered(int userId, DateTime?now)
        {
            if (!now.HasValue)
            {
                now = Controller.GetServerDateTime();
            }

            QuestionnaireAnswers lattestQuestioannairesAnswers = QuestionnaireAnswersRepository
                                                                 .GetAsQueryable <QuestionnaireAnswers>().ToList()
                                                                 .FirstOrDefault(q => q.UserId == userId && (DateTime.Compare(q.Date, now.Value.Date) == 0));

            return(lattestQuestioannairesAnswers != null);
        }
        private List <QuestionnaireAnswers> LattestQuestioannairesAnswers(int userId, DateTime now,
                                                                          int numberToRecords)
        {
            List <QuestionnaireAnswers> lattestQuestioannairesAnswers =
                QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>().ToList()
                .Where(q => q.UserId == userId &&
                       (DateTime.Compare(q.Date, now.AddDays(-1)) > 0) &&
                       (DateTime.Compare(q.Date, now) <= 0))
                .Take(numberToRecords)
                .ToList();

            return(lattestQuestioannairesAnswers);
        }
Beispiel #9
0
        private IEnumerable <QuestionnaireAnswers> GetQuestionnaireAnswers(int userId, int period,
                                                                           DateTime currentTime)
        {
            DateTime fromDateTime            = currentTime;
            Func <DateTime, bool> isIncluded = d => { throw new Exception("Not Valid Period"); };

            if (period == 0)
            {
                isIncluded =
                    d =>
                    DataUtils.CompareDatesAfterNotIncludingStartDate(
                        fromDateTime.AddDays(-Constants.QUESTIONNAIRE_NUMBER_OF_DAYS_RECORDS), d.Date) &&
                    DataUtils.CompareDatesBeforeEndDate(d.Date, currentTime); //take 2 weeks
            }
            if (period == 1)
            {
                isIncluded =
                    d =>
                    DataUtils.CompareDatesInTimeSpan(
                        fromDateTime.AddDays(-Constants.QUESTIONNAIRE_NUMBER_OF_WEEKS_RECORDS), currentTime, d.Date);
            }
            //take 5 weeks
            if (period == 2)
            {
                isIncluded =
                    d =>
                    (fromDateTime.AddMonths(-Constants.NUMBER_OF_MONTH_RECORDS).Month <= d.Date.Month) &&
                    (currentTime.Month >= d.Date.Month);
            }
            if (period == 3)
            {
                isIncluded =
                    d =>
                    (fromDateTime.AddYears(-Constants.NUMBER_OF_YEAR_RECORDS).Year <= d.Date.Year) &&
                    (currentTime.Year >= d.Date.Year);
            }

            IEnumerable <QuestionnaireAnswers> lattestSummaries =
                QuestionnaireAnswersRepository.GetAsQueryable <QuestionnaireAnswers>()
                .ToList()
                .Where(q => q.UserId == userId && isIncluded(q.Date));

            return(lattestSummaries);
        }