Esempio n. 1
0
        /// <summary>
        /// Called when an item in the exercise list is tapped.
        /// </summary>
        /// <param name="sender">The object sending the event.</param>
        /// <param name="e">The event parameters.</param>
        private async void ExerciseList_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            if (await ConnectivityCheck.AskToEnableConnectivity(this))
            {
                // TODO: support other exercise types
                try
                {
                    ExerciseApi   exerciseEndpoint = new ExerciseApi(App.OAuth2Account, ((EssayExercise)e.Item).Uid);
                    EssayExercise essay            = await Task.Run(async() => await exerciseEndpoint.CallEndpointAsExerciseModel()) as EssayExercise;

                    if (essay == null)
                    {
                        await this.DisplayAlert(Properties.Resources.Error, Properties.Resources.Exercise_UnableToDisplay, Properties.Resources.ButtonOK);
                    }
                    else
                    {
                        await this.Navigation.PushAsync(new EssayExerciseView(essay));
                    }
                }
                catch (UnsuccessfulApiCallException ex)
                {
                    Tools.Logger.Log("ExerciseList_ItemTapped", ex);
                    await this.DisplayAlert(Properties.Resources.Error, Properties.Resources.Exercise_UnableToDisplay, Properties.Resources.ButtonOK);
                }
            }
        }
