In Progress: Restructuring to allow navigation for modular consumption.

-Really in progress here...nothing definite.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Navigation pulled out into its own project. InProgress: IStudyPartner

-Navigation is a little better, abstracted into its own project.  Still
needs work, but working as well as it was before.
-Changed "home" page to StudyViewModel.
-Started on NavigationSets, for a better way to navigate/organize
navigation.

-Added basic, cheap loginfailed handling.  Not really secure against a
brute force attack that modifies client code I don't think.
-Working on Study Partner stuff.  Implementing a basic CycleStudyPartner.
This will use extra data (CycleStudyDataEdit or something similar) to
to make decisions on what to study.  Right now, I'm thinking only of
collecting the user's native language.  Which reminds me..

-Need to remove user's native language from database and put it in the
CycleStudyData's database.  This should be separate I think, not
directly associated with User or Language Tables, but I will have to think
about this.  I'm tired but current thinking is: Any study information
should be thought of as self-contained, "viewing" the study process on its
own.  So, we are using our current data access layer because of convenience
but ideally a study partner is a pluggable entity that can handle its own
data.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
StudyData -Edit, -Dal, -Dto, -Tests. Propagated to SeedData. Reorganized.

-Had to put StudyDataEdit and whatnot into Business project.  Had it
in the separate Study project, but Csla DataPortal wouldn't play nicely,
so it was a "quick and easy" workaround to just put it in the Business
project.  It's not as cleanly separated, but it's not too horrible either.
-Put in SeedData the StudyDataDto that says English is the native language.
-Reorganized by making some folders for Exceptions.
-Still working on implementing navigation and study completion, etc.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: CycleStudyPartner.  Navigation working better.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: TranslationRetriever

-Good ol async without await and all that really bites.  Still
trying to figure out how to do this relatively cleanly.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Lots of changes.  Jeeez.

-Added LanguageDal.Fetch(languageText);
-Added PhraseDal.New(languageText).  Actually this is adjusting
already used .New(object criteria) and checking if criteria is string.
With if it is string, then it is assumed to be the languageText, and
creates the new PhraseEdit loading it with that language.  Propagated
changes necessary for this.
-Moved IStudyPartner and IAskUserExtraData to Silverlight project. Not
sure if I should move to pluggable architecture for resolution of
IStudyPartner or just have my default study partners in the Silverlight
project and worry about a more pluggable dynamic composition later.
I'm leaning towards the former.
-Created TranslationRetriever(phrases) to make it easier to create
a translation with given phrases as children.  The phrases may start
out as objects not marked as children, so this copies them to
newly added children of Translation.Phrases.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Simple Study working with Bing Auto-translate functionality.

-Auto-Translate Baby!!
-Uses Bing AppId, not Azure Marketplace, so it's not legit.  I need
a "redirect uri" to get the Azure Marketplace version going.  I suppose
I will be making the switch to the Azure Marketplace once I have a
website with this application running.
-No tests yet.
-It's not a real implementation.  Just a simple one.  I need to do a real-
deal study partner now.
-Removed separate .Study project and included in .Silverlight for
convenience.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Refactored QuestionAnswerCallback with Args.  Starting on better partner.

-Changed QuestionAnswerCallback to use (object sender,
Args.QuestionAnswerArgs e).
-Changing IGetStudyData to use callback instead of event completed.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Creating History Publishing Framework.

-To be used for publishing event information on the phrase level, e.g.
PhraseCreatedEvent.  Any interested entity will be able to listen to this
stream, or look at history of stream to create their opinions of
the levels of investment in particular phrases/translations.  Metrics
will use it, StudyPartners will use it.

-Interfaces so far: IHistoryEvent, IHistoryPublisher

-Bases so far: HistoryEventBase, SinglePhraseEventBase,
ParentPhraseChildPhraseEventBase

-Events so far: ParentPhraseSpawnedChildPhraseEvent,
PhraseCreatedFromScratchEvent, PhraseReviewedEvent,
PhraseViewedOnScreenEvent

