/// <summary>
 /// 数据校验
 /// <para>作    者:郭伟佳</para>
 /// <para>创建时间:2018-11-10</para>
 /// </summary>
 /// <param name="source">数据源</param>
 /// <param name="where">表达式</param>
 /// <param name="exceptionId">异常Id</param>
 /// <exception cref="AMS.Core.BusinessException">
 /// 异常ID:exceptionId
 /// </exception>
 private void CheckData(LifeClassAddRequest source, Func <LifeClassAddRequest, bool> where, ushort exceptionId)
 {
     if (source == null)
     {
         return;
     }
     if (where (source))
     {
         throw new BussinessException((byte)ModelType.Timetable, exceptionId);
     }
 }
        /// <summary>
        /// 修改一个写生课
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-10</para>
        /// </summary>
        /// <param name="lifeClassId">写生课Id</param>
        /// <param name="request">写生课实体信息</param>
        public void Modify(long lifeClassId, LifeClassAddRequest request)
        {
            TblTimLifeClass entity = _tblTimLifeClassRepository.Value.GetLifeClassInfo(lifeClassId);

            //1、数据校验
            Verification(request, entity);

            //2、准备数据
            entity.Title          = request.Title;
            entity.Place          = request.Place;
            entity.ClassBeginTime = request.ClassBeginTime;
            entity.ClassEndTime   = request.ClassEndTime;
            entity.TeacherId      = request.TeacherId;

            //3、写入数据库
            _tblTimLifeClassRepository.Value.Update(entity);
        }
 /// <summary>
 /// 数据校验
 /// <para>作    者:郭伟佳</para>
 /// <para>创建时间:2018-11-10</para>
 /// </summary>
 /// <param name="request">写生课实体信息</param>
 /// <param name="source">对象为NULL表示新增,反之表示修改</param>
 /// <exception cref="AMS.Core.BusinessException">
 /// 异常ID:
 /// 20. 消耗课次未选择,不可保存
 /// 21. 上课开始时间不能小于今天,不可保存
 /// 22. 上课结束日期不能小于上课开始日期,不可保存
 /// 24. 学期不可修改
 /// 25. 消耗课次不可修改
 /// </exception>
 private void Verification(LifeClassAddRequest request, TblTimLifeClass source = null)
 {
     //写生课修改的数据检查
     if (source == null)
     {
         //检查耗用课次
         CheckData(request, x => (!x.UseLessonCount.HasValue || x.UseLessonCount == 0), 20);
         //检查上课开始时间不能小于今天
         CheckData(request, x => x.ClassBeginTime.HasValue && x.ClassBeginTime.Value < DateTime.Now, 21);
         //检查上课结束日期不能小于上课开始日期
         CheckData(request, x => x.ClassEndTime.HasValue && x.ClassEndTime.Value < x.ClassBeginTime.Value, 22);
     }
     else
     {
         //学期不允许修改
         CheckData(request, x => x.TermId != source.TermId, 24);
         //消耗课次不允许修改
         CheckData(request, x => x.UseLessonCount != source.UseLessonCount, 25);
         //如果改变上课开始时间,检查上课开始时间不能小于今天
         CheckData(request, x => x.ClassBeginTime != source.ClassBeginTime && x.ClassBeginTime.Value < DateTime.Now, 21);
         //如果改变上课结束时间,检查上课结束日期不能小于上课开始日期
         CheckData(request, x => x.ClassEndTime != source.ClassEndTime && x.ClassEndTime.Value < x.ClassBeginTime.Value, 22);
     }
 }
        /// <summary>
        /// 添加一个写生课
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-22</para>
        /// </summary>
        /// <param name="request">写生课实体信息</param>
        public void Add(LifeClassAddRequest request)
        {
            //1、数据校验
            Verification(request);

            //2、准备数据
            TblTimLifeClass entity = new TblTimLifeClass
            {
                LifeClassId    = IdGenerator.NextId(),
                SchoolId       = this._schoolId,
                TermId         = request.TermId.Value,
                Title          = request.Title,
                Place          = request.Place,
                ClassBeginTime = request.ClassBeginTime,
                ClassEndTime   = request.ClassEndTime,
                LifeClassCode  = _tblTimLifeClassRepository.Value.GenerateLifeClassCode(request.ClassBeginTime.Value),
                TeacherId      = request.TeacherId,
                UseLessonCount = request.UseLessonCount.Value,
                CreateTime     = DateTime.Now
            };

            //3、写入数据库
            _tblTimLifeClassRepository.Value.Add(entity);
        }
 public void Put(long lifeClassId, LifeClassAddRequest request)
 {
     new LifeClassService(base.SchoolId).Modify(lifeClassId, request);
 }
 public void Post(LifeClassAddRequest request)
 {
     new LifeClassService(base.SchoolId).Add(request);
 }