Exemplo n.º 1
0
        /// <summary>
        /// 获取并转换为<see cref="QuestionDetails"/>类型数据对象
        /// </summary>
        /// <returns></returns>
        public QuestionDetails ConvertToQuestionDetails()
        {
            if (Question == null)
            {
                return(null);
            }

            //科目名称
            var subjectName = SubjectsAccessor.GetName(Question.SubjectId);
            //课程标题
            var courseTitle = CourseAccessor.GetTitle(Question.CourseId);

            var details = new QuestionDetails
            {
                QuestionId  = Question.QuestionId,
                Answer      = QuestionTools.DeserializeAnswers(Question.Answer, Question.Type),
                Count       = Question.Count,
                CourseId    = Question.CourseId,
                CourseTitle = courseTitle,
                CreateTime  = Question.CreateTime,
                LastTime    = Question.LastTime,
                Marking     = Question.Marking,
                Status      = Question.Status,
                SubjectId   = Question.SubjectId,
                SubjectName = subjectName,
                Topic       = Question.Topic,
                Type        = Question.Type,
                UserId      = Question.UserId
            };

            return(details);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 业务数据检测
        /// </summary>
        protected override void Validate()
        {
            //课程标题为空时
            if (string.IsNullOrWhiteSpace(Title))
            {
                AddBrokenRule(NewCourseFailureRule.TITLE_CANNOT_NULL_OR_EMPTY);
            }

            //课程内容为空时
            if (string.IsNullOrWhiteSpace(Content))
            {
                AddBrokenRule(NewCourseFailureRule.CONTENT_CANNOT_NULL_OR_EMPTY);
            }

            //学习目标为空时
            if (string.IsNullOrWhiteSpace(Objective))
            {
                AddBrokenRule(NewCourseFailureRule.OBJECTIVE_CANNOT_NULL_OR_EMPTY);
            }

            //所属科目不存在时
            if (!SubjectsAccessor.Exists(SubjectId))
            {
                AddBrokenRule(NewCourseFailureRule.SUBJECT_NOT_EXISTS);
            }

            //创建课程的用户不存在时
            if (!UsersAccessor.Exists(UserId))
            {
                AddBrokenRule(NewCourseFailureRule.CREATER_NOT_EXISTS);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 修改信息
        /// </summary>
        /// <param name="state">将要修改后的状态</param>
        /// <returns></returns>
        public bool ModifyTo(CourseModifiedState state)
        {
            if (state == null)
            {
                return(false);
            }

            ThrowExceptionIfValidateFailure(() =>
            {
                //是否允许被编辑
                if (CanModify())
                {
                    //课程标题为空时
                    if (string.IsNullOrWhiteSpace(state.Title))
                    {
                        AddBrokenRule(CourseManageFailureRule.TITLE_CANNOT_NULL_OR_EMPTY);
                    }

                    //课程内容为空时
                    if (string.IsNullOrWhiteSpace(state.Content))
                    {
                        AddBrokenRule(CourseManageFailureRule.CONTENT_CANNOT_NULL_OR_EMPTY);
                    }

                    //学习目标为空时
                    if (string.IsNullOrWhiteSpace(state.Objective))
                    {
                        AddBrokenRule(CourseManageFailureRule.OBJECTIVE_CANNOT_NULL_OR_EMPTY);
                    }

                    //所属科目不存在时
                    if (!SubjectsAccessor.Exists(state.SubjectId))
                    {
                        AddBrokenRule(CourseManageFailureRule.SUBJECT_NOT_EXISTS);
                    }
                }
                else
                {
                    AddBrokenRule(CourseManageFailureRule.CANNOT_MODIFY);
                }
            });

            //映射数据实体对象后存储
            var editCourse = TransferNewFor(state);

            bool success = CourseAccessor.Update(editCourse);

            if (success && Course.Status != state.Status)
            {
                ComputeStudyProgress(ID);
            }

            return(success);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 物理删除当前科目
        /// </summary>
        /// <returns></returns>
        public bool Delete()
        {
            //业务数据检测,存在错误则抛出异常
            ThrowExceptionIfValidateFailure(() =>
            {
                if (!CanDelete())
                {
                    AddBrokenRule(SubjectEditFailureRule.HAS_COURSES);
                }
            });

            return(SubjectsAccessor.Delete(ID));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 修改科目名称
        /// </summary>
        /// <param name="newName"></param>
        /// <returns></returns>
        public bool Rename(string newName)
        {
            //业务数据检测,存在错误则抛出异常
            ThrowExceptionIfValidateFailure(() =>
            {
                if (!CanModifyNameTo(newName))
                {
                    AddBrokenRule(SubjectEditFailureRule.NAME_EXISTS);
                }
            });

            return(SubjectsAccessor.ModifyNameTo(ID, newName));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 设置为”禁用“状态
        /// </summary>
        /// <returns></returns>
        public bool SetDisable()
        {
            //业务数据检测,存在错误则抛出异常
            ThrowExceptionIfValidateFailure(() =>
            {
                if (!CanSetDisable())
                {
                    AddBrokenRule(SubjectEditFailureRule.STATUS_HAS_BEEN_DISABLED);
                }
            });

            return(SubjectsAccessor.SetStatus(ID, (int)SubjectStatus.DISABLED));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 执行搜索
        /// </summary>
        public PagerModel <Subjects> Search()
        {
            this.ThrowExceptionIfValidateFailure();

            PagerModel <Subjects> pager = new PagerModel <Subjects>()
            {
                Index = PageIndex,
                Size  = PageSize
            };

            SubjectsAccessor.Get(pager, Keyword, Status);

            return(pager);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 是否允许修改名称为指定的名称
        /// </summary>
        /// <param name="newName"></param>
        /// <returns></returns>
        public bool CanModifyNameTo(string newName)
        {
            if (string.IsNullOrWhiteSpace(newName))
            {
                return(false);
            }

            if (newName.Equals(Subject.Name, StringComparison.OrdinalIgnoreCase))
            {
                return(true);
            }

            var ids = SubjectsAccessor.GetIdsFor(newName);

            return(ids.Length == 0);
        }
Exemplo n.º 9
0
        public bool Save()
        {
            ThrowExceptionIfValidateFailure();

            //数据仓储对象
            Subjects subject = new Subjects
            {
                Count      = Count,
                CreateTime = DateTime.Now,
                Name       = Name,
                Status     = Status,
                SubjectId  = ID
            };

            //保存新科目到仓储
            return(SubjectsAccessor.Insert(subject));
        }
Exemplo n.º 10
0
        /// <summary>
        /// 名称是否可以使用
        /// </summary>
        /// <returns></returns>
        public bool CanUseForName()
        {
            bool isExists = SubjectsAccessor.NameExists(Name);

            return(!isExists);
        }
Exemplo n.º 11
0
 /// <summary>
 /// 获取课程所在科目的名称
 /// </summary>
 /// <returns></returns>
 public string GetSubjectName()
 {
     return(SubjectsAccessor.GetName(Course.SubjectId));
 }