Esempio n. 1
0
        public IActionResult Sing()
        {
            var file       = Request.Form.Files[0];
            var questionId = Request.Form["param"].FirstOrDefault();

            byte[] audioArray = _service.GetAudioArray(file);
            bool   answer;

            if (Int32.Parse(questionId) == 19)
            {
                answer = _service.ProcessRecording(audioArray, 330);
            }
            else if (Int32.Parse(questionId) == 20)
            {
                answer = _service.ProcessRecording(audioArray, 440);
            }
            else
            {
                answer = false;
            }


            int?         userId = HttpContext.Session.GetInt32("UserId");
            var          user   = _dbContext.Users.First(a => a.Id == userId);
            PropertyInfo info   = user.GetType().GetProperty($"Answer{questionId}");

            UserAnswers.AddAnswer(answer);
            info.SetValue(user, answer);
            _dbContext.SaveChanges();



            return(Json("Ok"));
        }
Esempio n. 2
0
        public IActionResult Question(string firstbtn, string secondbtn)
        {
            int?userId    = HttpContext.Session.GetInt32("UserId");
            int id        = int.Parse(this.RouteData.Values["id"].ToString());
            var audiofile = AudioRepository.Audiofiles[id - 1];

            var          user = _dbContext.Users.First(a => a.Id == userId);
            PropertyInfo info = user.GetType().GetProperty($"Answer{id}");

            if (firstbtn != null)
            {
                UserAnswers.AddAnswer(audiofile.Question.FirstAnswer.IsRight);
                info.SetValue(user, audiofile.Question.FirstAnswer.IsRight);
                _dbContext.SaveChanges();
            }
            if (secondbtn != null)
            {
                UserAnswers.AddAnswer(audiofile.Question.SecondAnswer.IsRight);
                info.SetValue(user, audiofile.Question.SecondAnswer.IsRight);
                _dbContext.SaveChanges();
            }

            if (id < 21)
            {
                return(RedirectToAction("Question", new { Id = id + 1 }));
            }
            else
            {
                return(RedirectToAction("YourResult"));
            }
        }
Esempio n. 3
0
        public IActionResult SingQuestion()
        {
            int          Id     = int.Parse(this.RouteData.Values["id"].ToString());
            int?         userId = HttpContext.Session.GetInt32("UserId");
            var          user   = _dbContext.Users.First(a => a.Id == userId);
            PropertyInfo info   = user.GetType().GetProperty($"Answer{Id}");


            var          waveResampler    = new Resampler(null);
            Sound        freqencyDetector = new Sound();
            List <float> result           = freqencyDetector.DetectFrequency(waveResampler);
            float        mainFrequency    = FrequencyFilter.CalculateMainFreq(result);

            if (Id == 19)
            {
                FrequencyClassificator FreqClass = new FrequencyClassificator(330);
                UserAnswers.AddAnswer(FreqClass.Validate(mainFrequency));
                info.SetValue(user, FreqClass.Validate(mainFrequency));
                _dbContext.SaveChanges();
                return(RedirectToAction("Question", new { Id = Id + 1 }));
            }
            else if (Id == 20)
            {
                FrequencyClassificator FreqClass = new FrequencyClassificator(440);
                UserAnswers.AddAnswer(FreqClass.Validate(mainFrequency));
                info.SetValue(user, FreqClass.Validate(mainFrequency));
                _dbContext.SaveChanges();
                return(RedirectToAction("YourResult"));
            }
            else
            {
                return(null);
            }
        }