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);
        }
Exemple #2
0
 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()
            };
        }
Exemple #5
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());
        }
        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);
        }
Exemple #9
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 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));
        }
Exemple #12
0
        //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));
        }
Exemple #15
0
        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");
        }
Exemple #17
0
        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));
 }