// GET: Home
        public ActionResult Index()
        {
            /* Det finns ett sätt att förstöra denna kod och det är genom att ha mer än en fråga
             * i databasen som har samma nummer. Det kraschar inte, men båda frågorna räknas.
             * Säkra upp att man inte får lov att ge den samma nummer. FIXAT med annnotations (tror jag)*/

            FormScore       score     = new FormScore();
            List <Question> questions = new List <Question>();

            using (QuestionContext context = new QuestionContext())
            {
                questions = context.Questions.ToList();
            }
            //En lista för att spara numret på alla frågor som man svarat ja på
            List <int> yesQuestions = new List <int>();

            if (Request["submit"] != null)
            {
                //Ger en collection med key-value pairs
                var x = Request.Form;

                //Går igenom collectionen
                //om value är 1 (dvs. "ja"), lägg till i listan med frågor som ska räknas
                foreach (string key in x)
                {
                    var value = x[key];

                    if (value == "1")
                    {
                        yesQuestions.Add(int.Parse(key));
                    }
                }

                //Går igenom den lokala listan med frågor, räknar ihop poängen på alla frågor
                //vars nummer finns i listan yesQuestions
                foreach (Question q in questions)
                {
                    if (yesQuestions.Contains(q.QuestionNumber))
                    {
                        score.ScoreA += q.ScoreA;
                        score.ScoreB += q.ScoreB;
                        score.ScoreC += q.ScoreC;
                    }
                }

                ViewBag.Score = score;
            }

            return(View(questions));
        }
Пример #2
0
        public List <FormResponse> Post([FromBody] Form formData)
        {
            InitializeDestination(ref formData);

            if (formData != null)
            {
                List <FormResponse> formResponses = new List <FormResponse>();
                string personId      = formData.FormParameters.Where(item => item.ParameterName.Equals("Person_Id")).FirstOrDefault().ParameterValue;
                string encounterId   = formData.FormParameters.Where(item => item.ParameterName.Equals("Encounter_Id")).FirstOrDefault().ParameterValue;
                string formContext   = formData.FormParameters.Where(item => item.ParameterName.Equals("Form_Context")).FirstOrDefault().ParameterKey;
                string formContextId = formData.FormParameters.Where(item => item.ParameterName.Equals("Form_Context")).FirstOrDefault().ParameterValue;

                FormInstance formInstance = _formInstanceHelper.GetFormInstance(formData.FormInstanceId);

                FormScore savedFormScore = _formInstanceHelper.GetFormScore(formInstance.FormInstanceId);

                foreach (var section in formData.Sections)
                {
                    foreach (var field in section.Fields)
                    {
                        foreach (var fieldData in field.FieldData)
                        {
                            var formResponse = new FormResponse
                            {
                                FormResponseId = Guid.NewGuid().ToString(),
                                FormInstanceId = formInstance.FormInstanceId,
                                FormId         = formData.FormId,
                                SectionId      = section.SectionId,
                                FieldId        = field.FieldId,
                                FieldType      = field.FieldControlTypeName,
                                FieldQuestion  = field.FieldLabelText,
                                ResponseText   = fieldData.Text,
                                ResponseValue  = fieldData.Value
                            };

                            formResponses.Add(formResponse);
                        }
                    }
                }

                _dynamicAPIClient.DeleteObjectByAttribute("dcs", "formresponse", "forminstance_id", formInstance.FormInstanceId);

                _dynamicAPIClient.PostObjectArray("dcs", "formresponse", formResponses);

                foreach (var destination in formData.DestinationEntities)
                {
                    string value = _dynamicAPIClient.ExecuteNonSQL(new SQLData()
                    {
                        Parameters   = destination.SQLParameters,
                        ReturnColumn = "_sequenceid",
                        Query        = destination.SQL
                    });
                }

                /*
                 * Below call need to be replaced by saving form scores based on the scoring model present in JSON. Implemented this way for Pre-op form delivery
                 */
                string  score    = FormScoreHelper.CalculateASAScore(formResponses);
                dynamic asaScore = JsonConvert.DeserializeObject(score);

                FormScore formScore = new FormScore();

                if (savedFormScore == null)
                {
                    formScore.FormScoreId = Guid.NewGuid().ToString();
                }
                else
                {
                    formScore.FormScoreId = savedFormScore.FormScoreId;
                }
                formScore.FormInstanceId    = formInstance.FormInstanceId;
                formScore.FormInstanceScore = asaScore.result.asascore;
                formScore.ReviewType        = asaScore.result.reviewtype;
                formScore.ScoreDescription  = asaScore.result.desc;
                formScore.ScoreId           = "ASAScore";

                _dynamicAPIClient.PostObject("dcs", "formscore", formScore);

                /*
                 * End of comments
                 */

                formInstance.Status = "Completed";
                _dynamicAPIClient.PostObject("dcs", "forminstance", formInstance);

                return(formResponses);
            }
            else
            {
                return(null);
            }
        }