Пример #1
0
        /// <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");
        }
Пример #2
0
        /// <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");
        }