using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using Edu.Common; using Edu.Common.Enum.Course; using Edu.Common.Enum.System; using Edu.Model.Entity.EduTask; using Edu.Model.Entity.Sell; using Edu.Model.ViewModel.EduTask; using Edu.Model.ViewModel.Grade; using Edu.Model.ViewModel.Sell; using Edu.Repository.Grade; using Edu.Repository.Sell; using VT.FW.DB; namespace Edu.Repository.EduTask { public class RB_Student_LeaveRepository : BaseRepository<RB_Student_Leave> { // <summary> /// 订单学员仓储层对象 /// </summary> private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository(); /// <summary> /// 教务单据仓储层对象 /// </summary> private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository(); /// <summary> /// 课程基础配置 /// </summary> private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository(); /// <summary> /// 班级仓储层对象 /// </summary> private readonly RB_ClassRepository classRepository = new RB_ClassRepository(); /// <summary> /// 课程签到记录表 /// </summary> private readonly RB_Class_CheckRepository classCheckRepository = new RB_Class_CheckRepository(); /// <summary> /// 班级上课计划仓储层对象 /// </summary> private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository(); /// <summary> /// 订单仓储层对象 /// </summary> private readonly RB_OrderRepository orderRepository = new RB_OrderRepository(); /// <summary> /// 账户仓储层 /// </summary> private readonly User.RB_AccountRepository accountRepository = new User.RB_AccountRepository(); /// <summary> /// 日志仓储对象 /// </summary> private readonly Log.RB_User_ChangeLogRepository user_ChangeLogRepository = new Log.RB_User_ChangeLogRepository(); /// <summary> /// 班级上课计划上课时间仓储层对象 /// </summary> private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository(); /// <summary> /// 学员补课记录表仓储层对象 /// </summary> private readonly BackClass.RB_Student_MakeupRepository student_MakeupRepository = new BackClass.RB_Student_MakeupRepository(); /// <summary> /// 获取请假列表 /// </summary> /// <param name="query"></param> /// <returns></returns> public List<RB_Student_Leave_ViewModel> GetStudentLeaveListRepository(RB_Student_Leave_ViewModel query) { StringBuilder builder = new StringBuilder(); builder.AppendFormat(@" SELECT A.*,IFNULL(B.ClassName,'') AS ClassName FROM RB_Student_Leave AS A LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId WHERE 1=1 "); if (query != null) { if (!string.IsNullOrEmpty(query.Q_Student_Leave_Ids)) { builder.AppendFormat(@" AND A.{0} IN ({1}) ", nameof(RB_Student_Leave_ViewModel.Id), query.Q_Student_Leave_Ids); } } return Get<RB_Student_Leave_ViewModel>(builder.ToString()).ToList(); } /// <summary> /// 审核通过后更新学生签到表 /// </summary> /// <param name="Id"></param> /// <returns></returns> public bool UpdateStundetLeave(object Id, int CreateById) { //查询当前调课信息 bool flag = false; var receiptModel = education_ReceiptRepository.GetEntity(Id); if (receiptModel == null || receiptModel.Id == 0) { return false; } if (receiptModel.ReceiptType != Common.Enum.Finance.ReceiptTypeEnum.LeaveClass) { return false; } var model = GetEntity(receiptModel.RelationId); if (model == null || model.Id == 0) { return false; } else //更新学生的信息 { List<LeaveInfoModel> LeaveInfoList = new List<LeaveInfoModel>(); if (!string.IsNullOrWhiteSpace(model.LeaveInfo)) { LeaveInfoList = Common.Plugin.JsonHelper.DeserializeObject<List<LeaveInfoModel>>(model.LeaveInfo); } //学生信息 List<RB_Order_Guest_ViewModel> orderGuestList = new List<RB_Order_Guest_ViewModel>(); //班级上课计划列表 List<RB_Class_Plan_ViewModel> planList = new List<RB_Class_Plan_ViewModel>(); //班级上课时间列表 List<RB_Class_Time_ViewModel> timeList = new List<RB_Class_Time_ViewModel>(); string orderGuestIds = model.OrderGuestId.ToString(); if (!string.IsNullOrWhiteSpace(orderGuestIds)) { orderGuestList = order_GuestRepository.GetStopingStudentPage(new RB_Order_Guest_ViewModel { OrderGuestIds = orderGuestIds }); } string classTimeIds = model.ClassTimeIds; if (!string.IsNullOrWhiteSpace(classTimeIds)) { timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel { QClassTimeIds = classTimeIds }); if (timeList != null && timeList.Any()) { string classPlanIds = string.Join(",", timeList.Select(x => x.ClassPlanId)); if (!string.IsNullOrWhiteSpace(classPlanIds)) { planList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel { QClassPlanIds = classPlanIds }); } } } List<RB_Class_Check_ViewModel> classCheckList = new List<RB_Class_Check_ViewModel>(); //判断当天是否有已签到数据 var checkLogList = classCheckRepository.GetClassCheckList(new RB_Class_Check_ViewModel { Group_Id = model.Group_Id, ClassId = model.ClassId, Q_ClassTimeIds = model.ClassTimeIds, }); foreach (var item in timeList) { DateTime? dateTime = planList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault()?.ClassDate; if (!dateTime.HasValue) { try { dateTime = Convert.ToDateTime(LeaveInfoList.Where(x => x.ClassTimeId == item.ClassTimeId).FirstOrDefault().ClassDate); } catch (Exception ex) { Common.Plugin.LogHelper.Write(ex, "UpdateStundetLeave"); } } var signModel = checkLogList?.Where(qitem => qitem.ClassTimeId == item.ClassTimeId && qitem.ClassId == item.ClassId && qitem.OrderGuestId == model.OrderGuestId)?.FirstOrDefault(); RB_Class_Check_ViewModel invitationModel = new RB_Class_Check_ViewModel() { ClassCheckId = (signModel != null && signModel.ClassCheckId > 0) ? signModel.ClassCheckId : 0, ClassId = model.ClassId, Group_Id = model.Group_Id, School_Id = model.School_Id, CheckStatus = 2, StudyNum = 0, Status = 0, TeacherId = planList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault()?.TeacherId ?? 0, ClassRoomId = planList.Where(x => x.ClassPlanId == item.ClassPlanId).FirstOrDefault()?.ClassRoomId ?? 0, ClassDate = dateTime.Value, ClassTimeId = item.ClassTimeId, OrderGuestId = model.OrderGuestId, CreateBy = CreateById, CreateTime = DateTime.Now }; classCheckList.Add(invitationModel); } if (classCheckList != null && classCheckList.Any()) { //flag = classCheckRepository.StudentCheckRepository(classCheckList,1); } } return flag; } } }