using Edu.AOP.CustomerAttribute;
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Model.CacheModel;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Reserve;
using Edu.Model.ViewModel.User;
using Edu.Repository.Course;
using Edu.Repository.Log;
using Edu.Repository.Reserve;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using VT.FW.DB;
namespace Edu.Module.Course
{
///
/// 班级管理处理类
///
public class ClassModule
{
///
/// 班级仓储层对象
///
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
///
/// 班级上课计划仓储层对象
///
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
///
/// 班级上课计划上课时间仓储层对象
///
private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository();
///
/// 班级类型
///
private readonly RB_Class_TypeRepository class_TypeRepository = new RB_Class_TypeRepository();
///
/// 班级价格仓储层对象
///
private readonly RB_Class_StepPriceRepository class_StepPriceRepository = new RB_Class_StepPriceRepository();
///
/// 订单学员仓储层对象
///
private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository();
///
/// 课程仓储层对象
///
private readonly RB_CourseRepository courseRepository = new RB_CourseRepository();
///
/// 订单仓储层对象
///
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
///
/// 课程日志记录表
///
private readonly RB_Class_LogRepository classLogRepository = new RB_Class_LogRepository();
///
/// 课程签到记录表
///
private readonly RB_Class_CheckRepository classCheckRepository = new RB_Class_CheckRepository();
///
/// 课程日志记录表
///
private readonly RB_StudentRepository studentRepository = new RB_StudentRepository();
///
/// 教室仓储层对象
///
private readonly RB_Class_RoomRepository class_RoomRepository = new RB_Class_RoomRepository();
///
/// 教师仓储层对象
///
private readonly RB_TeacherRepository teacherRepository = new RB_TeacherRepository();
///
/// 开启班级收支仓储层对象
///
private readonly RB_Class_FinanceRepository classFinanceRepository = new RB_Class_FinanceRepository();
///
/// 课程基础配置
///
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
///
/// 课程基础配置
///
private readonly RB_Class_LessonPlanDetailsRepository ClassLessonPlanDetailsRepository = new RB_Class_LessonPlanDetailsRepository();
///
/// 课程基础配置
///
private readonly RB_Class_LessonPlanProjectsRepository ClassLessonPlanProjectsRepository = new RB_Class_LessonPlanProjectsRepository();
///
/// 班级备案评论仓储层对象
///
private readonly RB_Class_LessonCommentRepository classLessonCommentRepository = new RB_Class_LessonCommentRepository();
///
/// 课程基础配置
///
private readonly RB_Class_LessonPlanRepository ClassLessonPlanRepository = new RB_Class_LessonPlanRepository();
///
/// 班级关联课程仓储层对象
///
private readonly RB_Class_CourseRepository class_CourseRepository = new RB_Class_CourseRepository();
///
/// 约课仓储层对象
///
private readonly RB_Reserve_ClassRepository reserve_ClassRepository = new RB_Reserve_ClassRepository();
///
/// 访客预约仓储层对象
///
private readonly RB_Visitor_ReserveRepository visitor_ReserveRepository = new RB_Visitor_ReserveRepository();
///
/// 教室异常仓储对象
///
private readonly RB_Class_RoomUseLogRepository class_RoomUseLogRepository = new RB_Class_RoomUseLogRepository();
///
/// 学员补课记录表仓储层对象
///
private readonly RB_Student_MakeupRepository student_MakeupRepository = new RB_Student_MakeupRepository();
///
/// 获取班级列表
///
///
///
public List GetClassListModule(RB_Class_ViewModel query)
{
return classRepository.GetClassListRepository(query);
}
///
/// 获取班级列表
///
///
///
public List GetClassListForProperty(RB_Class_ViewModel query)
{
return classRepository.GetClassListForProperty(query);
}
///
/// 获取班级课程名称以及老师信息列表
///
///
///
///
///
///
public List GetClassAndCourseListRepository(RB_Class_ViewModel query)
{
return classRepository.GetClassAndCourseListRepository(query);
}
///
/// 获取班级上课时间列表
///
///
///
public List GetClassTimeListModule(RB_Class_Time_ViewModel query)
{
return class_TimeRepository.GetClassTimeListRepository(query);
}
///
/// 获取班级上课时间列表
///
///
///
public List GetClassTimeList_V2(RB_Class_Time_ViewModel query)
{
return class_TimeRepository.GetClassTimeList_V2(query);
}
///
/// 获取班级上课时间列表
///
///
///
public List GetClassTimeList(RB_Class_Time_ViewModel query)
{
return class_TimeRepository.GetClassTimeList(query);
}
///
/// 获取班级分页列表
///
///
///
///
///
/// 是否查询阶梯价格
///
public List GetClassPageListModule(int pageIndex, int pageSize, out long rowsCount, RB_Class_ViewModel query, bool isGetStepPrice = false)
{
var list = classRepository.GetClassPageListRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null && list.Count > 0)
{
var classTimeList = new List();
var classOrderList = new List();
var stepPriceList = new List();
var otherCourseList = new List();
string ids = string.Join(",", list.Select(qitem => qitem.ClassId));
if (!string.IsNullOrEmpty(ids))
{
classTimeList = class_TimeRepository.GetClassTimeListRepository(ids);
classOrderList = orderRepository.GetClassOrderPeopleNumRepository(ids);
otherCourseList = GetClassCourseListModule(new RB_Class_Course_Extend() { QClassIds = ids });
}
if (isGetStepPrice)
{
stepPriceList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { QClassIds = ids })?.ToList() ?? new List();
}
//课程计划上课日期
foreach (var item in list)
{
item.NewPlanDateTime = classTimeList?.Where(qitem => qitem.ClassId == item.ClassId)?.FirstOrDefault()?.NewPlanDateTime;
item.OrderStudentCount = classOrderList?.Where(qitem => qitem.ClassId == item.ClassId)?.FirstOrDefault()?.GuestNum ?? 0;
if (isGetStepPrice)
{
item.ClassStepPriceList = stepPriceList?.Where(qitem => qitem.ClassId == item.ClassId)?.ToList() ?? new List();
}
item.OtherCourseList = otherCourseList?.Where(qitem => qitem.ClassId == item.ClassId)?.ToList() ?? new List();
}
}
return list;
}
///
/// 获取班级日志分页列表
///
/// 当前页
/// 每页显示条数
/// 总条数
/// 查询条件
///
public List GetClassLogPageListRepository(int pageIndex, int pageSize, out long rowsCount, RB_Class_Log_ViewModel query)
{
return classLogRepository.GetClassLogPageListRepository(pageIndex, pageSize, out rowsCount, query);
}
///
/// 新增修改班级
///
///
///
public virtual bool SetClassModule(RB_Class_ViewModel model)
{
bool flag = false;
if (model.ClassId > 0)
{
var oldModel = GetClassModule(model.ClassId);
if (oldModel.Teacher_Id != model.Teacher_Id && model.Teacher_Id > 0 && oldModel.Teacher_Id > 0)
{
class_PlanRepository.UpdatePlanTeacherIdRepository(model.Teacher_Id, model.ClassId);
}
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Class_ViewModel.ClassName),model.ClassName},
{ nameof(RB_Class_ViewModel.CouseId),model.CouseId},
{ nameof(RB_Class_ViewModel.Teacher_Id),model.Teacher_Id},
{ nameof(RB_Class_ViewModel.Assist_Id),model.Assist_Id},
{ nameof(RB_Class_ViewModel.UpdateBy),model.UpdateBy},
{ nameof(RB_Class_ViewModel.UpdateTime),model.UpdateTime},
{ nameof(RB_Class_ViewModel.ClassPersion),model.ClassPersion},
{ nameof(RB_Class_ViewModel.OpenTime),model.OpenTime},
{ nameof(RB_Class_ViewModel.EndOrderTime),model.EndOrderTime},
{ nameof(RB_Class_ViewModel.OriginalPrice),model.OriginalPrice},
{ nameof(RB_Class_ViewModel.SellPrice),model.SellPrice},
{ nameof(RB_Class_ViewModel.IsStepPrice),model.IsStepPrice},
{ nameof(RB_Class_ViewModel.ClassRoomId),model.ClassRoomId},
{ nameof(RB_Class_ViewModel.IsOpenCommission),model.IsOpenCommission},
{ nameof(RB_Class_ViewModel.CommissionType),model.CommissionType},
{ nameof(RB_Class_ViewModel.CommissionValue),model.CommissionValue},
{ nameof(RB_Class_ViewModel.ClassHours),model.ClassHours},
{ nameof(RB_Class_ViewModel.ClassStyle),model.ClassStyle},
{ nameof(RB_Class_ViewModel.InnerRemark),model.InnerRemark},
{ nameof(RB_Class_ViewModel.ClassType),model.ClassType},
{ nameof(RB_Class_ViewModel.DefaultTimeJson),model.DefaultTimeJson},
{ nameof(RB_Class_ViewModel.DateJson),model.DateJson},
{ nameof(RB_Class_ViewModel.School_Id),model.School_Id},
{ nameof(RB_Class_ViewModel.IsSubscribe),model.IsSubscribe},
{ nameof(RB_Class_ViewModel.IsDeduction),model.IsDeduction},
{ nameof(RB_Class_ViewModel.Point),model.Point},
{ nameof(RB_Class_ViewModel.CourseClassType),model.CourseClassType},
{ nameof(RB_Class_ViewModel.StudentNumType),model.StudentNumType},
{ nameof(RB_Class_ViewModel.ClassHourMinute),model.ClassHourMinute},
};
if (oldModel.OpenTime != model.OpenTime || oldModel.ClassType != model.ClassType || string.IsNullOrEmpty(oldModel.ClassNo))
{
if (oldModel.OpenTime != model.OpenTime || string.IsNullOrEmpty(oldModel.ClassNo))
{
#region 生成班级号
model.ClassNo = "";
var classTypeModel = class_TypeRepository.GetEntity(model.ClassType);
if (classTypeModel != null)
{
model.ClassNo = classTypeModel.ClassNoPrefix;
}
//查询最大的字母
int CNum = classRepository.GetMaxClassNoPrefix(model.OpenTime.ToString("yyyy-MM-dd"));
if (CNum == 0)
{
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + "A";
model.ClassLetterNum = 1;
}
else
{
string ClassNoLetterStr = Edu.Common.Config.ClassNoLetterStr;
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + ClassNoLetterStr.Substring(CNum, 1);
model.ClassLetterNum = CNum + 1;
}
#endregion
fileds.Add(nameof(RB_Class_ViewModel.ClassNo), model.ClassNo);
fileds.Add(nameof(RB_Class_ViewModel.ClassLetterNum), model.ClassLetterNum);
}
else if (oldModel.ClassType != model.ClassType)
{
var classTypeModel = class_TypeRepository.GetEntity(model.ClassType);
if (classTypeModel != null)
{
model.ClassNo = classTypeModel.ClassNoPrefix;
}
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + oldModel.ClassNo.Substring(oldModel.ClassNo.Length - 1, 1);
fileds.Add(nameof(RB_Class_ViewModel.ClassNo), model.ClassNo);
}
}
flag = classRepository.Update(fileds, new WhereHelper(nameof(RB_Class_ViewModel.ClassId), model.ClassId));
}
else
{
#region 生成班级号
model.ClassNo = "";
var classTypeModel = class_TypeRepository.GetEntity(model.ClassType);
if (classTypeModel != null)
{
model.ClassNo = classTypeModel.ClassNoPrefix;
}
//查询最大的字母
int CNum = classRepository.GetMaxClassNoPrefix(model.OpenTime.ToString("yyyy-MM-dd"));
if (CNum == 0)
{
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + "A";
model.ClassLetterNum = 1;
}
else
{
string ClassNoLetterStr = Edu.Common.Config.ClassNoLetterStr;
model.ClassNo += model.OpenTime.ToString("yyyyMMdd") + ClassNoLetterStr.Substring(CNum, 1);
model.ClassLetterNum = CNum + 1;
}
#endregion
var newId = classRepository.Insert(model);
model.ClassId = newId;
flag = newId > 0;
var classLogModel = new Model.Entity.Log.RB_Class_Log()
{
LogType = Common.Enum.Course.ClassLogTypeEnum.CreateClass,
LogContent = "创建班级",
ClassId = newId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
CreateBy = model.CreateBy,
CreateTime = System.DateTime.Now
};
classLogRepository.AddClassLogRepository(classLogModel);
}
#region 阶梯报价
//未开启阶梯价格
if (model.IsStepPrice == 0)
{
class_StepPriceRepository.DeleteClassStepPriceRepository(model.ClassId);
}
else//开启阶梯价格
{
var oldStepPriceList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { ClassId = model.ClassId });
//以前没有阶梯报价信息【直接新增】
if (oldStepPriceList == null || (oldStepPriceList != null && oldStepPriceList.Count == 0))
{
if (model.ClassStepPriceList != null && model.ClassStepPriceList.Count > 0)
{
foreach (var item in model.ClassStepPriceList)
{
item.ClassStepPriceId = 0;
item.ClassId = model.ClassId;
item.Group_Id = model.Group_Id;
item.School_Id = model.School_Id;
class_StepPriceRepository.Insert(item);
}
}
}
else//以前有阶梯报价
{
//现在没有阶梯报价了【直接删除以前的阶梯报价】
if (model.ClassStepPriceList == null || (model.ClassStepPriceList != null && model.ClassStepPriceList.Count == 0))
{
class_StepPriceRepository.DeleteClassStepPriceRepository(model.ClassId);
}
//找出差异的数据
var deleteList = oldStepPriceList.Where(qitem => !model.ClassStepPriceList.Any(oldItem => qitem.ClassStepPriceId == oldItem.ClassStepPriceId)).ToList();
foreach (var dItem in deleteList)
{
if (dItem.ClassStepPriceId > 0)
{
class_StepPriceRepository.Delete(dItem.ClassStepPriceId);
}
}
foreach (var priceItem in model.ClassStepPriceList)
{
priceItem.ClassId = model.ClassId;
priceItem.Group_Id = model.Group_Id;
priceItem.School_Id = model.School_Id;
if (priceItem.ClassStepPriceId == 0)
{
class_StepPriceRepository.Insert(priceItem);
}
else
{
class_StepPriceRepository.Update(priceItem);
}
}
}
}
#endregion
#region 班级计划
//默认上课时间
var defaultPlanTimeList = new List();
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(model.Group_Id);
foreach (var tItem in model.DefaultTimeList)
{
ClassTimeItem tModel = new ClassTimeItem()
{
DateList = new List(),
TimeList = new List()
};
tModel.DateList = tItem.DateList;
foreach (var subItem in tItem.TimeList)
{
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + subItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + subItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
var timeModel = new TimeItem()
{
StartTime = subItem.StartTime,
EndTime = subItem.EndTime,
TimeHour = subItem.TimeHour,
};
if (timeModel.TimeHour <= 0)
{
timeModel.TimeHour = Convert.ToDecimal(span.TotalMinutes / BasicMinutes);
}
tModel.TimeList.Add(timeModel);
defaultPlanTimeList.Add(tModel);
}
}
//班级上课计划列表
List classPlanList = CreateClassPlanList(model, defaultPlanTimeList, BasicMinutes);
model.ClassPlanList = classPlanList;
AddClassPlanModule(model);
#endregion
return flag;
}
///
/// 添加上课计划
///
///
///
public void AddClassPlanModule(RB_Class_ViewModel model)
{
Task.Run(() =>
{
if (model.ClassPlanList != null && model.ClassPlanList.Count > 0)
{
foreach (var item in model.ClassPlanList)
{
item.ClassPlanId = 0;
if (!class_PlanRepository.CheckExistsRepository(item))
{
//添加班级上课计划
var newClassPlanId = class_PlanRepository.Insert(item);
if (item.PlanTimeList != null && item.PlanTimeList.Count > 0)
{
foreach (var subItem in item.PlanTimeList)
{
subItem.ClassTimeId = 0;
subItem.ClassPlanId = newClassPlanId;
subItem.ClassId = model.ClassId;
subItem.Group_Id = model.Group_Id;
subItem.School_Id = model.School_Id;
//添加班级上课计划的上课时间
class_TimeRepository.Insert(subItem);
}
}
}
}
}
});
}
///
/// 修改班级状态
///
///
///
///
public virtual bool SetClassStatusModule(ClassStatusEnum ClassStatus, int classId)
{
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Class_ViewModel.ClassStatus),(int)ClassStatus},
};
return classRepository.Update(fileds, new WhereHelper(nameof(RB_Class_ViewModel.ClassId), classId));
}
///
/// 更新班级完成进度
///
/// 班级Id
///
public virtual bool SetClassProcessModule(int classId)
{
int CompleteProgress = 0;//进度数
var classModel = classRepository.GetEntity(classId);
//班级完成的总分钟数
var FinishMinutes = classCheckRepository.GetClassFinishMinutesRepository(classId.ToString())?.FirstOrDefault()?.FinishMinutes ?? 0;
if (FinishMinutes > 0)
{
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassMinutesRepository(classId);
//完成课时数
var finishHours = FinishMinutes / BasicMinutes;
if (classModel.ClassHours > 0)
{
CompleteProgress = Convert.ToInt32(finishHours / Convert.ToDecimal(classModel.ClassHours) * 100);
}
else if (classModel.ClassHours <= 0 && finishHours > 0)
{
CompleteProgress = 100;
}
}
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Class_ViewModel.CompleteProgress),CompleteProgress},
};
return classRepository.Update(fileds, new WhereHelper(nameof(RB_Class_ViewModel.ClassId), classId));
}
///
/// 获取基础课时分钟数
///
///
///
public int GetClassMinutesModule(int classId)
{
return class_ConfigRepository.GetClassMinutesRepository(classId);
}
///
/// 获取基础课时分钟数
///
///
///
public int GetBasicMinutesModule(int Group_Id)
{
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(Group_Id);
return BasicMinutes;
}
///
/// 更新班级结课日期
///
///
///
public bool UpdateClassEndDateModule(int classId)
{
return classRepository.UpdateClassEndDateRepository(classId);
}
///
/// 生成班级上课计划表
///
///
///
///
///
private List CreateClassPlanList(RB_Class_ViewModel model, List defaultPlanTimeList, int BasicMinutes)
{
var planList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel() { ClassId = model.ClassId, StartTime = DateTime.Now.ToString("yyyy-MM-dd") });
if (planList != null && planList.Count > 0)
{
string ids = string.Join(",", planList.Select(qitem => qitem.ClassPlanId));
if (!string.IsNullOrEmpty(ids))
{
var flag1 = class_TimeRepository.DeleteClassTimeByPlanIdsRepository(ids);
var flag2 = class_PlanRepository.DeleteClassPlanRepository(ids);
}
}
List classPlanList = new List();
if (model.ClassHours > 0)
{
var srartDate = model.OpenTime;
//按周排课和按月排课
if (model.ClassStyle == ClassStyleEnum.Week || model.ClassStyle == ClassStyleEnum.Month)
{
int i = 0;
double totalHours = 0;
while (model.ClassHours > totalHours)
{
var newDate = srartDate.AddDays(i);
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List(),
TeacherId = model.Teacher_Id,
ClassDate = newDate
};
if (model.ClassStyle == ClassStyleEnum.Week)
{
switch (item)
{
case "1":
if (newDate.DayOfWeek == DayOfWeek.Monday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "2":
if (newDate.DayOfWeek == DayOfWeek.Tuesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "3":
if (newDate.DayOfWeek == DayOfWeek.Wednesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "4":
if (newDate.DayOfWeek == DayOfWeek.Thursday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "5":
if (newDate.DayOfWeek == DayOfWeek.Friday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "6":
if (newDate.DayOfWeek == DayOfWeek.Saturday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "7":
if (newDate.DayOfWeek == DayOfWeek.Sunday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
}
}
else if (model.ClassStyle == ClassStyleEnum.Month)
{
if (newDate.Day == Convert.ToInt32(item))
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
}
}
i++;
}
}
//固定日期
else if (model.ClassStyle == ClassStyleEnum.FixedDate)
{
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List(),
TeacherId = model.Teacher_Id,
ClassDate = Convert.ToDateTime(item)
};
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
classPlanList.Add(planModel);
}
}
}
//约课
else
{
}
}
return classPlanList;
}
///
/// 计算每天课时
///
///
///
///
///
private double CalcDayClassHoursModule(List timeList, List classTimeList, RB_Class_ViewModel model, int BasicMinutes)
{
double dayClassHours = 0;
double dayMinutes = 0;
foreach (var sItem in timeList)
{
var timeModel = new RB_Class_Time_ViewModel()
{
StartTime = sItem.StartTime,
EndTime = sItem.EndTime,
TimeHour = sItem.TimeHour,
};
classTimeList.Add(timeModel);
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
if (span.TotalMinutes > 0)
{
dayMinutes += span.TotalMinutes;
}
}
if (model.ClassHourMinute > 0)
{
dayClassHours = dayMinutes / model.ClassHourMinute;
}
else
{
dayClassHours = dayMinutes / BasicMinutes;
}
return dayClassHours;
}
///
/// 根据班级编号获取班级详细信息
///
///
///
public RB_Class_ViewModel GetClassModule(object ClassId)
{
var extModel = classRepository.GetEntity(ClassId);
if (extModel != null && extModel.ClassId > 0)
{
if (extModel.CouseId > 0)
{
extModel.CourseName = courseRepository.GetEntity(extModel.CouseId)?.CourseName ?? "";
}
if (extModel.Teacher_Id > 0)
{
extModel.TeacherName = teacherRepository.GetEntity(extModel.Teacher_Id)?.TeacherName ?? "";
}
//课程梯度价格
extModel.ClassStepPriceList = class_StepPriceRepository.GetClassStepPriceListRepository(new RB_Class_StepPrice_ViewModel() { ClassId = extModel.ClassId })?.ToList() ?? new List();
//课程计划上课日期
extModel.ClassPlanList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel() { ClassId = extModel.ClassId })?.ToList() ?? new List();
//班级上课计划时间列表
var timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { ClassId = extModel.ClassId })?.ToList() ?? new List();
if (extModel.ClassPlanList != null && extModel.ClassPlanList.Count > 0 && timeList != null && timeList.Count > 0)
{
foreach (var item in extModel.ClassPlanList)
{
item.PlanTimeList = timeList?.Where(qitem => qitem.ClassPlanId == item.ClassPlanId)?.ToList() ?? new List();
}
}
if (!string.IsNullOrEmpty(extModel.DefaultTimeJson))
{
extModel.DefaultTimeList = Common.Plugin.JsonHelper.DeserializeObject>(extModel.DefaultTimeJson);
}
if (!string.IsNullOrEmpty(extModel.DateJson) && extModel.ClassStyle != Common.Enum.Course.ClassStyleEnum.OnLine)
{
extModel.WeekDayList = Common.Plugin.JsonHelper.DeserializeObject>(extModel.DateJson);
}
}
return extModel;
}
///
/// 修改班级【正常/删除】状态
///
///
///
///
///
public bool RemoveClassModule(int ClassId, int Status, out string message)
{
message = "";
var orderList = orderRepository.GetOrderPageRepository(1, 1, out _, new RB_Order_ViewModel()
{
ClassId = ClassId,
Q_OrderState = 1
});
if (orderList != null && orderList.Count > 0)
{
message = "此班级下存在正常订单!不能删除!";
return false;
}
Dictionary fileds = new Dictionary()
{
{ nameof(RB_Class_ViewModel.Status),Status},
};
return classRepository.Update(fileds, new WhereHelper(nameof(RB_Class_ViewModel.ClassId), ClassId));
}
///
/// 获取班级计划列表
///
/// 班级编号
/// 月份
///
public object GetClassPlanModule(int classId, string monthStr)
{
List