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;
Get["/timeTableData"] = GetTimeTableData;
Get["/TenDay"] = GetTenDay;
}
private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL();
private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL();
private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL();
private EmpInfoIBLL empInfoIbll = new EmpInfoBLL();
private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
private SchoolCalendarIBLL schoolCalendarIbll = new SchoolCalendarBLL();
///
/// 课程表【教师功能、学生功能】
///
///
///
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 startdate = DateTime.Today;
var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
var lessonInfos = stuAttendanceIBLL.GetStuLessonInfo("", "", "");
var strAcademicYear = "";
var strSemester = "";
var AcademicYearShort = "";
// 获取学年,学期
if (!param.StartDate.IsEmpty() && !param.EndDate.IsEmpty())
{
var NewsemesterAndYear = Common.GetSemesterAndYear(param.StartDate);
strAcademicYear = NewsemesterAndYear.AcademicYearLong;
strSemester = NewsemesterAndYear.Semester;
AcademicYearShort = NewsemesterAndYear.AcademicYearShort;
}
else
{
var semesterAndYear = Common.GetSemesterAndYear(startDate);
strAcademicYear = semesterAndYear.AcademicYearLong;
strSemester = semesterAndYear.Semester;
AcademicYearShort = semesterAndYear.AcademicYearShort;
}
if (param.StartDate.IsEmpty() && param.EndDate.IsEmpty())
{
// 校历
var entity = schoolCalendarIbll.GetSchoolCalendarEntityByNo(AcademicYearShort, strSemester);
var StartTime = entity.StartTime.Value;
//获取第几周
var curWeek = WeekOfYear(startdate, entity.StartTime.Value, entity.EndTime.Value);
///获取当前周次开始时间
startDate = Common.CalculateFirstDateOfWeek(StartTime.AddDays(((curWeek - 1) * 14))).ToString("yyyy-MM-dd");
if (curWeek == 1 && Convert.ToDateTime(startDate) < StartTime)//判断第几周
{
startDate = StartTime.ToString("yyyy-MM-dd");
}
endDate = Common.CalculateFirstDateOfWeek(StartTime.AddDays(((curWeek - 1) * 14))).AddDays(13).ToString("yyyy-MM-dd");
param.StartDate = startDate;
param.EndDate = endDate;
}
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,
a.AttendOrNo
}).ToList();
var weeks = list.GroupBy(a => a.LessonDate).ToList();
List