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