public GameViewModel(AmericanQuestion question, int score) { try { AmericanQuestion a = question; Answer[] options = new Answer[4]; Random r = new Random(); int num = r.Next(0, 4); options[num] = new Answer { text = a.CorrectAnswer, color = new Color(33, 205, 47), }; for (int i = 0, optionNum = 0; i < options.Length; i++) { if (options[i] == null) { options[i] = new Answer { text = a.OtherAnswers[optionNum], color = new Color(252, 13, 13), }; optionNum++; } } this.Options = options; this.Question = a; this.QuestionText = a.QText; this.CorrectAnswerIndex = num; this.Score = score; } catch (Exception e) { } }
//This method gets from the server a random question if it does not suceed it returns null (no previous login is required) public async Task <AmericanQuestion> GetRandomQuestion() { try { HttpResponseMessage response = await this.client.GetAsync($"{this.baseUri}/GetRandomQuestion"); if (response.IsSuccessStatusCode) { JsonSerializerOptions options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; string content = await response.Content.ReadAsStringAsync(); AmericanQuestion q = JsonSerializer.Deserialize <AmericanQuestion>(content, options); if (q.QText == null || q.CorrectAnswer == null || (q.OtherAnswers.Length < 3)) { return(await GetRandomQuestion()); } return(q); } else { return(null); } } catch (Exception e) { Console.WriteLine(e.Message); return(null); } }
// POST: Teacher/DisplayAmericanQuestion //[HttpPost] //[ValidateAntiForgeryToken] public ActionResult DisplayAmericanQuestion(long ActivityId) { AmericanQuestionData quesData = (AmericanQuestionData)rsContext.getActivity(ActivityId); TeacherData teacherData = rsContext.getTeacher(User.Identity.Name); if (teacherData == null) { throw new ArgumentNullException(nameof(teacherData)); } //RoomData roomData = teacherData.getRoomData(); RoomData roomData = rsContext.getRoom(teacherData.RoomId); if (roomData == null) { throw new ArgumentNullException(nameof(roomData)); } roomData.updateCurrentActivityId(quesData.id); rsContext.SaveChanges(); AmericanQuestion ques = Adapting.getAmericanQuestionFromData(quesData); return(View(ques)); }
//This method delete (!) a question in the server database. A previous login is required! The nick name in the question must match the logged in user! //it returns true is succeeded or false otherwise public async Task <bool> DeleteQuestion(AmericanQuestion q) { try { JsonSerializerOptions options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; string json = JsonSerializer.Serialize <AmericanQuestion>(q, options); StringContent content = new StringContent(json, Encoding.UTF8, "application/json"); HttpResponseMessage response = await this.client.PostAsync($"{this.baseUri}/DeleteQuestion", content); if (response.IsSuccessStatusCode) { string jsonContent = await response.Content.ReadAsStringAsync(); bool b = JsonSerializer.Deserialize <bool>(jsonContent, options); return(b); } else { return(false); } } catch (Exception e) { Console.WriteLine(e.Message); return(false); } }
public ActionResult SaveAmericanQuestion(AmericanQuestion ques) { TeacherData teacherData = rsContext.getTeacher(User.Identity.Name); if (ques.expID == -1) { ques.RoomId = teacherData.RoomId; AmericanQuestionData aqData = Adapting.getAmericanQuestionAsData(ques); rsContext.addActivity(aqData); rsContext.SaveChanges(); return(RedirectToDashboard()); } else { ques.RoomId = 0; AmericanQuestionData aqData = Adapting.getAmericanQuestionAsData(ques); rsContext.addActivity(aqData); ExperimentData experimentData = (ExperimentData)rsContext.getActivity(ques.expID); aqData.experimentOrder = experimentData.activities.Count; experimentData.addStep(aqData); rsContext.SaveChanges(); return(RedirectToAction("EditExperiment", new { ExpID = ques.expID })); } }
private async void Button_Clicked(object sender, EventArgs e) { //Example of how to use the proxy! TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion q = await proxy.GetRandomQuestion(); //tq.Wait(); //AmericanQuestion q = tq.Result; User user = new User { Email = "*****@*****.**", NickName = "testNickName", Password = "******" }; bool tu = await proxy.RegisterUser(user); if (tu) { AmericanQuestion nq = new AmericanQuestion { QText = "Who is the founder of Testla?", CorrectAnswer = "Elon Musk", OtherAnswers = new string[] { "Steve Jobs", "Bill Gates", "George Constanza" }, CreatorNickName = "testNickName" }; bool nqt = await proxy.PostNewQuestion(nq); if (nqt) { bool dt = await proxy.DeleteQuestion(nq); } } }
public async void AddQuestion() { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); App app = (App)App.Current; User u = app.CurrentUser; AmericanQuestion q = new AmericanQuestion { QText = this.questionText, CorrectAnswer = this.correctAnswer, OtherAnswers = new string[] { wrongAnswer1, wrongAnswer2, wrongAnswer3 }, CreatorNickName = u.NickName }; bool succeeded = await proxy.PostNewQuestion(q); if (!succeeded) { Message = "Question was not added"; } else { Message = "Question was added successfully!"; //await App.Current.MainPage.Navigation.PopAsync(); } }
public EditQuestion(AmericanQuestion q) { EditQuestionViewModel context = new EditQuestionViewModel(q); context.Pop += () => Navigation.PopAsync(); this.BindingContext = context; InitializeComponent(); }
async void AddQ() { string[] arr = new string[3]; arr[0] = Option1; arr[1] = Option2; arr[2] = Option3; //User u = JsonSerializer.Deserialize<User>(content, serializerOptions); //User u = (User)App.Current.Properties["User"]; App app = (App)App.Current; User u = app.CurrentUser; AmericanQuestion a = new AmericanQuestion { CorrectAnswer = this.CorrectAnswer, QText = this.Question, OtherAnswers = arr, CreatorNickName = u.NickName, }; TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); bool b = await proxy.PostNewQuestion(a); u.Questions.Add(a); if (b) { //AmericanQuestion q = await proxy.GetRandomQuestion(); //string[] options = new string[4]; //Random r = new Random(); //int num = r.Next(0, 4); //options[num] = q.CorrectAnswer; //for (int i = 0, optionNum = 0; i < options.Length; i++) //{ // if (options[i] == null) // { // options[i] = q.OtherAnswers[optionNum]; // optionNum++; // } //} AmericanQuestion question = await proxy.GetRandomQuestion(); Page p = new Game(question, 0); //GameViewModel game = (GameViewModel)p.BindingContext; //game.Options = options; //game.Question = a; //game.QuestionText = a.QText; //game.Score = 0; if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } } else { Label = "Something went wrong! Please try again"; } }
public Game(AmericanQuestion a, int score) { GameViewModel context = new GameViewModel(a, score); //Register to the event so the view model will be able to navigate context.NavigateToPageEvent += NavigateToAsync; this.BindingContext = context; InitializeComponent(); }
async void PlayGame() { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion amricanQuestion = await proxy.GetRandomQuestion(); Page p = new Game(amricanQuestion, 0); if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } }
// GET: Activities/DisplayAmericanQLogForStudent public ActionResult DisplayAmericanQLogForStudent(long aqID, string StudentPhone) { ActivityData activityData = rsContext.getActivity(aqID); AmericanQuestion aq = Adapting.getAmericanQuestionFromData((AmericanQuestionData)activityData); AnswerByPhone answer = Adapting.getAnswerByPhoneFromData(rsContext.getAnswerByPhoneAndActivityID(aq.id, StudentPhone, aq.RoomId)); Student student = Adapting.getStudentFromData(rsContext.getStudent(StudentPhone, answer.RoomID)); TempData["StudentAnswer"] = answer.Answer; TempData["StudentName"] = student.FirstName + " " + student.LastName; return(View(aq)); }
public MultipleChoiceQuestionPage(Attraction attraction) { InitializeComponent(); this.mistakes = 0; gc = GameController.getInstance(); subtitles.Source = ServerConection.URL_MEDIA + "subtitles.jpg"; info.Source = ServerConection.URL_MEDIA + "info.jpg"; playVideo.Source = ServerConection.URL_MEDIA + "playVideo.jpg"; this.aq = gc.currentTrip.GetCurrentAttraction().americanQuestion; attractionQuestion.Text = gc.GetCurrentLanguageText(aq.question); this.attraction = attraction; answersInitialize(); }
async void PlayGame() { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion amricanQuestion = await proxy.GetRandomQuestion(); Page p = new Game(amricanQuestion, 0); GameViewModel game = (GameViewModel)p.BindingContext; game.Score = 0; if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } }
async void OptionClick(Object o) { if (o is Answer) { if (((Answer)o).text.Equals(Question.CorrectAnswer)) { Score++; } } if (Score >= 3) { bool isLoggedIn = App.Current.Properties.ContainsKey("IsLoggedIn") ? Convert.ToBoolean(App.Current.Properties["IsLoggedIn"]) : false; Page p; if (!isLoggedIn) { p = new LogIn(); LogInViewModel log = (LogInViewModel)p.BindingContext; log.NextPage = new AddQuestion(); } else { p = new AddQuestion(); AddQuestionViewModel add = (AddQuestionViewModel)p.BindingContext; TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion amricanQuestion = await proxy.GetRandomQuestion(); add.NextPage = new Game(amricanQuestion, 0); } if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } } else { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion amricanQuestion = await proxy.GetRandomQuestion(); Page p = new Game(amricanQuestion, Score); if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } } }
async void RemoveQuestion(AmericanQuestion a) { if (QuestionList.Contains(a)) { try { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); await proxy.DeleteQuestion(a); QuestionList.Remove(a); } catch (Exception e) { } } Counter++; Able = true; }
async void Log() { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); User u = await proxy.LoginAsync(Email, Password); if (u != null) { App a = (App)App.Current; a.CurrentUser = u; try { await SecureStorage.SetAsync("email", Email); await SecureStorage.SetAsync("password", Password); } catch { } Application.Current.Properties["IsLoggedIn"] = Boolean.TrueString; Page p = null; if (NextPage != null) { if (NextPage is AddQuestion) { AddQuestionViewModel add = (AddQuestionViewModel)NextPage.BindingContext; AmericanQuestion amricanQuestion = await proxy.GetRandomQuestion(); add.NextPage = new Game(amricanQuestion, 0); p = NextPage; } } else { p = new HomeWhenLogged(); } if (NavigateToPageEvent != null) { NavigateToPageEvent(p); } } else { Label = "Email or password is incorrect. Please try again"; } }
// GET: Student/ViewRoomOrWaitingScreen public ActionResult ViewRoomOrWaitingScreen(StudentLoginViewModel model) { RoomData roomData = rsContext.getRoom(model.Room); ActivityData activityData = rsContext.getActivity(roomData.CurrentActivityId); if (activityData == null) { //Waiting Screen return(RedirectToAction("Wait", model)); } else { if (activityData is TrueFalseQuestionData) { //True/False Question TrueFalseQuestion tfq = (TrueFalseQuestion)Adapting.getTrueFalseQuestionFromData((TrueFalseQuestionData)activityData); return(RedirectToAction("TrueFalseQuestion", new { expId = -1, currActivityIndex = -1, activityId = tfq.id, numOfActivities = 0, studentPhone = model.PhoneNumber, studentRoom = model.Room })); } else if (activityData is ShortAnswerQuestionData) { //Short Answer Question ShortAnswerQuestion saq = (ShortAnswerQuestion)Adapting.getShortAnswerQuestionFromData((ShortAnswerQuestionData)activityData); return(RedirectToAction("ShortAnswerQuestion", new { expId = -1, currActivityIndex = -1, activityId = saq.id, numOfActivities = 0, studentPhone = model.PhoneNumber, studentRoom = model.Room })); } else if (activityData is AmericanQuestionData) { //American Answer Question AmericanQuestion aq = (AmericanQuestion)Adapting.getAmericanQuestionFromData((AmericanQuestionData)activityData); return(RedirectToAction("AmericanQuestion", new { expId = -1, currActivityIndex = -1, activityId = aq.id, numOfActivities = 0, studentPhone = model.PhoneNumber, studentRoom = model.Room })); } else if (activityData is ExperimentData) { // Experiment Experiment exp = (Experiment)Adapting.getExperimentFromData((ExperimentData)activityData); if (exp.ActiveExpID == 0) { //Waiting Screen Thread.Sleep(2000); return(RedirectToAction("Wait", model)); } return(RedirectToAction("GroupCreation", new { expId = exp.id, studentPhone = model.PhoneNumber, studentRoom = model.Room, currActivityIndex = 0 })); } } return(View()); }
public void OnSelectionChanged(Object obj) { if (obj is AmericanQuestion) { AmericanQuestion chosenQuestion = (AmericanQuestion)obj; Page questionPage = new ShowQuestion(); ShowQuestionViewModel qContext = new ShowQuestionViewModel { QText = chosenQuestion.QText, QAnswer = chosenQuestion.CorrectAnswer, QNotAnswers = chosenQuestion.OtherAnswers }; questionPage.BindingContext = qContext; if (NavigateToPageEvent != null) { NavigateToPageEvent(questionPage); } } }
private async void NewQuestion() { TriviaWebAPIProxy proxy = TriviaWebAPIProxy.CreateProxy(); AmericanQuestion question = await proxy.GetRandomQuestion(); }