/// <summary> /// 取消学生预约的课程(适用于学校停课、教练请假) /// </summary> /// <param name="pKID">课程编号</param> /// <param name="venueID">场馆编号</param> /// <param name="teachState">排课表编号</param> /// <param name="curriculumState">学生排课关联表状态</param> /// <param name="classHoursDetailedState">学生课时明细状态</param> /// <param name="remark">备注</param> /// <returns></returns> public static bool CancelTeachingSche(int pKID, int venueID, Sys.Models.StateEnum.TeachingSchedule teachState, Sys.Models.StateEnum.Curriculum curriculumState, Sys.Models.StateEnum.ClassHoursDetailed classHoursDetailedState, string remark) { /* * 检测该操作是否合法 * * 修改约课表状态 * 回写学生约课课时、添加日志记录 * 修改排课表信息 * */ System.Data.IDbConnection connection = Comm.Helper.DapperHelper.Instance; connection.Open(); System.Data.IDbTransaction transaction = connection.BeginTransaction(); try { var teachingInfo = DapperHelper.Instance.Get <Sys.Models.TeachingSchedule>(pKID); if (teachingInfo.VenueID != venueID) { throw new Comm.YYException.YYException("操作非法"); } var sql = "SELECT StudentID FROM [dbo].[Curriculum] where PKID=@pkID and [State]=@state"; IList <int> result = new List <int>(); if (teachState == Sys.Models.StateEnum.TeachingSchedule.StopTeachingSche) { if (teachingInfo.State != Convert.ToInt32(Sys.Models.StateEnum.TeachingSchedule.BookTeachingScheDone)) { throw new Comm.YYException.YYException("课程不是预约成功状态"); } result = DapperHelper.Instance.Query <int>(sql, new { pkId = pKID, state = Sys.Models.StateEnum.Curriculum.BookTeachingScheDone }).ToList(); //没有约课成功的学生则认为已经处理完成 if (result == null || result.Count() == 0) { return(true); } } else { if (teachingInfo.State != Convert.ToInt32(Sys.Models.StateEnum.TeachingSchedule.LeaveTeachingScheIng)) { throw new Comm.YYException.YYException("课程未申请请假"); } result = DapperHelper.Instance.Query <int>(sql, new { pkId = pKID, state = Sys.Models.StateEnum.Curriculum.CoachLeaveTeachingScheDone }).ToList(); //没有约课成功的学生则认为已经处理完成 if (result == null || result.Count() == 0) { return(true); } } //修改排课状态 var updateCurriculumSql = "update Curriculum set State=@state where PKID=@pkId"; int updateCurriculum = connection.Execute(updateCurriculumSql, new { pkId = pKID, state = Convert.ToInt32(curriculumState) }, transaction); var updateClassHoursNumberSql = "update ClassHoursNumber set ClassNumber=ClassNumber+1 where StudentID=@studentID and CoachID=@coachID and VenueID=@venueID and PKType=@PKType"; foreach (var item in result) { //修改学生课时数量 int updateClassHoursNumber = connection.Execute(updateClassHoursNumberSql, new { studentID = item, coachID = teachingInfo.CoachID, venueID = venueID, PKType = teachingInfo.PKType }, transaction); //添加学生课时数操作日志 connection.Insert <Sys.Models.ClassHoursDetailed>(new Sys.Models.ClassHoursDetailed() { AddTime = DateTime.Now, DNumber = 1, CoachID = teachingInfo.CoachID.Value, StudentID = item, VenueID = venueID, DType = Convert.ToInt32(classHoursDetailedState), Remark = remark, PKType = teachingInfo.PKType.Value, }, transaction); } teachingInfo.State = Convert.ToInt32(teachState); connection.Update(teachingInfo, transaction); transaction.Commit(); return(true); } catch (Comm.YYException.YYException) { throw; } catch (Exception ex) { logs.Error("取消课程失败", ex); transaction.Rollback(); return(false); } finally { connection.Close(); } }
/// <summary> /// 学生请假 /// </summary> /// <param name="curriculumID"></param> /// <param name="venueID"></param> /// <param name="teachState"></param> /// <param name="curriculumState"></param> /// <param name="classHoursDetailedState"></param> /// <param name="remark"></param> /// <returns></returns> public static bool CancelTeachingSche4Student(int curriculumID, int venueID, Sys.Models.StateEnum.TeachingSchedule teachState, Sys.Models.StateEnum.Curriculum curriculumState, Sys.Models.StateEnum.ClassHoursDetailed classHoursDetailedState, string remark) { /* * 检测该操作是否合法 * * 修改约课表状态 * 回写学生约课课时、添加日志记录 * 修改排课表信息 * */ System.Data.IDbConnection connection = Comm.Helper.DapperHelper.Instance; connection.Open(); System.Data.IDbTransaction transaction = connection.BeginTransaction(); try { var curriculumInfo = DapperHelper.Instance.Get <Sys.Models.Curriculum>(curriculumID); if (curriculumInfo.VenueID != venueID) { throw new Comm.YYException.YYException("操作非法"); } if (curriculumInfo.State != Convert.ToInt32(Sys.Models.StateEnum.Curriculum.LeaveTeachingScheIng)) { throw new Comm.YYException.YYException("课程未申请请假"); } var teachingInfo = DapperHelper.Instance.Get <Sys.Models.TeachingSchedule>(curriculumInfo.PKID); //修改排课状态 var updateCurriculumSql = "update Curriculum set State=@state where PKID=@pkId"; int updateCurriculum = connection.Execute(updateCurriculumSql, new { pkId = curriculumInfo.PKID, state = Convert.ToInt32(curriculumState) }, transaction); var updateClassHoursNumberSql = "update ClassHoursNumber set ClassNumber=ClassNumber+1 where StudentID=@studentID and CoachID=@coachID and VenueID=@venueID and PKType=@PKType"; //修改学生课时数量 int updateClassHoursNumber = connection.Execute(updateClassHoursNumberSql, new { studentID = curriculumInfo.StudentID, coachID = teachingInfo.CoachID, venueID = venueID, PKType = teachingInfo.PKType }, transaction); //添加学生课时数操作日志 connection.Insert <Sys.Models.ClassHoursDetailed>(new Sys.Models.ClassHoursDetailed() { AddTime = DateTime.Now, DNumber = 1, CoachID = teachingInfo.CoachID.Value, StudentID = curriculumInfo.StudentID.Value, VenueID = venueID, DType = Convert.ToInt32(classHoursDetailedState), Remark = remark, PKType = teachingInfo.PKType.Value }, transaction); //如果是一对一的课程可以修改为请假完成 if (teachingInfo.PKType.Value == 1) { teachingInfo.State = Convert.ToInt32(teachState); connection.Update(teachingInfo, transaction); } transaction.Commit(); return(true); } catch (Comm.YYException.YYException) { throw; } catch (Exception ex) { logs.Error("确认学生请假申请失败", ex); transaction.Rollback(); return(false); } finally { connection.Close(); } }