-Publish class created, but need to fill it out more with default events.
-It uses singleton pattern, but the instance is called "the".  The
actual events will be published using Event<eventtype>(event params),
so an example would be Publish.The.Event<PhraseCreatedEvent>(phrase);
-I may take off the "Event" at the end of the naming convention for this,
but I'm not sure about it at the moment.  It would indeed make this
publish statement look slightly cooler, but it would lose any
conventionality I might add later on.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Working on UI workflow.  "I Want To Learn..." button.

-Trying to focus on the use case I personally am most interested in:
Learning a song in a foreign language.
-So creating a page with "I want to learn..." buttons.  In this case,
it is called IWantToLearnASong.  The user will input the lyrics to the song
separating lines.  Then he will learn line by line the song's translation
into his own native language.  Then, to reinforce/review, he will simply
sing the song, or if not possible, read the song, and so on.
-I'm having to force myself to think of these use cases.  Future use
cases will be: IWantToLearnAScene, IWantToLearnAStory,
IWantToLearnAVocabList, IWantToLearnHowToSayTheseThings.
-IWantToLearnHowToSayTheseThings is probably the next one to do, as it
goes the other direction: From user's native language to foreign
language, whereas these others start with foreign and translate into
user's native language.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: IWantToLearnASongViewModel

-Working on parsing a saved song.  I may need to go ahead and create
a "song" model class, but I'm not sure.  Perhaps just keywords, and
consider the first line to be the title of the song.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Still working on IWantToLearn stuff.

-Parses phrase properly (for the most part) into lines and words in the
song's language.
-Added BingTranslateHelper for getting language codes. Hard coded
strings though.
-Changed to Out-of-Browser app.  Not sure about it.  Looks great though.
-Added PhraseList.NewPhraseList(phraseTextsCriteria) to create a new
PhraseList with a list of phrasetexts in
a given languagetext.  If the languageText is not found in db, it will be
created.
-Added criteria class for above
PhraseList.NewPhraseList(phraseTextsCriteria)

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Creating LineEdit/List/Dto etc and propagating.


Signed-off-by: William Raiford <bill.mybiz@gmail.com>
LineEdit/List tests passing with mock provider.

-Added LineIds (references) to UserDto, so will need to implement this
in Ef provider's data model.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Ef LineEdit/List tests passing.

-If you run all tests at once, they don't pass.  Again, this is from my
bad design of tests that affects data.  If you run the tests with tag
"line" and "linelist", they pass.
-I'm not implementing StudyData at the moment.  I'm going back to
working on project with IWantToLearnASong.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Adding MultiLineTextEdit/List (for song/poem/limerick/whatever)

-Tests passing except for editing.  I'm not sure how I want to edit it
from the application's POV so I'm not fixing this at the moment.  Will
switch over to the app and design it how I want, and then come back to the
tests.
-Mock MultiLineTextDal implemented, no ef dal yet.
-Added one entry to SeedData, that uses both lines line0 and line1 in
SeedData.
-Moved custom business rules that were already in BusinessRules folder
into "Rules" namespace.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: Starting AddSongViewModel stuff.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: Save Song algorithm.  Parsing, creating, phrasing, words, oh my

-Stepping away, but want to save progress.  Almost done with implementing.
Then to testing!

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
InProgress: AddSong functionality.

-View up and going, working through hiccups on saving song.

Signed-off-by: William Raiford <bill.mybiz@gmail.com>
Add Song working for the most part.  InProgress: UI stuff.

-Add Song now takes in song lyrics text, parses, creates phrases for all
words, Lines/Phrases for each Line, and a Song that holds these LineEdits.
It persists all of these in the datastore (in a single transaction I think)
-Now I'm working on Navigation better to use navigation sets and to
"finalize" or at least more concretize my UI experience.  I'm currently
thinking of Navigation Sets, and how this would interact with a
navigation panel.
-Also, I went ahead and added ability for RandomPhraseStudyPartner to
study in other languages than english/spanish.  If the question is english,
it assumes you want to study the spanish phrase.  If the question
however is in italian or german, then it will automatically make the answer
english (my native language) and autotranslate it with the correct codes
for Bing auto translation.  This sometimes is causing some kind of terrible
crash however, and I think this has to do with the Bing translator service.
I need to wrap this in a custom translator interface with bing as one
implementation of the auto translate interface (service).

Signed-off-by: William Raiford <bill.mybiz@gmail.com>