Esempio n. 2
0
        public ResultEntity deleteExercise(int?exerciseId)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (exerciseId != null)
            {
                Exercise exercise = ExerciseApi.findByExerciseId(exerciseId);
                if (exercise != null)
                {
                    ExerciseApi.delete(exercise.exerciseId);
                    resultEntity.setState(1);
                    resultEntity.setMessage("习题删除成功!");
                }
                else
                {
                    resultEntity.setMessage("未找到对应习题!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 3
0
        /// <summary>
        /// Event handler
        /// </summary>
        /// <param name="sender">Sender param</param>
        /// <param name="e">evet param</param>
        private async void LoadButton_Clicked(object sender, EventArgs e)
        {
            try
            {
                ExerciseApi exAPI  = new ExerciseApi(App.OAuth2Account, this.ex.Uid);
                Exercise    result = await exAPI.CallEndpointAsExerciseModel();

                if (!(result is EssayExercise))
                {
                    throw new NotImplementedException(Properties.Resources.EssayExerciseViewExerciseTypeNotSupported);
                }

                await this.FillData((EssayExercise)result);
            }
            catch (NotImplementedException ex)
            {
                // This shouldn't happen
                await Tools.Logger.LogWithErrorMessage(this, "LoadButton_Clicked - This shouln't happen!", ex);
            }
            catch (UnsuccessfulApiCallException ex)
            {
                Tools.Logger.Log(this.GetType().ToString(), "LoadButton_Clicked method", ex);
            }
            catch (Exception ex)
            {
                Tools.Logger.Log(this.GetType().ToString(), "LoadButton_Clicked method", ex);
            }
        }
Esempio n. 4
0
        public ResultEntity findOneExerice(int?exerciseId)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (exerciseId != null)
            {
                Exercise exercise = ExerciseApi.findByExerciseId(exerciseId);
                if (exercise != null)
                {
                    if (exercise.exerciseType % 3 != 0)
                    {
                        List <ExerciseChoice> exerciseChoices = ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exerciseId);
                        resultEntity.setData(new ExerciseSet(exercise, exerciseChoices));
                    }
                    else
                    {
                        resultEntity.setData(new ExerciseSet(exercise));
                    }
                    resultEntity.setState(1);
                    resultEntity.setMessage("搜索习题成功!");
                }
                else
                {
                    resultEntity.setMessage("搜索习题失败!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 5
0
        public ResultEntity addExercise(Exercise exercise)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (exercise != null)
            {
                resultEntity.setData(ExerciseApi.insert(exercise));
                if (resultEntity.getData() != null)
                {
                    if (exercise.exerciseType <= 3)
                    {
                        setTotalScore(exercise.chapterId, "preview");
                    }
                    else
                    {
                        setTotalScore(exercise.chapterId, "review");
                    }
                    resultEntity.setState(1);
                    resultEntity.setMessage("创建习题成功!");
                }
                else
                {
                    resultEntity.setMessage("创建习题失败!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 6
0
        public ResultEntity alterExercise(Exercise exercise)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (exercise != null)
            {
                //fragile
                Exercise exercise1 = ExerciseApi.findByExerciseId(exercise.exerciseId);
                if (exercise1 != null)
                {
                    resultEntity.setData(ExerciseApi.insert(exercise));
                    resultEntity.setState(1);
                    resultEntity.setMessage("习题修改成功!");
                }
                else
                {
                    resultEntity.setMessage("未找到对应习题!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 7
0
        /// <summary>
        /// Refreshes the list containing the exercise history.
        /// </summary>
        /// <returns>True if everything was completed correctly</returns>
        /// <exception cref="UnsuccessfulApiCallException">Thrown if
        /// <see cref="ExerciseHistoryApi.CallEndpointAsObjectAsync()"/> fails.</exception>
        /// <exception cref="Exception">Thrown if something else fails.</exception>
        public async Task RefreshExerciseHistory()
        {
            List <Exercise>    historyWithResults = new List <Exercise>();
            ExerciseHistoryApi historyEndpoint    = new ExerciseHistoryApi(App.OAuth2Account);

            // These exceptions are handled in the view directly.
            IList <UserActivity> history = new List <UserActivity>();

            history = await historyEndpoint.CallEndpointAsObjectAsync().ConfigureAwait(false);

            // Performance
            ExerciseApi       exerciseEndpoint;
            Exercise          histEx;
            UserActivityEssay histActEssay;
            EssayExercise     histExEssay;

            foreach (UserActivity histAct in history)
            {
                try
                {
                    exerciseEndpoint = new ExerciseApi(App.OAuth2Account, histAct.ActivityId);
                    histEx           = await exerciseEndpoint.CallEndpointAsExerciseModel().ConfigureAwait(false);

                    if (histAct is UserActivityEssay && histEx is EssayExercise)
                    {
                        histActEssay          = (UserActivityEssay)histAct;
                        histExEssay           = (EssayExercise)histEx;
                        histExEssay.Contents  = histActEssay.Text;
                        histExEssay.Status    = histActEssay.Status;
                        histExEssay.Timestamp = histActEssay.Timestamp;
                    }
                    else
                    {
                        historyWithResults.Add(histEx);
                    }
                }
                catch (UnsuccessfulApiCallException ex)
                {
                    Tools.Logger.Log(this.GetType().ToString(), "RefreshExerciseHistory method - Internal UserActivity loop", ex);

                    // TODO: Add activity indicator
                    // this.SwitchActivityIndicator(false);
                }
                catch (Exception ex)
                {
                    Tools.Logger.Log(this.GetType().ToString(), "RefreshExerciseHistory method - Internal UserActivity loop", ex);

                    // TODO: Add activity indicator
                    // this.SwitchActivityIndicator(false);
                }
            }

            this._exerciseHistory = new ReadOnlyObservableCollection <Exercise>(new ObservableCollection <Exercise>(historyWithResults));
            this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("History"));
        }
Esempio n. 8
0
        public int?calculateScore(int?chapterId, int?studentId)
        {
            List <Exercise> exercises = ExerciseApi.findByChapterId(chapterId);
            int?            score     = 0;

            foreach (Exercise exercise in exercises)
            {
                score += int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).exerciseScore);
            }
            return(score);
        }
Esempio n. 9
0
        public void setTotalScore(int?chapterId, String type)
        {
            int type1 = 0;
            int type2 = 0;
            int type3 = 0;

            if (type.Equals("preview"))
            {
                type1 = 1;
                type3 = 2;
                type2 = 3;
            }
            else
            {
                type1 = 4;
                type3 = 5;
                type2 = 6;
            }
            //fragile
            List <Exercise> exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
            List <Exercise> temp      = new List <Exercise>();

            temp.AddRange(exercises);
            exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type3);
            temp.AddRange(exercises);
            exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
            temp.AddRange(exercises);
            int?total = 0;

            foreach (Exercise exercise in temp)
            {
                total += exercise.exercisePoint;
            }
            if (type.Equals("preview"))
            {
                //fragile
                ChapterNode chapterNode = ChapterContentApi.getByID(chapterId);
                chapterNode.exerciseTotal_1 = total;
                ChapterContentApi.insert(chapterNode);
            }
            else
            {
                ChapterNode chapterNode = ChapterContentApi.getByID(chapterId);
                chapterNode.exerciseTotal_2 = total;
                ChapterContentApi.insert(chapterNode);
            }
        }
Esempio n. 10
0
        public List <int?> exerciseScore(int?studentId, int?chapterId, String type)
        {
            int type1 = 0;
            int type2 = 0;
            int type3 = 0;

            if (type.Equals("preview"))
            {
                type1 = 1;
                type3 = 2;
                type2 = 3;
            }
            else
            {
                type1 = 4;
                type3 = 5;
                type2 = 6;
            }

            List <Exercise> exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
            List <int?>     scores    = new List <int?>();

            foreach (Exercise exercise in exercises)
            {
                if (!StudentExerciseScoreApi.existsByExerciseIdAndStudentId(exercise.exerciseId, studentId))
                {
                    return(null);
                }
                scores.Add(int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).exerciseScore));
            }
            exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type3);
            foreach (Exercise exercise in exercises)
            {
                scores.Add(int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).exerciseScore));
            }
            exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
            foreach (Exercise exercise in exercises)
            {
                if (StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).corrected != 0)
                {
                    scores.Add(int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).exerciseScore));
                }
            }
            return(scores);
        }
