Exemple #1
0
        public string Post([FromBody] object data, string option)
        {
            string result = "Error unable to process request. Please ensure all inputs are valid.";

            if (option != null && data != null)
            {
                switch (option.ToLower())
                {
                case "download":
                    result = DownloadDocument(data).GetAwaiter().GetResult() ? "Successfully downloaded file to " + DOWNLOAD_DIRECTORY : "Error - File not downloaded please try again";
                    break;

                case "report":     //For data manipulation
                    List <CSVResponse> reportData = GetSurveyResponses(data).GetAwaiter().GetResult();
                    AzureBlobDocuments document   = jsonHelper.FromJson <AzureBlobDocuments>(data.ToString());
                    if (reportData != null)
                    {
                        ReportAnalysisModel report = CollateReportData(reportData);
                        report.ReportTitle = document.Filename;
                        if (report != null)
                        {
                            result = JsonConvert.SerializeObject(report);
                        }
                    }
                    else
                    {
                        result = "Error, unable to run report.";
                    }
                    break;

                case "saveresponse":     //To append a response to csv in azure.
                    result = AppendResponse(data).GetAwaiter().GetResult() ? "Successfully added response to CSV" : "Error adding response to CSV";
                    break;

                default:
                    break;
                }
            }

            return(result);
        }
Exemple #2
0
        private ReportAnalysisModel AnalyseReport(ReportAnalysisModel report, List <QuestionAnalysisCollection> surveyAnalysis)
        {
            if (report != null)
            {
                foreach (ReportResponseAnalysis response in report.Responses)
                {
                    QuestionAnalysisCollection surveyResponse = surveyAnalysis.Find(o => o.QuestionNumber == response.QuestionNumber);

                    if (surveyResponse != null)
                    {
                        switch (surveyResponse.QuestionType)
                        {
                        case "mq":
                            response.Message = MultipleChoiceAnalysis(response, surveyResponse);
                            break;

                        case "ni":
                        case "range":
                            response.Message = RangeChoiceAnalysis(response, surveyResponse);
                            break;

                        case "rank":
                            response.Message = RankChoiceAnalysis(response, surveyResponse);
                            break;

                        case "text":
                            response.Message = TextChoiceAnalysis(response, surveyResponse);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            return(report);
        }
Exemple #3
0
        private ReportAnalysisModel CollateReportData(List <CSVResponse> reportData)
        {
            ReportAnalysisModel report = new ReportAnalysisModel();

            SurveyQuestionsService service = new SurveyQuestionsService();

            List <QuestionDataModel> questionData = service.GetSurveyQuestions(reportData[0].SurveyID);

            foreach (QuestionDataModel question in questionData)
            {
                report.Responses.Add(new ReportResponseAnalysis()
                {
                    QuestionNumber = question.QuestionNumber,
                    Question       = question.Question,
                    Type           = question.Type,
                    Options        = question.Options
                });
            }

            Dictionary <string, int>          multiChoiceAnalysis = null;
            Dictionary <string, int>          rangeAnalysis       = null;
            Dictionary <string, int>          stringAnalysis      = null;
            Dictionary <string, int>          rankAnalysis        = null;
            Dictionary <string, int>          numericAnalysis     = null;
            List <QuestionAnalysisCollection> surveyAnalysis      = new List <QuestionAnalysisCollection>();

            int questionNum = 1;

            do
            {
                multiChoiceAnalysis = new Dictionary <string, int>();
                rangeAnalysis       = new Dictionary <string, int>();
                stringAnalysis      = new Dictionary <string, int>();
                rankAnalysis        = new Dictionary <string, int>();
                numericAnalysis     = new Dictionary <string, int>();

                foreach (CSVResponse responseData in reportData)
                {
                    foreach (var response in responseData.Responses)
                    {
                        if (response.QuestionNumber == questionNum)
                        {
                            string questionType = questionData.Find(o => o.QuestionNumber == response.QuestionNumber).Type;

                            switch (questionType.ToLower())
                            {
                            case "mq":
                                if (multiChoiceAnalysis.ContainsKey(response.Answer))
                                {
                                    multiChoiceAnalysis[response.Answer]++;
                                }
                                else
                                {
                                    multiChoiceAnalysis.Add(response.Answer, 1);
                                }
                                break;

                            case "range":
                                if (rangeAnalysis.ContainsKey(response.Answer))
                                {
                                    rangeAnalysis[response.Answer]++;
                                }
                                else
                                {
                                    rangeAnalysis.Add(response.Answer, 1);
                                }
                                break;

                            case "ni":
                                if (numericAnalysis.ContainsKey(response.Answer))
                                {
                                    numericAnalysis[response.Answer]++;
                                }
                                else
                                {
                                    numericAnalysis.Add(response.Answer, 1);
                                }
                                break;

                            case "rank":
                                if (rankAnalysis.ContainsKey(response.Answer))
                                {
                                    rankAnalysis[response.Answer]++;
                                }
                                else
                                {
                                    rankAnalysis.Add(response.Answer, 1);
                                }
                                break;

                            case "comment":
                            case "text":
                                if (stringAnalysis.ContainsKey(response.Answer))
                                {
                                    stringAnalysis[response.Answer]++;
                                }
                                else
                                {
                                    stringAnalysis.Add(response.Answer, 1);
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
                if (multiChoiceAnalysis.Count > 0)
                {
                    surveyAnalysis.Add(new QuestionAnalysisCollection {
                        QuestionType = "mq", QuestionNumber = questionNum, Summary = multiChoiceAnalysis
                    });
                }
                else if (rangeAnalysis.Count > 0)
                {
                    surveyAnalysis.Add(new QuestionAnalysisCollection {
                        QuestionType = "range", QuestionNumber = questionNum, Summary = rangeAnalysis
                    });
                }
                else if (rankAnalysis.Count > 0)
                {
                    surveyAnalysis.Add(new QuestionAnalysisCollection {
                        QuestionType = "rank", QuestionNumber = questionNum, Summary = rankAnalysis
                    });
                }
                else if (stringAnalysis.Count > 0)
                {
                    surveyAnalysis.Add(new QuestionAnalysisCollection {
                        QuestionType = "text", QuestionNumber = questionNum, Summary = stringAnalysis
                    });
                }
                else if (numericAnalysis.Count > 0)
                {
                    surveyAnalysis.Add(new QuestionAnalysisCollection {
                        QuestionType = "ni", QuestionNumber = questionNum, Summary = numericAnalysis
                    });
                }

                questionNum++;
            } while (questionNum <= questionData.Count);

            report = AnalyseReport(report, surveyAnalysis);

            return(report);
        }