Exemple #1
0
        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) { }
        }
Exemple #2
0
        //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));
        }
Exemple #4
0
        //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 }));
            }
        }
Exemple #6
0
        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();
            }
        }
Exemple #8
0
        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";
            }
        }
Exemple #10
0
        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();
 }
Exemple #14
0
        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);
            }
        }
Exemple #15
0
        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;
        }
Exemple #17
0
        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();
 }