Example #1
0
        public async Task <IActionResult> SubmitSurvey(string id)
        {
            Survey survey = await SurveyService.GetSurvey(id);

            List <String>            selectedRadios  = new List <string>();
            Dictionary <int, String> selectedOptions = new Dictionary <int, String>();

            var i = 0;

            foreach (var question in survey.Questions)
            {
                i++;
                var qns = "qns" + i;
                selectedRadios.Add(qns);
            }

            // Obtains selected radio item value and stores in dictionary
            var j = 0;

            foreach (String radio in selectedRadios)
            {
                selectedOptions.Add(j, Request.Form[radio]);
                j++;
            }

            GenerateResult generateResult = new GenerateResult(selectedOptions, survey.Set);
            float          score          = await generateResult.GetScore();

            switch (survey.Type)
            {
            case "openness":
                break;

            case "conscientiousness":
                break;

            case "extraversion":
                break;

            case "agreeableness":
                break;

            case "neuroticism":
                break;
            }

            ViewBag.score   = score;
            ViewBag.message = generateResult.GetMessage(score);

            return(View("Result"));
        }
        public ResultsPage(GenerateResult generateResult, User user)
        {
            InitializeComponent();
            float score = AsyncContext.Run(generateResult.GetScore);

            MessageLabel.Text = generateResult.GetMessage(score);

            // Prepare data for chart
            var entries = new[]
            {
                new Microcharts.Entry(score)
                {
                    Label      = "Openness",
                    ValueLabel = score.ToString(),
                    Color      = SKColor.Parse("#2c3e50")
                },
                new Microcharts.Entry(2)
                {
                    Label      = "Conscientiousness",
                    ValueLabel = "2",
                    Color      = SKColor.Parse("#77d065")
                },
                new Microcharts.Entry(3)
                {
                    Label      = "Extraversion",
                    ValueLabel = "3",
                    Color      = SKColor.Parse("#b455b6")
                },
                new Microcharts.Entry(4)
                {
                    Label      = "Agreeableness",
                    ValueLabel = "4",
                    Color      = SKColor.Parse("#3498db")
                },
                new Microcharts.Entry(5)
                {
                    Label      = "Neuroticism",
                    ValueLabel = "5",
                    Color      = SKColor.Parse("#d42f2f")
                }
            };

            // Create a radar chart
            var chart = new RadarChart()
            {
                Entries = entries
            };

            ChartView chartView = new ChartView
            {
                HeightRequest = 140,
                Chart         = chart
            };

            ResultsStack.Children.Add(chartView);

            Button doneButton = new Button
            {
                Text              = "Done",
                FontSize          = 16,
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.CenterAndExpand
            };

            doneButton.Clicked += async(sender, e) => {
                // Play sound effect
                var    assembly    = typeof(AdventureLearn).GetTypeInfo().Assembly;
                Stream audioStream = assembly.GetManifestResourceStream("AdventureLearn.Sounds." + "button.mp3");

                var player = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
                player.Load(audioStream);

                player.Play();

                await Navigation.PushAsync(new WelcomePage(user));
            };

            ResultsStack.Children.Add(doneButton);
        }