public ActionResult Index() { var selectedTestItem = SpeakTestContainer.GetNextSpeakTestItem(); if (selectedTestItem == null) { return(RedirectToAction("TestResult", "Home")); } Session["selectedSpeakTestItem"] = selectedTestItem; return(View(selectedTestItem)); }
public async Task <ActionResult> PostFormData(HttpPostedFileBase file, string testType) { if (file.ContentLength < 1) { return(new HttpStatusCodeResult(HttpStatusCode.UnsupportedMediaType)); } TestItem selectedTestItem = Session["selectedTestItem"] as TestItem; SpeakTestItem selectedSpeakTestItem = Session["selectedSpeakTestItem"] as SpeakTestItem; if ((testType == "text" && selectedTestItem == null) || (testType == "speak" && selectedSpeakTestItem == null)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } string root = Server.MapPath("~/App_Data"); string fileName = string.Format("BodyPart_{0}", Guid.NewGuid()); string filePath = Path.Combine(root, fileName); file.SaveAs(filePath); string resultText = await Recognition(System.Web.Hosting.HostingEnvironment.MapPath(@"~/App_Data/spech text-d0a18cc9ed24.json"), filePath); resultText = resultText.ToLower(CultureInfo.GetCultureInfo("en-US")).Trim(); if (testType == "text") { if (selectedTestItem != null && selectedTestItem.Pronunciation == resultText.ToLower().Trim()) { TestContainer.SetTestItemStatus(selectedTestItem.Id, true); return(Json(new { Status = "OK", SpeechToText = resultText })); } if (selectedTestItem != null) { TestContainer.SetTestItemStatus(selectedTestItem.Id, false); } } else if (testType == "speak") { if (selectedSpeakTestItem != null) { if (selectedSpeakTestItem.Answer.Contains("|")) { var possibleAnswerList = selectedSpeakTestItem.Answer.Split('|').ToList(); foreach (var possibleAnswer in possibleAnswerList) { if (resultText.StartsWith(possibleAnswer)) { SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, true); return(Json(new { Status = "OK", SpeechToText = resultText })); } } } else if (resultText.StartsWith(selectedSpeakTestItem.Answer)) { SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, true); return(Json(new { Status = "OK", SpeechToText = resultText })); } } if (selectedSpeakTestItem != null) { SpeakTestContainer.SetSpeakTestItemStatus(selectedSpeakTestItem.Id, false); } } return(Json(new { Status = "FAIL", SpeechToText = resultText })); }