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 void CalculateSingleQuestionnaireCategoryScores(QuestionnaireAnswers questionnaireAnwsers) { questionnaireAnwsers.QuestionnaireSummaryData = new QuestionnaireSummaryData { Value = questionnaireAnwsers.CategoryQuestionsAnswers.Select(c => c.Answer).ToList() }; }
public QuestionnaireTemplate InstansiateQuestionnaireForSpecificAnswers( QuestionnaireTemplate questionnaireTemplate, QuestionnaireAnswers questionnaireAnswers) { //Fill category Questions questionnaireTemplate.QuestionCategories.ForEach(qc => { qc.CategoryQuestion.QuestionAnwer = GetInsatnciatedAnswerForQuestion(questionnaireAnswers.CategoryQuestionsAnswers, qc.CategoryQuestion, () => qc.CategoryQuestion.QuestionId); //Fill Questions Of Each Category qc.Questions.ForEach( question => { question.QuestionAnwer = GetInsatnciatedAnswerForQuestion(questionnaireAnswers.QuestionsAnswers, question, () => question.QuestionId); }); }); questionnaireTemplate.CoreScoreAnswer = GetLocalizedCoreScore(Constants.DEFAULT_QUESTIONNAIRE_LOCALE, questionnaireAnswers.CoreScore); return(questionnaireTemplate); }
//private void UpdateYearlyEnrergyLevel(QuestionnaireAnswers questionnaireAnwsers) //{ // YearlyQuestionnaireHandlingStrategy.UpdateEntityRecords(questionnaireAnwsers); //} //private void UpdateMonthlyEnrergyLevel(QuestionnaireAnswers questionnaireAnwsers) //{ // MontlyQuestionnaireHandlingStrategy.UpdateEntityRecords(questionnaireAnwsers); //} private void FillSummaryData(QuestionnaireAnswers questionnaireAnwsers) { questionnaireAnwsers.QuestionnaireSummaryData = new QuestionnaireSummaryData { Value = questionnaireAnwsers.CategoryQuestionsAnswers.Select(c => c.Answer).ToList() }; }
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()); }
public virtual QuestionnaireAnswers ExtractAnwsersFromAnsweredTemplate(ServiceModel.Questionnaire.QuestionnaireTemplate answeredTemplate) { var givenAnswersToPersist = new QuestionnaireAnswers { CategoryQuestionsAnswers = new List <Model.Questionnaire.QuestionAnwer>(), QuestionsAnswers = new List <Model.Questionnaire.QuestionAnwer>(), TemplateId = answeredTemplate.TemplateId }; //Fill category Questions answeredTemplate.QuestionCategories.ForEach(qc => { if (qc.CategoryQuestion.QuestionAnwer != null) { givenAnswersToPersist.CategoryQuestionsAnswers.Add(new Model.Questionnaire.QuestionAnwer { QuestionId = qc.CategoryQuestion.QuestionId, Answer = qc.CategoryQuestion.QuestionAnwer.Answer }); qc.CategoryQuestion.QuestionAnwer = GetSpesificQuestionAnswer(qc.CategoryQuestion); } //Fill Questions Of Each Category if (qc.Questions != null) { qc.Questions.ForEach(question => { if (question.QuestionAnwer != null) { givenAnswersToPersist.QuestionsAnswers.Add(new Model.Questionnaire.QuestionAnwer { QuestionId = question.QuestionId, Answer = question.QuestionAnwer.Answer }); question.QuestionAnwer = GetSpesificQuestionAnswer(question); } else { givenAnswersToPersist.QuestionsAnswers.Add(new Model.Questionnaire.QuestionAnwer { QuestionId = question.QuestionId, Answer = -1 }); question.QuestionAnwer = GetSpesificQuestionAnswer(question); } }); } }); return(givenAnswersToPersist); }
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 bool CalculateCoreScore(QuestionnaireAnswers questionnaireAnwsers) { try { double coreScore = CaluclateSum(questionnaireAnwsers); questionnaireAnwsers.CoreScore = CoreScoreCategoryType(coreScore); } catch (Exception ex) { Logger.Controller.LogError(ex); return(false); } return(true); }
public ActionResult FillQuestionnaire(QuestionnaireAnswers answers) { var contents = JsonConvert.SerializeObject(answers); string url = System.Web.Configuration.WebConfigurationManager.AppSettings["baseUrl"]; string uri = System.Web.Configuration.WebConfigurationManager.AppSettings["login"]; bool result; using (var client = new HttpClient()) { client.BaseAddress = new Uri(url); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.PostAsJsonAsync(uri, contents).Result; string resultString = response.Content.ReadAsStringAsync().Result; result = String.Equals(resultString, "true") ? true : false; } if (result) { return(RedirectToAction("Student", "Home")); } return(View(answers)); }
//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; //} #endregion #region Submit Questionnaire Template public QuestionnaireTemplate SubmitAnsweredTemplate(int userId, QuestionnaireTemplate answeredTemplate, DateTime?now) { var hasQuestioannairesAnswered = CheckIfQuestionnaireAlreadyAnswered(userId, now); if (!hasQuestioannairesAnswered) { var templateAnswersExtractor = _questionnaireRegistry.GetAveliableQuestioannaireProccesor(answeredTemplate.TemplateId); var templateBuilder = _questionnaireRegistry.GetAveliableQuestioannaireTemplateBuilder(answeredTemplate.TemplateId); QuestionnaireAnswers answers = templateAnswersExtractor.ExtractAnwsersFromAnsweredTemplate(answeredTemplate); try { //extract answers to persist and save them answers.CoreScore = templateBuilder.QuestionnaireCoreScoreCalculationAlgorithm.OveralCoreScoreType(answeredTemplate); answers.QuestionnaireSummaryData = templateBuilder.QuestionnaireCalculationAlgorithm.CalculateSingleQuestionnaireCategoryScores(answeredTemplate); UpadatePersistedValues(userId, answers, now); //Initialize null CategoryQuestions if any answeredTemplate.QuestionCategories.ForEach(qc => { if (qc.CategoryQuestion.QuestionAnwer == null) { qc.CategoryQuestion.QuestionAnwer = new QuestionAnwer(); } }); //fill with the results templateBuilder.QuestionnaireCalculationAlgorithm.CalculateSingleQuestionnaireCategoryColors(answeredTemplate); templateBuilder.QuestionnaireCoreScoreCalculationAlgorithm.CalculateSingleQuestionnaireCoreScoreColor(answeredTemplate); } catch (Exception e) { Console.WriteLine(e); } } return(answeredTemplate); }
private QuestionnaireAnswers ProceessQuestionAnswers(int userId, QuestionnaireAnswers questionnaireAnwsers, DateTime?now = null) { try { if (CalculateCoreScore(questionnaireAnwsers)) { FillSummaryData(questionnaireAnwsers); questionnaireAnwsers.Date = now ?? Controller.GetServerDateTime(); questionnaireAnwsers.UserId = userId; return(questionnaireAnwsers); } } catch (Exception ex) { Logger.Controller.LogError(ex); ErrorClasses.Controller.GetUnknownError(); throw; } throw new Exception(); }
/// <summary> /// Returns a view which allows the student to fill questionnaire /// </summary> /// <returns></returns> public ActionResult FillQuestionnaire() { QuestionnaireAnswers questionnaire = new QuestionnaireAnswers(); return(View(questionnaire)); }
public async Task <IHttpActionResult> AnswerQuestionnaireAsync(string questionnaireId, QuestionnaireAnswers questionnaireAnswers) { if (questionnaireAnswers == null) { return(BadRequest()); } if (questionnaireAnswers.Questionnaire == null) { return(BadRequest()); } if (questionnaireAnswers.Questionnaire.Id.ToString() != questionnaireId) { return(BadRequest()); } var user = await _userManager.GetUserFromDbAsync(User); questionnaireAnswers.UserData = new UserData { Email = user.Email, FirstName = "admin", LastName = "", Id = user.Id, PhoneNumber = user.PhoneNumber, CreatedDate = user.CreatedDate.DateTime }; await _answersRepository.CreateEntityAsync(questionnaireAnswers); return(Ok(questionnaireAnswers)); }
private static void SerializeQuestionnaireAnswers() { QuestionnaireAnswers answers = new QuestionnaireAnswers(); QuestionnaireAnswer a1 = new QuestionnaireAnswer(); a1.QuestionID = "1"; a1.Value = "1"; QuestionnaireAnswer a2 = new QuestionnaireAnswer(); a2.QuestionID = "2"; a2.Value = "0"; answers.Answers.Add(a1); answers.Answers.Add(a2); SerializeMe(answers, "QuestionnaireAnswers.xml"); }
public ActionResult InsertSampleData() { if (_env.IsDevelopment()) { Questionnaire ExampleQuestionnaire = new Questionnaire(); QuestionnaireCategories ExampleCategory1 = new QuestionnaireCategories { CategoryID = 1, CategoryName = "Test Category 1", QuestionnaireID = ExampleQuestionnaire, Weighting = 30 }; QuestionnaireCategories ExampleCategory2 = new QuestionnaireCategories { CategoryID = 2, CategoryName = "Test Category 2", QuestionnaireID = ExampleQuestionnaire, Weighting = 30 }; QuestionnaireQuestions ExampleQuestionA = new QuestionnaireQuestions { QuestionID = 1, Description = "How good was the big data visualized", GoodReference = "Easily understandable", BadReference = "Confusing", Weighting = 10, QuestionnaireCategory = ExampleCategory1 }; QuestionnaireQuestions ExampleQuestionB = new QuestionnaireQuestions { QuestionID = 2, Description = "What is big data analytics", GoodReference = "Difficult to understand ", BadReference = "Very less details ", Weighting = 20, QuestionnaireCategory = ExampleCategory1 }; QuestionnaireQuestions ExampleQuestionC = new QuestionnaireQuestions { QuestionID = 3, Description = "What is big data ", GoodReference = "Meaningfull data", BadReference = " Some key points were misssing ", Weighting = 20, QuestionnaireCategory = ExampleCategory2 }; QuestionnaireQuestions ExampleQuestionD = new QuestionnaireQuestions { QuestionID = 4, Description = " Give some examples of big data ", GoodReference = " awesome", BadReference = " Lot of details ", Weighting = 10, QuestionnaireCategory = ExampleCategory2 }; QuestionnaireAnswers ExampleAnswers1 = new QuestionnaireAnswers { Question = ExampleQuestionA, AnswerID = 1, Score = 10 }; QuestionnaireAnswers ExampleAnswers2 = new QuestionnaireAnswers { Question = ExampleQuestionA, AnswerID = 2, Score = 10 }; QuestionnaireAnswers ExampleAnswers3 = new QuestionnaireAnswers { Question = ExampleQuestionB, AnswerID = 1, Score = 20 }; QuestionnaireAnswers ExampleAnswers4 = new QuestionnaireAnswers { Question = ExampleQuestionB, AnswerID = 2, Score = 20 }; QuestionnaireAnswers ExampleAnswers5 = new QuestionnaireAnswers { Question = ExampleQuestionC, AnswerID = 1, Score = 20 }; QuestionnaireAnswers ExampleAnswers6 = new QuestionnaireAnswers { Question = ExampleQuestionC, AnswerID = 2, Score = 20 }; QuestionnaireAnswers ExampleAnswers7 = new QuestionnaireAnswers { Question = ExampleQuestionD, AnswerID = 1, Score = 10 }; QuestionnaireAnswers ExampleAnswers8 = new QuestionnaireAnswers { Question = ExampleQuestionD, AnswerID = 2, Score = 10 }; Module ExampleModule = new Module { TemplateQuestionnaireID = ExampleQuestionnaire, Description = "SAD" }; ModuleDetails ExampleModuleDetails = new ModuleDetails { ModuleID = ExampleModule, CourseNumber = 1, QuestionnaireID = ExampleQuestionnaire, StartTime = new DateTime(2017, 04, 23), EndTime = new DateTime(2017, 05, 18), UserNameProfessor = "*****@*****.**" }; GroupModule ExampleGroupModule = new GroupModule { ModuleDetail = ExampleModuleDetails, GroupName = "abc", }; StudentCourse ExampleStudentCourse = new StudentCourse { UserNameStudent = "*****@*****.**", Course = ExampleModuleDetails, SelfEvaluationID = 1, AnswerID = 2, GroupGradeOK = true, Group = ExampleGroupModule, SelfEvaluationGrade = 3, GroupGrade = 4, ProfessorGuessGrade = 10, Grade = 10, }; _context.Questionnaire.Add(ExampleQuestionnaire); _context.QuestionnaireCategories.Add(ExampleCategory1); _context.QuestionnaireCategories.Add(ExampleCategory2); _context.QuestionnaireQuestions.Add(ExampleQuestionA); _context.QuestionnaireQuestions.Add(ExampleQuestionB); _context.QuestionnaireQuestions.Add(ExampleQuestionC); _context.QuestionnaireQuestions.Add(ExampleQuestionD); _context.QuestionnaireAnswers.Add(ExampleAnswers1); _context.QuestionnaireAnswers.Add(ExampleAnswers2); _context.QuestionnaireAnswers.Add(ExampleAnswers3); _context.QuestionnaireAnswers.Add(ExampleAnswers4); _context.QuestionnaireAnswers.Add(ExampleAnswers5); _context.QuestionnaireAnswers.Add(ExampleAnswers6); _context.QuestionnaireAnswers.Add(ExampleAnswers7); _context.QuestionnaireAnswers.Add(ExampleAnswers8); _context.Module.Add(ExampleModule); _context.ModuleDetails.Add(ExampleModuleDetails); _context.GroupModule.Add(ExampleGroupModule); _context.StudentCourse.Add(ExampleStudentCourse); _context.SaveChanges(); ViewData["SampleDataInserted"] = "True"; } return(View("Index")); }
private double CaluclateSum(QuestionnaireAnswers questionnaireAnwsers) { return(questionnaireAnwsers.CategoryQuestionsAnswers.Sum(a => a.Answer + 1)); }