/// <summary> /// Simply gets the phrase from a random line from any of the MultiLineTexts /// in the given multiLineTextList parameter. /// </summary> /// <returns></returns> private PhraseEdit GetRandomPhrase(MultiLineTextList multiLineTextList) { var relevantBeliefs = PhraseBeliefList.GetBeliefsAboutPhrasesInMultiLineTextsAsync(multiLineTextList); var randomMlt = RandomPicker.Ton.PickOne <MultiLineTextEdit>(multiLineTextList); var randomLine = RandomPicker.Ton.PickOne <LineEdit>(randomMlt.Lines); return(randomLine.Phrase); }
private async Task <ResultArgs <double> > GetPercentKnownAsync(PhraseEdit phrase) { #region CHECK CACHE var results = from entry in Cache where entry.Key.PhraseText == phrase.Text && entry.Key.LanguageText == phrase.Language.Text select entry; if (results.Count() == 1) { #region GIVE ANSWER FROM CACHE var entry = results.First(); var percentKnown = entry.Value; return(await new Task <ResultArgs <double> >(() => { return new ResultArgs <double>(percentKnown); })); #endregion } #endregion #region CHECK BELIEFS IN DB var beliefs = await PhraseBeliefList.GetBeliefsAboutPhraseAsync(phrase.Id); if (beliefs.Count <= 0) { //WE HAVE NO PRIOR BELIEFS ABOUT THIS PHRASE var percentKnownTask = GetPercentKnownAboutPhraseWithNoPriorBeliefsAsync(phrase); return(await percentKnownTask); } else { //WE HAVE BELIEFS ABOUT THIS PHRASE var percentKnownTask = GetPercentKnownAboutPhraseWithBeliefs(phrase, beliefs); return(await percentKnownTask); } #endregion }
private async Task <ResultArgs <double> > GetPercentKnownAboutPhraseWithBeliefs(PhraseEdit phrase, PhraseBeliefList beliefs) { //#if DEBUG // if (phrase.Text.Contains("amour") && phrase.Text.Contains("mon")) // System.Diagnostics.Debugger.Break(); //#endif if (beliefs.Count < 1) { throw new ArgumentException("beliefs.Count < 1. This method assumes that there is at least one belief about the phrase \n\n" + "Phrase.Text: " + phrase.Text); } ///FOR NOW, THIS JUST GETS THE MOST RECENT BELIEF AND GOES WITH THE STRENGTH OF THAT BELIEF. ///THIS IS ABSOLUTELY NOT HOW IT SHOULD BE BUT THAT IS WHY WE HAVE A "DEFAULT" ADVISOR AND ///EXTENSIBILITY FOR THIS. var results = from belief in beliefs orderby belief.TimeStamp select belief; var mostRecentBelief = results.Last(); var percentKnown = mostRecentBelief.Strength; return(await new Task <ResultArgs <double> >(() => { return new ResultArgs <double>(percentKnown); })); }