Esempio n. 11
0
        /// <summary>
        /// Refreshes the exercise history asynchronously.
        /// </summary>
        /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
        private static async Task <ReadOnlyObservableCollection <Exercise> > GetHistoryAsync()
        {
            List <Exercise>    historyWithResults = new List <Exercise>();
            ExerciseHistoryApi historyEndpoint    = new ExerciseHistoryApi(App.OAuth2Account);

            IEnumerable <UserActivity> history = new List <UserActivity>();

            history = await Task.Run(async() => await historyEndpoint.CallEndpointAsObjectAsync());

            // Remove dictionary searches (they are not meant to be displayed in the list).
            history = history.Where(x => x.GetType() != typeof(DictionarySearchExercise));

            // Preload all exercises in the list to improve performance.
            ExerciseApi exerciseEndpoint;

            foreach (UserActivity histAct in history)
            {
                exerciseEndpoint = new ExerciseApi(App.OAuth2Account, histAct.ActivityId);
                historyWithResults.Add(await Task.Run(async() => await exerciseEndpoint.CallEndpointAsExerciseModel()));
            }

            return(new ReadOnlyObservableCollection <Exercise>(new ObservableCollection <Exercise>(historyWithResults)));
        }
Esempio n. 12
0
        public ResultEntity answerOne(String answer, int?exerciseId, int?studentId)
        {
            ResultEntity         resultEntity         = new ResultEntity();
            StudentExerciseScore studentExerciseScore = new StudentExerciseScore(studentId, exerciseId, answer, 0.ToString());

            studentExerciseScore.corrected = 0;
            Exercise exercise = ExerciseApi.findByExerciseId(exerciseId);

            if (studentExerciseScore != null)
            {
                if (exercise.exerciseType % 3 != 0)
                {
                    if (answer.Equals(exercise.exerciseAnswer))
                    {
                        studentExerciseScore.corrected     = 1;
                        studentExerciseScore.exerciseScore = exercise.exercisePoint.ToString();
                    }
                }
                resultEntity.setData(StudentExerciseScoreApi.insert(studentExerciseScore));
                if (resultEntity.getData() != null)
                {
                    resultEntity.setState(1);
                    resultEntity.setMessage("答题成功 !");
                }
                else
                {
                    resultEntity.setMessage("答题失败!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 13
0
        public ResultEntity viewSomeAnswer(int?chapterId, int?studentId, String type)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (chapterId != null && studentId != null)
            {
                List <ExerciseSet> exerciseSets = new List <ExerciseSet>();
                int type1 = 0;
                int type2 = 0;
                int type3 = 0;
                if (type.Equals("preview"))
                {
                    type1 = 1;
                    type2 = 3;
                    type3 = 2;
                }
                else
                {
                    type1 = 4;
                    type2 = 6;
                    type3 = 5;
                }
                List <Exercise> exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
                foreach (Exercise exercise in exercises)
                {
                    if (StudentExerciseScoreApi.existsByExerciseIdAndStudentId(exercise.exerciseId, studentId) == false)
                    {
                        resultEntity.setMessage("学生未答题!");
                        resultEntity.setState(0);
                        return(resultEntity);
                    }
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId), StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).studentAnswer));
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type3);
                foreach (Exercise exercise in exercises)
                {
                    if (StudentExerciseScoreApi.existsByExerciseIdAndStudentId(exercise.exerciseId, studentId) == false)
                    {
                        resultEntity.setMessage("学生未答题!");
                        resultEntity.setState(0);
                        return(resultEntity);
                    }
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId), StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).studentAnswer));
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
                foreach (Exercise exercise in exercises)
                {
                    if (StudentExerciseScoreApi.existsByExerciseIdAndStudentId(exercise.exerciseId, studentId) == false)
                    {
                        resultEntity.setMessage("学生未答题!");
                        resultEntity.setState(0);
                        return(resultEntity);
                    }
                    exerciseSets.Add(new ExerciseSet(exercise, StudentExerciseScoreApi.findByExerciseIdAndStudentId(exercise.exerciseId, studentId).studentAnswer));
                }
                List <int?> scores = exerciseScore(studentId, chapterId, type);
                resultEntity.setData(new ExerciseSetsDetails(exerciseSets, scores));
                if (resultEntity.getData() != null)
                {
                    resultEntity.setState(1);
                    resultEntity.setMessage("查看成功!");
                }
                else
                {
                    resultEntity.setMessage("查看失败!");
                    resultEntity.setState(0);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 14
0
        public ResultEntity viewExercise(int?chapterId, String type)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (chapterId != null)
            {
                List <ExerciseSet> exerciseSets = new List <ExerciseSet>();
                int type1 = 0;
                int type2 = 0;
                int type3 = 0;
                if (type.Equals("preview"))
                {
                    type1 = 1;
                    type3 = 2;
                    type2 = 3;
                }
                else
                {
                    type1 = 4;
                    type3 = 5;
                    type2 = 6;
                }
                List <Exercise> exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId)));
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type3);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId)));
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise));
                }
                resultEntity.setData(exerciseSets);
                if (resultEntity.getData() != null)
                {
                    if (type.Equals("preview"))
                    {
                        //fragile
                        if (ChapterContentApi.getByID(chapterId).exerciseVisible_1 != null && ChapterContentApi.getByID(chapterId).exerciseVisible_1)
                        {
                            DateTime now = DateTime.Now;
                            if (ChapterContentApi.getByID(chapterId).exerciseDeadline_1 != null && now > ChapterContentApi.getByID(chapterId).exerciseDeadline_1)
                            {
                                resultEntity.setState(4);
                                resultEntity.setMessage("习题已过deadline!");
                            }
                            else
                            {
                                resultEntity.setState(1);
                                resultEntity.setMessage("查看成功!");
                            }
                        }
                        else
                        {
                            resultEntity.setState(2);
                            resultEntity.setMessage("习题当前设置为不可见!");
                        }
                    }
                    else
                    {
                        if (ChapterContentApi.getByID(chapterId).exerciseDeadline_2 != null && ChapterContentApi.getByID(chapterId).exerciseVisible_2)
                        {
                            DateTime now = DateTime.Now;
                            if (ChapterContentApi.getByID(chapterId).exerciseDeadline_2 != null && now > ChapterContentApi.getByID(chapterId).exerciseDeadline_2)
                            {
                                resultEntity.setState(4);
                                resultEntity.setMessage("习题已过deadline!");
                            }
                            else
                            {
                                resultEntity.setState(1);
                                resultEntity.setMessage("查看成功!");
                            }
                        }
                        else
                        {
                            resultEntity.setState(2);
                            resultEntity.setMessage("习题当前设置为不可见!");
                        }
                    }
                }
                else
                {
                    resultEntity.setMessage("无题目!");
                    resultEntity.setState(3);
                }
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 15
0
        public ResultEntity correctAll(List <int?> scores, int?studentId, int?chapterId, String type)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (studentId != null && chapterId != null && type != null)
            {
                int trueType = 0;
                int type1    = 0;
                int type2    = 0;
                if (type.Equals("preview"))
                {
                    trueType = 3;
                    type1    = 1;
                    type2    = 2;
                }
                else
                {
                    trueType = 6;
                    type1    = 4;
                    type2    = 5;
                }
                List <Exercise> exercises   = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, trueType);
                List <int?>     exerciseIds = new List <int?>();
                foreach (Exercise exercise in exercises)
                {
                    exerciseIds.Add(exercise.exerciseId);
                }
                StudentExerciseScore studentExerciseScore;
                for (int i = 0; i < scores.Count; i++)
                {
                    studentExerciseScore = StudentExerciseScoreApi.findByExerciseIdAndStudentId(exerciseIds[i], studentId);
                    studentExerciseScore.exerciseScore = scores[i].ToString();
                    studentExerciseScore.corrected     = 1;
                    StudentExerciseScoreApi.insert(studentExerciseScore);
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
                foreach (Exercise exercise in exercises)
                {
                    exerciseIds.Add(exercise.exerciseId);
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
                foreach (Exercise exercise in exercises)
                {
                    exerciseIds.Add(exercise.exerciseId);
                }
                int score = 0;
                foreach (int?exerciseId in exerciseIds)
                {
                    score += int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exerciseId, studentId).exerciseScore);
                }
                if (type.Equals("preview"))
                {
                    StudentChapter studentChapter = StudentChapterApi.findByChapterIDAndStudentID(chapterId, studentId);
                    studentChapter.totalScore_1 = score;
                    studentChapter.scored_1     = 1;
                    StudentChapterApi.insert(studentChapter);
                }
                else
                {
                    StudentChapter studentChapter = StudentChapterApi.findByChapterIDAndStudentID(chapterId, studentId);
                    studentChapter.totalScore_2 = score;
                    studentChapter.scored_2     = 1;
                    StudentChapterApi.insert(studentChapter);
                }
                resultEntity.setState(1);
                resultEntity.setMessage("批改成功 !");
            }
            else
            {
                resultEntity.setMessage("传入参数为空!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }
Esempio n. 16
0
        public ResultEntity answerAll(List <String> answers, int?studentId, int?chapterId, String type, String comment, int?rate)
        {
            ResultEntity resultEntity = new ResultEntity();

            if (answers != null && type != null && chapterId != null && studentId != null)
            {
                List <ExerciseSet> exerciseSets = new List <ExerciseSet>();
                int type1 = 0;
                int type2 = 0;
                int type3 = 0;
                if (type.Equals("preview"))
                {
                    type1 = 1;
                    type3 = 2;
                    type2 = 3;
                }
                else
                {
                    type1 = 4;
                    type3 = 5;
                    type2 = 6;
                }
                List <int?>     exerciseIds = new List <int?>();
                List <Exercise> exercises   = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type1);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId)));
                    exerciseIds.Add(exercise.exerciseId);
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type3);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise, ExerciseChoiceApi.findByExerciseIdOrderByExerciceChoiceId(exercise.exerciseId)));
                    exerciseIds.Add(exercise.exerciseId);
                }
                exercises = ExerciseApi.findByChapterIdAndExerciseTypeOrderByExerciseNumber(chapterId, type2);
                foreach (Exercise exercise in exercises)
                {
                    exerciseSets.Add(new ExerciseSet(exercise));
                }
                for (int i = 0; i < answers.Count; i++)
                {
                    answerOne(answers[i], exerciseSets[i].getExercise().exerciseId, studentId);
                }
                int score = 0;
                foreach (int?exerciseId in exerciseIds)
                {
                    score += int.Parse(StudentExerciseScoreApi.findByExerciseIdAndStudentId(exerciseId, studentId).exerciseScore);
                }
                StudentChapter studentChapter;
                if (!StudentChapterApi.existsByChapterIDAndStudentID(chapterId, studentId))
                {
                    studentChapter           = new StudentChapter();
                    studentChapter.chapterID = chapterId;
                    studentChapter.studentID = studentId;
                    StudentChapterApi.insert(studentChapter);
                }
                if (!type.Equals("preview"))
                {
                    studentChapter              = StudentChapterApi.findByChapterIDAndStudentID(chapterId, studentId);
                    studentChapter.rate         = rate;
                    studentChapter.comment      = comment;
                    studentChapter.totalScore_2 = score;
                    studentChapter.scored_2     = 0;
                    StudentChapterApi.insert(studentChapter);
                    //LaterImplementation
                    //new NLPUtil().setCommentNLPRate(comment, chapterId, studentId);
                }
                else
                {
                    studentChapter = StudentChapterApi.findByChapterIDAndStudentID(chapterId, studentId);
                    studentChapter.totalScore_1 = score;
                    studentChapter.scored_1     = 0;
                    StudentChapterApi.insert(studentChapter);
                }
                resultEntity.setState(1);
                resultEntity.setMessage("答题成功 !");
            }
            else
            {
                resultEntity.setMessage("传入参数有空值!");
                resultEntity.setState(0);
            }
            return(resultEntity);
        }