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 : BaseApi { public TimeTable() : base("/learun/adms/timetable") { Get["/list"] = GetList; Get["/StuList"] = GetStuInfo; Get["/StuLessonInfo"] = GetStuLessonInfo; } 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 param = this.GetReqData(); var lessonInfos = stuAttendanceIBLL.GetStuLessonInfo(userInfo.account,param.StartDate,param.EndDate); 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); } /// /// 数字转中文 /// /// 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; } } }