using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using System.Web; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.EducationalAdministration; using Learun.Util; using Nancy; namespace Learun.Application.WebApi.Modules { public class TimeTable : BaseNoLoginApi { public TimeTable() : base("/learun/adms/timetable") { Get["/list"] = GetList; Get["/StuList"] = GetStuInfo; Get["/StuLessonInfo"] = GetStuLessonInfo; Get["/timeTableData"] = GetTimeTableData; } private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL(); private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL(); private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL(); private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL(); /// /// 课程表【教师功能、学生功能】 /// /// /// public Response GetList(dynamic _) { var param = this.GetReqData(); var timeTableList = new List(); //课程表 var data = arrangeLessonTermIBLL.GetTimeTable(userInfo.account, userInfo.Description, param.StartDate, param.EndDate); timeTableList.AddRange(data); //选修课课程表 var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTable(userInfo.account, userInfo.Description, param.StartDate, param.EndDate); timeTableList.AddRange(dataOfElective); var leaveList = stuAttendanceLeaveIBLL.GetList(); foreach (var item in timeTableList) { item.LeaveType = leaveList.Any(c => c.LessonNo == item.LessonNo && c.StuNo == userInfo.account && c.LessonDate == item.LessonDate && c.LessonTime == item.LessonTime) ? "1" : "0"; item.IsCheck = leaveList.FirstOrDefault(c => c.LessonNo == item.LessonNo && c.StuNo == userInfo.account && c.LessonDate == item.LessonDate && c.LessonTime == item.LessonTime)?.IsCheck; } return Success(timeTableList); } /// /// 获取本堂课的学生出勤信息 /// /// /// public Response GetStuInfo(dynamic _) { var param = this.GetReqData(); var result = stuAttendanceIBLL.GetStuInfo(param.AcademicYear, param.Semester, param.LessonNo, param.EmpNo, param.ClassRoomNo, param.LessonTime, param.LessonDate, param.TeachClassNo); var date = Convert.ToDateTime(param.LessonDate).ToString("yyyy-MM-dd"); var time = NumberToChinese(param.LessonTime.Substring(1, 1)); if (result.Count > 0) { var shouldArrive = result.Count; var turnTo = result.Count(a => a.AttendOrNo == "是"); var classRoomName = param.ClassroomName; var className = result.FirstOrDefault().ClassName; var lessonName = result.FirstOrDefault().LessonName; return Success(new { result, date, time, shouldArrive, turnTo, classRoomName, className, lessonName }); } else { return Success(new { result, date, time }); } } public Response GetStuLessonInfo(dynamic _) { var lessonInfos = stuAttendanceIBLL.GetStuLessonInfo(userInfo.account); var empNos = lessonInfos.Select(a => a.EmpNo).ToList(); var lessonTerms = arrangeLessonTermIBLL.GetListByEmpNo(empNos); var list = lessonInfos.Select(a => new { a.LessonName, LessonDate = Convert.ToDateTime(a.LessonDate).ToString("yyyy-MM-dd"), Teacher = lessonTerms.FirstOrDefault(b => b.EmpNo == a.EmpNo).EmpName, a.LessonTime, a.EmpNo, a.ClassRoomName, a.Sort }).ToList(); var weeks = list.GroupBy(a => a.LessonDate).ToList(); List results = new List(); foreach (var item in weeks) { var weekList = list.Where(a => a.LessonDate == item.Key).ToList(); var week = weekList[0].LessonTime.Substring(0, 1); var result = new { week, weekList }; results.Add(result); } return Success(results); } /// /// 全院课程表【按班级分组】 /// /// /// private Response GetTimeTableData(dynamic _) { var param = this.GetReq(); TimeTableData result = new TimeTableData(); //开始时间 var startdate = string.IsNullOrEmpty(param.StartDate) ? DateTime.Today : Convert.ToDateTime(param.StartDate); var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd"); var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd"); result.StartDate = startDate; result.EndDate = endDate; var semesterAndYear = Common.GetSemesterAndYear(startDate); result.AcademicYearNo = semesterAndYear.AcademicYearLong; result.Semester = semesterAndYear.Semester; //课程表数据 var timeTableList = new List(); //必修课课程表 var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, param.ClassNo, param.EmpNo, ""); timeTableList.AddRange(data); //选修课课程表 var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, param.ClassNo, param.EmpNo, ""); timeTableList.AddRange(dataOfElective); var dataTemp = timeTableList.GroupBy(x => new { x.TeachClassNo, x.ClassName, x.LessonSortNo }).Select(x => new ClassDataList() { ClassNo = x.Key.TeachClassNo, ClassName = x.Key.ClassName, LessonSortNo = x.Key.LessonSortNo, TimeTableList = x.Select(y => new TwoDevelopment.EducationalAdministration.TimeTable() { AcademicYear = y.AcademicYear, Semester = y.Semester, DeptNo = y.DeptNo, MajorNo = y.MajorNo, F_SchoolId = y.F_SchoolId, LessonNo = y.LessonNo, LessonName = y.LessonName, LessonDate = y.LessonDate, LessonTime = y.LessonTime, EmpNo = y.EmpNo, EmpName = y.EmpName, TeachClassNo = y.TeachClassNo, ClassName = y.ClassName, ClassRoomNo = y.ClassRoomNo, ClassroomName = y.ClassroomName, LessonSortNo = y.LessonSortNo }).OrderBy(a => a.LessonTime.Substring(0, 1)).ThenBy(a => a.LessonTime.Substring(1)).ToList() }).OrderBy(x => x.LessonSortNo).ThenBy(x => x.ClassNo).ToList(); result.ClassDataList = dataTemp; return Success(result); } /// /// 数字转中文 /// /// eg: 22 /// public string NumberToChinese(string number) { string res = string.Empty; switch (number) { case "1": res = "一"; break; case "2": res = "二"; break; case "3": res = "三"; break; case "4": res = "四"; break; case "5": res = "五"; break; case "6": res = "六"; break; case "7": res = "七"; break; case "8": res = "八"; break; case "9": res = "九"; break; default: res = "零"; break; } return res; } } public class TimeParameter { public string StartDate { get; set; } public string EndDate { get; set; } /// /// 班级编号 /// public string ClassNo { get; set; } /// /// 教师编号 /// public string EmpNo { get; set; } } public class TimeTableData { public string AcademicYearNo { get; set; } public string Semester { get; set; } public string StartDate { get; set; } public string EndDate { get; set; } public List ClassDataList { get; set; } } public class ClassDataList { public string ClassNo { get; set; } public string ClassName { get; set; } public string LessonSortNo { get; set; } public List TimeTableList { get; set; } } }