/// <summary> /// Converts an <see cref="Activity"/> to the most specific subclass of <see cref="Exercise"/> and fills in the /// relevant details. /// </summary> /// <param name="activity">An instance of <see cref="Activity"/> containing the data returned by an API /// endpoint.</param> /// <returns>A subclass of <see cref="Exercise"/> containing the data converted from <paramref name="activity"/>. /// </returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="activity"/> is <c>null</c>.</exception> /// <exception cref="NotImplementedException">Thrown if <paramref name="activity"/> is an activity type that is /// not supported by the app at this time.</exception> public static Exercise ConvertActivityToExercise(Activity activity) { if (activity == null) { throw new ArgumentNullException("activity"); } if (activity.GetType() == typeof(ActivityEssay)) { ActivityEssay resultEssay = (ActivityEssay)activity; EssayExercise essay = new EssayExercise() { Title = resultEssay.Title, Description = resultEssay.Description, MinimumWords = resultEssay.MinimumWords, MaximumWords = resultEssay.MaximumWords, Contents = resultEssay.PreliminaryText, Featured = resultEssay.Featured, Uid = resultEssay.Id, Language = resultEssay.Language, Level = resultEssay.Level }; foreach (string tag in resultEssay.Tags) { essay.Tags.Add(tag); } return(essay); } // TODO: support dictionary searches throw new NotImplementedException("The returned exercise type is not supported yet"); }
/// <summary> /// Converts an <see cref="Activity"/> to the most specific subclass of <see cref="Exercise"/> and fills in the /// relevant details. /// </summary> /// <param name="activity">An instance of <see cref="Activity"/> containing the data returned by an API /// endpoint.</param> /// <returns>A subclass of <see cref="Exercise"/> containing the data converted from <paramref name="activity"/>. /// </returns> /// <exception cref="ArgumentNullException">Thrown if <paramref name="activity"/> is <c>null</c>.</exception> /// <exception cref="NotImplementedException">Thrown if <paramref name="activity"/> is an activity type that is /// not supported by the app at this time.</exception> public static Exercise ConvertActivityToExercise(Activity activity) { if (activity == null) { throw new ArgumentNullException("activity"); } if (activity.GetType() == typeof(ActivityEssay)) { ActivityEssay resultEssay = (ActivityEssay)activity; EssayExercise essay = new EssayExercise() { Title = resultEssay.Title, Description = resultEssay.Description, MinimumWords = resultEssay.MinimumWords, MaximumWords = resultEssay.MaximumWords, PreliminaryText = resultEssay.PreliminaryText, Contents = (resultEssay.UserActivity != null) ? ((UserActivityEssay)resultEssay.UserActivity).Text : string.Empty, Featured = resultEssay.Featured, Uid = resultEssay.Id, Language = resultEssay.Language, Level = resultEssay.Level }; foreach (string tag in resultEssay.Tags) { essay.Tags.Add(tag); } UserActivity uActivity = resultEssay.UserActivity; if (uActivity != null) { UserActivityEssay uActivityEss = uActivity as UserActivityEssay; if (uActivityEss != null) { if (!string.IsNullOrEmpty(uActivityEss.Text)) { essay.Contents = uActivityEss.Text; } } } return(essay); } if (activity.GetType() == typeof(ActivityDictionarySearch)) { ActivityDictionarySearch resultDictSearch = (ActivityDictionarySearch)activity; DictionarySearchExercise dictionarySearch = new DictionarySearchExercise() { Featured = resultDictSearch.Featured, Uid = resultDictSearch.Id, Language = resultDictSearch.Language, Level = resultDictSearch.Level }; UserActivity uActivity = resultDictSearch.UserActivity; if (uActivity != null) { UserActivityDictionarySearch uActivityDs = uActivity as UserActivityDictionarySearch; if (uActivityDs != null) { if (!string.IsNullOrEmpty(uActivityDs.Word)) { dictionarySearch.Word = uActivityDs.Word; } } } return(dictionarySearch); } throw new NotImplementedException("The returned exercise type is not supported yet"); }