IEnumerator GetAllQuestions() { string questionUrl = StaticVariable.url + "question/AllQuestions"; UnityWebRequest questionRequest = UnityWebRequest.Get(questionUrl); yield return(questionRequest.SendWebRequest()); if (questionRequest.isNetworkError || questionRequest.isHttpError) { Debug.Log(questionRequest.error); yield break; } else { Debug.Log("Get all questions successfully"); } JSONNode questionData = JSON.Parse(questionRequest.downloadHandler.text); for (int i = 0; i < questionData.Count; i++) { QuestionEntry questionEntry = new QuestionEntry { questionId = questionData[i]["id"].ToString(), title = questionData[i]["problem"], accuracy = questionData[i]["userAnswered"] == 0 ? 0.0 : (double)questionData[i]["userCorrect"] / questionData[i]["userAnswered"] }; Debug.Log("Added"); questions.Add(questionEntry); } Display(choice); }
public void AddQuestion(string _subject, string _question, List <Answer> _answers) { if (questionDB.list.Any(item => item.subject == _subject)) { foreach (QuestionList _questionList in questionDB.list) { if (_questionList.subject == _subject) { QuestionEntry entry = new QuestionEntry { question = _question, answers = _answers }; _questionList.questionEntries.Add(entry); } } } else { List <QuestionEntry> entryList = new List <QuestionEntry>(); entryList.Add(new QuestionEntry { question = _question, answers = _answers }); questionDB.list.Add(new QuestionList { subject = _subject, questionEntries = entryList }); } }
public void ModifyQuestionDB() { QuestionEntry newEntry = new QuestionEntry(_selectedThemeValues, _question.text, _answer1.text, _answer2.text, _answer3.text, _answer4.text, _answer5.text, _toggle1.isOn, _toggle2.isOn, _toggle3.isOn, _toggle4.isOn, _toggle5.isOn); _database.ModifyQuestionToDatabase(newEntry, _selectedQuestionID); actionText.text = "Modified"; }
public object Any(Ask request) { AskResponse response = new AskResponse(); response.Result = ErrorCode.OK; Guid creatorId = UserSession.GetUserId(); DateTime dateTime = DateTime.UtcNow; QuestionEntry questionEntry = new QuestionEntry(creatorId, Guid.NewGuid()) { Title = request.Title, Detail = request.Detail, Creation = dateTime, Modification = dateTime, Tags = string.Join(",", request.Tags).ToLowerInvariant() }; TableRepository tableRepository = new TableRepository(); tableRepository.InsertOrReplace(questionEntry, Tables.Questions); IndexHelper.CreateIndex(questionEntry.GetId(), request.Title + " " + questionEntry.Tags, Tables.Questions); return(response); }
public void AddQuestionToDB() { QuestionEntry newEntry = new QuestionEntry(_selectedThemeValues, _question.text, _answer1.text, _answer2.text, _answer3.text, _answer4.text, _answer5.text, _toggle1.isOn, _toggle2.isOn, _toggle3.isOn, _toggle4.isOn, _toggle5.isOn); string key = _database.AddQuestionToDatabase(newEntry); _selectedQuestionID = key; actionText.text = "Created"; //_selectedQuestionValues = _questionsValues[_questionsIDs.IndexOf(key)]; }
public void ModifyQuestionToDatabase(QuestionEntry entry, string key) { Dictionary <string, object> entryValues = entry.ToDictionary(); Dictionary <string, object> childUpdates = new Dictionary <string, object>(); childUpdates[key] = entryValues; FirebaseDatabase.DefaultInstance.RootReference.Child("preguntas").UpdateChildrenAsync(childUpdates); }
public static ExtendedQuestionEntry ExtendQuestion(QuestionEntry question, Int32 points) { // TODO Research a way to extend the question without creating an entire new instance return(new ExtendedQuestionEntry { Question = question.Question, Answer = question.Answer, PointValue = points }); }
public string AddQuestionToDatabase(QuestionEntry entry) { // Create new entry at /user-scores/$userid/$scoreid and at // /leaderboard/$scoreid simultaneously string key = FirebaseDatabase.DefaultInstance.RootReference.Child("preguntas").Push().Key; Dictionary <string, object> entryValues = entry.ToDictionary(); Dictionary <string, object> childUpdates = new Dictionary <string, object>(); childUpdates[key] = entryValues; FirebaseDatabase.DefaultInstance.RootReference.Child("preguntas").UpdateChildrenAsync(childUpdates); return(key); }
public object Any(Answer request) { Guid userId = UserSession.GetUserId(); TableRepository tableRepository = new TableRepository(); // create answers AnswerEntry answerEntry = tableRepository.Get <AnswerEntry>(Tables.Answers, request.QuestionId, userId); if (answerEntry == null) { DateTime dateTime = DateTime.UtcNow; answerEntry = new AnswerEntry(request.QuestionId, userId) { Content = request.Content, Creation = dateTime, Modification = dateTime, Votes = 0 }; // update the answers count QuestionEntry questionEntry = tableRepository.Get <QuestionEntry>(Tables.Questions, request.QuestionOwnerId, request.QuestionId); if (questionEntry != null) { questionEntry.Answers++; tableRepository.InsertOrMerge(questionEntry, Tables.Questions); } } else { // perform an edit answerEntry.Content = request.Content; answerEntry.Modification = DateTime.UtcNow; } tableRepository.InsertOrMerge(answerEntry, Tables.Answers); AnswerResponse response = new AnswerResponse { Result = ErrorCode.OK }; return(response); }
private static void AddIssue(DataRow candidate, QuestionEntry question) { var item = new HtmlDiv(); item.AddTo(question.Container, "info-item issue-item"); var row = question.QuestionGroup.FirstOrDefault( r => r.PoliticianKey().IsEqIgnoreCase(candidate.PoliticianKey())); if (row == null) // no answer { item.AddCssClasses("empty-item"); } else { item.InnerText = row.Answer(); } }
private List <QuestionEntry> Sort(List <QuestionEntry> questionEntryList, int criteria) { // sort by question ID if (criteria == 0) { for (int i = 0; i < questionEntryList.Count; i++) { for (int j = i + 1; j < questionEntryList.Count; j++) { if (int.Parse(questionEntryList[j].questionId) < int.Parse(questionEntryList[i].questionId)) { QuestionEntry temp = questionEntryList[i]; questionEntryList[i] = questionEntryList[j]; questionEntryList[j] = temp; } } } } // sort by accuracy low to high else if (criteria == 1) { for (int i = 0; i < questionEntryList.Count; i++) { for (int j = i + 1; j < questionEntryList.Count; j++) { if (questionEntryList[j].accuracy < questionEntryList[i].accuracy) { QuestionEntry temp = questionEntryList[i]; questionEntryList[i] = questionEntryList[j]; questionEntryList[j] = temp; } } } } // sort by accuracy high to low else if (criteria == 2) { for (int i = 0; i < questionEntryList.Count; i++) { for (int j = i + 1; j < questionEntryList.Count; j++) { if (questionEntryList[j].accuracy > questionEntryList[i].accuracy) { QuestionEntry temp = questionEntryList[i]; questionEntryList[i] = questionEntryList[j]; questionEntryList[j] = temp; } } } } // sort by title else if (criteria == 3) { for (int i = 0; i < questionEntryList.Count; i++) { for (int j = i + 1; j < questionEntryList.Count; j++) { if (string.Compare(questionEntryList[j].title, questionEntryList[i].title) < 0) { QuestionEntry temp = questionEntryList[i]; questionEntryList[i] = questionEntryList[j]; questionEntryList[j] = temp; } } } } return(questionEntryList); }
public object Any(Vote request) { Guid userId = UserSession.GetUserId(); VoteResponse response = new VoteResponse { Result = ErrorCode.OK, }; TableRepository tableRepository = new TableRepository(); UserQuestionEntry userQuestionEntry = tableRepository.Get <UserQuestionEntry>(Tables.UserQuestion, request.QuestionId, userId); // Création d'un nouveau vote if (userQuestionEntry == null) { DateTime dateTime = DateTime.UtcNow; userQuestionEntry = new UserQuestionEntry(request.QuestionId, userId) { Creation = dateTime, Modification = dateTime }; } else { userQuestionEntry.Modification = DateTime.UtcNow; } Guid target = request.VoteTarget == VoteTarget.Question ? request.QuestionId : request.OwnerId; HashSet <string> votesUp = new HashSet <string>(userQuestionEntry.VotesUp?.Split('|') ?? new string[] { }); HashSet <string> votesDown = new HashSet <string>(userQuestionEntry.VotesDown?.Split('|') ?? new string[] { }); VoteKind oldValue = VoteKind.None; if (votesUp.Contains(target.ToString())) { oldValue = VoteKind.Up; } else if (votesDown.Contains(target.ToString())) { oldValue = VoteKind.Down; } response.VoteKind = request.VoteKind; votesUp.Remove(target.ToString()); votesDown.Remove(target.ToString()); if (response.VoteKind == oldValue) { response.VoteKind = VoteKind.None; } else { switch (response.VoteKind) { case VoteKind.Up: votesUp.Add(target.ToString()); break; case VoteKind.Down: votesDown.Add(target.ToString()); break; } } userQuestionEntry.VotesUp = votesUp.Join("|"); userQuestionEntry.VotesDown = votesDown.Join("|"); if (request.VoteTarget == VoteTarget.Answer) { AnswerEntry answerEntry = tableRepository.Get <AnswerEntry>(Tables.Answers, request.QuestionId, request.OwnerId); answerEntry.Votes -= (int)oldValue; answerEntry.Votes += (int)response.VoteKind; tableRepository.InsertOrMerge(answerEntry, Tables.Answers); response.VoteValue = answerEntry.Votes; // badges if (response.VoteKind == VoteKind.Up) { switch (answerEntry.Votes) { case 1: AllBadges.Approved.CreateIfNotExist(tableRepository, answerEntry.GetAnswerOwnerId()); break; case 10: AllBadges.NiceAnswer.CreateForQuestion(tableRepository, answerEntry.GetAnswerOwnerId(), request.QuestionId); break; case 25: AllBadges.GoodAnswer.CreateForQuestion(tableRepository, answerEntry.GetAnswerOwnerId(), request.QuestionId); break; case 100: AllBadges.GreatAnswer.CreateForQuestion(tableRepository, answerEntry.GetAnswerOwnerId(), request.QuestionId); break; } } } else { QuestionEntry questionEntry = tableRepository.Get <QuestionEntry>(Tables.Questions, request.OwnerId, request.QuestionId); questionEntry.Votes -= (int)oldValue; questionEntry.Votes += (int)response.VoteKind; tableRepository.InsertOrMerge(questionEntry, Tables.Questions); response.VoteValue = questionEntry.Votes; // badges if (response.VoteKind == VoteKind.Up) { switch (questionEntry.Votes) { case 1: AllBadges.Padawan.CreateIfNotExist(tableRepository, questionEntry.GetOwnerId()); break; case 10: AllBadges.NiceQuestion.CreateForQuestion(tableRepository, questionEntry.GetOwnerId(), request.QuestionId); break; case 25: AllBadges.GoodQuestion.CreateForQuestion(tableRepository, questionEntry.GetOwnerId(), request.QuestionId); break; case 100: AllBadges.GreatQuestion.CreateForQuestion(tableRepository, questionEntry.GetOwnerId(), request.QuestionId); break; } } } // insert le vote tableRepository.InsertOrReplace(userQuestionEntry, Tables.UserQuestion); // badges if (response.VoteKind == VoteKind.Up) { AllBadges.Supporter.CreateIfNotExist(tableRepository, userId); } else if (response.VoteKind == VoteKind.Down) { AllBadges.Critic.CreateIfNotExist(tableRepository, userId); } return(response); }
public object Any(Answers request) { TableRepository tableRepository = new TableRepository(); CloudTable questionTable = tableRepository.GetTable(Tables.Questions); Guid questionId = Guid.Parse(request.Id); TableQuery <QuestionEntry> questionQuery = questionTable.CreateQuery <QuestionEntry>(); QuestionEntry questionEntry = (from k in questionQuery where k.RowKey == questionId.ToString() select k).SingleOrDefault(); if (questionEntry == null) { throw HttpError.NotFound("Such question do not exist"); } questionEntry.Views++; tableRepository.InsertOrMerge(questionEntry, Tables.Questions); CloudTable answerTable = tableRepository.GetTable(Tables.Answers); TableQuery <AnswerEntry> answerQuery = answerTable.CreateQuery <AnswerEntry>(); AnswerEntry[] answerEntries = (from k in answerQuery where k.PartitionKey == questionId.ToString() select k).ToArray(); UserQuestionEntry userQuestionEntry = UserSession.IsAuthenticated ? tableRepository.Get <UserQuestionEntry>(Tables.UserQuestion, questionId, UserSession.GetUserId()) : null; HashSet <string> votesUp = new HashSet <string>(userQuestionEntry?.VotesUp?.Split('|') ?? new string[] { }); HashSet <string> votesDown = new HashSet <string>(userQuestionEntry?.VotesDown?.Split('|') ?? new string[] { }); Func <Guid, VoteKind> getVoteKind = ownerId => { if (votesUp.Contains(ownerId.ToString())) { return(VoteKind.Up); } if (votesDown.Contains(ownerId.ToString())) { return(VoteKind.Down); } return(VoteKind.None); }; AnswersResponse answersResponse = new AnswersResponse { Id = questionEntry.GetId(), Creation = questionEntry.Creation, Owner = CreateUserCard(tableRepository, questionEntry.GetOwnerId()), Detail = questionEntry.Detail, Tags = questionEntry.Tags.SplitAndTrimOn(new char[] { ',' }), Title = questionEntry.Title, Views = questionEntry.Views, Votes = questionEntry.Votes, SelectedAnswer = questionEntry.SelectedAnswer, Answers = answerEntries.Select(k => new AnswerResult { Owner = CreateUserCard(tableRepository, k.GetAnswerOwnerId()), Creation = k.Creation, Content = k.Content, Votes = k.Votes, VoteKind = getVoteKind(k.GetAnswerOwnerId()) }).ToArray() }; // quest user vote for this question answersResponse.VoteKind = getVoteKind(questionId); answersResponse.Love = userQuestionEntry?.Love ?? false; return(answersResponse); }