using Learun.Util;
using System.Data;
using Learun.Application.TwoDevelopment.PersonnelManagement;
using System.Web.Mvc;
using System.Collections.Generic;
using Learun.Application.TwoDevelopment.EducationalAdministration;
using System;
using System.Linq;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers
{
///
/// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
/// Copyright (c) 2013-2018 北京泉江科技有限公司
/// 创 建:超级管理员
/// 日 期:2019-03-25 11:16
/// 描 述:课程表
///
public class TimeTableController : MvcControllerBase
{
private ArrangeLessonTermIBLL arrangeLessonTermIBLL = new ArrangeLessonTermBLL();
private StuAttendanceIBLL stuAttendanceIBLL = new StuAttendanceBLL();
private ArrangeLessonTermOfElectiveIBLL arrangeLessonTermOfElectiveIBLL = new ArrangeLessonTermOfElectiveBLL();
private StuAttendanceLeaveIBLL stuAttendanceLeaveIBLL = new StuAttendanceLeaveBLL();
private StuSelectLessonListOfElectiveIBLL stuSelectLessonList = new StuSelectLessonListOfElectiveBLL();
private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL();
private LessonInfoIBLL lessonInfoIBLL = new LessonInfoBLL();
private Edu_ChangeTeacherLessonIBLL edu_ChangeTeacherLessonIBLL = new Edu_ChangeTeacherLessonBLL();
#region 视图功能
///
/// 主页面
///
///
[HttpGet]
public ActionResult Index()
{
return View();
}
///
/// 考勤
///
///
[HttpGet]
public ActionResult Attendance()
{
return View();
}
[HttpGet]
public ActionResult AttendanceDetail()
{
return View();
}
[HttpGet]
public ActionResult AttendanceStatistic()
{
return View();
}
[HttpGet]
public ActionResult AttendanceList()
{
return View();
}
[HttpGet]
public ActionResult Leave()
{
return View();
}
///
/// 课程表【教务】
///
///
[HttpGet]
public ActionResult IndexInEducation()
{
return View();
}
///
/// 课程表【教学调度】
///
///
[HttpGet]
public ActionResult IndexInEducationSelect()
{
return View();
}
///
/// 课程表--修改教师所带的课程【教务】
///
///
[HttpGet]
public ActionResult IndexInEducationModify()
{
return View();
}
///
/// 表单--修改教师所带的课程【教务】
///
///
[HttpGet]
public ActionResult ModifyLessonForm()
{
return View();
}
///
/// 获取表单数据
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetFormData()
{
var userInfo = LoginUserInfo.Get();
var stuInfo = stuInfoBasicIBLL.GetStuInfoBasicEntityByStuNo(userInfo.account);
StuAttendanceLeaveEntity entity = new StuAttendanceLeaveEntity();
entity.ClassNo = stuInfo.ClassNo;
entity.DeptNo = stuInfo.DeptNo;
entity.Grade = stuInfo.Grade;
entity.MajorNo = stuInfo.MajorNo;
entity.StuNo = userInfo.account;
entity.StuName = userInfo.realName;
var jsonData = new
{
StuAttendanceLeave = entity,
};
return Success(jsonData);
}
///
/// 获取相关课程考勤的学生信息
///
///
[HttpGet]
[AjaxOnly]
public ActionResult AttendanceStudents(string pagination, string queryJson, string lessonSortNo)
{
Pagination paginationobj = pagination.ToObject();
var data = new List();
if (lessonSortNo == "1")//必修课
{
data = arrangeLessonTermIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
}
else if (lessonSortNo == "2")//选修课
{
data = arrangeLessonTermOfElectiveIBLL.AttendanceStudents(paginationobj, queryJson).ToList();
}
var jsonData = new
{
rows = data,
total = paginationobj.total,
page = paginationobj.page,
records = paginationobj.records
};
return Success(jsonData);
}
///
/// 提交课程考勤
///
///
[HttpPost]
[AjaxOnly]
public async Task AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
{
var data = await stuAttendanceIBLL.AttendanceApply(kqType, lessonTime, lessonDate, classRoomNo, dataJson, attenScore, attenCondition);
return Success(data);
}
///
/// 教师/学生课程表
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetData(string startTime, string endTime)
{
var userInfo = LoginUserInfo.Get();
//var startDate = startTime ?? Common.CalculateFirstDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
//var endDate = endTime ?? Common.CalculateLastDateOfWeek(DateTime.Today).ToString("yyyy-MM-dd");
//开始时间
var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
var semesterAndYear = Common.GetSemesterAndYear(startDate);
var strAcademicYear = semesterAndYear.AcademicYearLong;
var strSemester = semesterAndYear.Semester;
var timeTableList = new List();
//课程表
var data = arrangeLessonTermIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
timeTableList.AddRange(data);
//选修课课程表
var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTable(userInfo.account, userInfo.Description, startDate, endDate);
timeTableList.AddRange(dataOfElective);
//var timeTables = data.ToList();
var timeTables = timeTableList.ToList();
var noDataResult = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "", teacherName = userInfo.realName };
if (!timeTables.Any())
{
return JsonResult(noDataResult);
}
var formatDataa = from d in timeTables
let tt = d.LessonTime.Substring(1)
group d by tt into g
orderby g.Key
select new
{
time = g.Key,
list = from e in timeTables
let ee = e.LessonTime.Substring(1)
where ee == g.Key
select new
{
day = e.LessonTime.ToCharArray()[0],
curriculum = string.IsNullOrEmpty(e.EnName) ? (e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName) : (e.LessonSortNo == "2" ? e.EnName + "[选修]" : e.EnName),
lessonName = e.LessonName,
teacher = e.EmpName,
classRoom = e.ClassroomName.Trim(),
academicyear = semesterAndYear.AcademicYearShort,
semester = strSemester,
lessonNo = e?.LessonNo,
teachClassNo = e?.TeachClassNo,
empno = e?.EmpNo,
lessonTime = e.LessonTime,
lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
classRoomNo = e?.ClassRoomNo.Trim(),
lessonSortNo = e.LessonSortNo,
e.OLPEId,
className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName
}
}
;
var leaveList = stuAttendanceLeaveIBLL.GetList();
var formatData = timeTables.OrderBy(a => a.LessonTime.Substring(1))
.Select(a => new
{
time = a.LessonTime.Substring(1),
list = timeTables.Where(b => b.LessonTime.Substring(1) == a.LessonTime.Substring(1))
.Select(b => new
{
day = b.LessonTime.ToCharArray()[0],
curriculum = string.IsNullOrEmpty(b.EnName) ? (b.LessonSortNo == "2" ? b.LessonName + "[选修]" : b.LessonName) : (b.LessonSortNo == "2" ? b.EnName + "[选修]" : b.EnName),
lessonName = b.LessonName,
teacher = b.EmpName,
classRoom = b.ClassroomName.Trim(),
academicyear = semesterAndYear.AcademicYearShort,
semester = strSemester,
lessonNo = b?.LessonNo,
teachClassNo = b?.TeachClassNo,
empno = b?.EmpNo,
lessonTime = b.LessonTime,
lessonDate = b.LessonDate.ToString("yyyy-MM-dd"),
classRoomNo = b?.ClassRoomNo.Trim(),
lessonSortNo = b.LessonSortNo,
b.OLPEId,
className = string.IsNullOrEmpty(b.ClassName) ? "" : b.ClassName,
leaveType = leaveList.Any(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime) ? 1 : 0,
checkType = leaveList.FirstOrDefault(c => c.LessonNo == b.LessonNo && c.StuNo == userInfo.account && c.LessonDate == b.LessonDate && c.LessonTime == b.LessonTime)?.IsCheck,
})
});
//foreach (var item in formatData.list)
//{
// if(leaveList.Any(a=>a.LessonNo==item.))
//}
var result = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", teacherName = userInfo.realName, weekList = formatData };
return JsonResult(result);
}
///
/// 课程表【教务】
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetDataInEducation(string startTime, string endTime, string classNo, string empNo, string schoolId)
{
var userInfo = LoginUserInfo.Get();
//开始时间
var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
var semesterAndYear = Common.GetSemesterAndYear(startDate);
var strAcademicYear = semesterAndYear.AcademicYearLong;
var strSemester = semesterAndYear.Semester;
var timeTableList = new List();
//课程表
var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
timeTableList.AddRange(data);
//选修课课程表
var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
timeTableList.AddRange(dataOfElective);
var timeTables = timeTableList.ToList();
var noDataResult = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
if (!timeTables.Any())
{
return JsonResult(noDataResult);
}
var formatData = from d in timeTables
let tt = d.LessonTime.Substring(1)
group d by tt into g
orderby g.Key
select new
{
time = g.Key,
list = from e in timeTables
let ee = e.LessonTime.Substring(1)
where ee == g.Key
select new
{
day = e.LessonTime.ToCharArray()[0],
curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
teacher = e?.EmpName,
classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
academicyear = semesterAndYear.AcademicYearShort,
semester = strSemester,
lessonNo = e?.LessonNo,
teachClassNo = e?.TeachClassNo,
empno = e?.EmpNo,
lessonTime = e.LessonTime,
lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
lessonSortNo = e.LessonSortNo,
e?.OLPEId,
className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName
}
}
;
var result = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData };
return JsonResult(result);
}
///
/// 课程表【教务】
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetDataInEducationSelect(string startTime, string endTime, string classNo, string empNo, string schoolId)
{
var userInfo = LoginUserInfo.Get();
//开始时间
var startdate = string.IsNullOrEmpty(startTime) ? DateTime.Today : Convert.ToDateTime(startTime);
var startDate = Common.CalculateFirstDateOfWeek(startdate).ToString("yyyy-MM-dd");
var endDate = Common.CalculateLastDateOfWeek(startdate).ToString("yyyy-MM-dd");
var semesterAndYear = Common.GetSemesterAndYear(startDate);
var strAcademicYear = semesterAndYear.AcademicYearLong;
var strSemester = semesterAndYear.Semester;
var timeTableList = new List();
//课程表
var data = arrangeLessonTermIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
timeTableList.AddRange(data);
//选修课课程表
//var dataOfElective = arrangeLessonTermOfElectiveIBLL.GetTimeTableInEducation(startDate, endDate, classNo, empNo, schoolId);
//timeTableList.AddRange(dataOfElective);
var timeTables = timeTableList.ToList();
var noDataResult = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = "" };
if (!timeTables.Any())
{
return JsonResult(noDataResult);
}
var formatData = from d in timeTables
let tt = d.LessonTime.Substring(1)
group d by tt into g
orderby g.Key
select new
{
time = g.Key,
list = from e in timeTables
let ee = e.LessonTime.Substring(1)
where ee == g.Key
select new
{
day = e.LessonTime.ToCharArray()[0],
lessonTime = e.LessonTime,
lessonDate = e.LessonDate.ToString("yyyy-MM-dd"),
schooldId = e?.F_SchoolId,
academicyear = semesterAndYear.AcademicYearShort,
semester = strSemester,
deptNo = e?.DeptNo,
majorNo = e?.MajorNo,
lessonNo = e?.LessonNo,
curriculum = e.LessonSortNo == "2" ? e.LessonName + "[选修]" : e.LessonName,
teachClassNo = e?.TeachClassNo,
className = string.IsNullOrEmpty(e.ClassName) ? "" : e.ClassName,
empno = e?.EmpNo,
teacher = e?.EmpName,
classRoomNo = string.IsNullOrEmpty(e.ClassRoomNo) ? "" : e.ClassRoomNo.Trim(),
classRoom = string.IsNullOrEmpty(e.ClassroomName) ? "" : e.ClassroomName.Trim(),
lessonSortNo = e.LessonSortNo
}
}
;
var result = new
{ schoolName = "课程表", semester = $"{strAcademicYear}学年度 第{strSemester}学期", weekList = formatData };
return JsonResult(result);
}
///
/// 课程表【教务】--班级下拉框信息
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetClassData(string schoolId = "")
{
var data = arrangeLessonTermIBLL.GetClassData(schoolId);
return Success(data);
}
///
/// 课程表【教务】--教师下拉框信息
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetTeacherData(string schoolId = "")
{
var data = arrangeLessonTermIBLL.GetTeacherData(schoolId);
return Success(data);
}
///
/// 表单--修改教师所带的课程【教务】--课程下拉框信息
///
///
[HttpGet]
[AjaxOnly]
public ActionResult GetLessonData()
{
var lessonList = lessonInfoIBLL.GetAllLesson().OrderBy(x => x.LessonNo);
var data = lessonList.Select(x => new { value = x.LessonId, text = x.LessonName + "(" + x.LessonNo + ")" });
return Success(data);
}
#endregion
#region 保存数据
[HttpPost]
[ValidateAntiForgeryToken]
[AjaxOnly]
public ActionResult SaveForm(string keyValue, string strEntity)
{
StuAttendanceLeaveEntity entity = strEntity.ToObject();
entity.TeachClassNo = entity.ClassNo;
stuAttendanceLeaveIBLL.SaveEntity(keyValue, entity);
return Success("保存成功!");
}
///
/// 修改教师课程--保存
///
///
///
///
[HttpPost]
[ValidateAntiForgeryToken]
[AjaxOnly]
public ActionResult SaveChangeTeacherLesson(string strEntity)
{
Edu_ChangeTeacherLessonEntity entity = strEntity.ToObject();
entity.CToTeacherId = entity.CFromTeacherId;
entity.CToTeacherName = entity.CFromTeacherName;
//获取目标课程
var lessonInfoEntity = lessonInfoIBLL.GetLessonInfoEntity(entity.CToLessonId);
if (lessonInfoEntity == null)
{
return Fail("目标课程不存在!");
}
entity.CToLessonId = lessonInfoEntity.LessonNo;
entity.CToLessonName = lessonInfoEntity.LessonName;
entity.CreateTime = DateTime.Now;
if (entity.CFromLessonId == entity.CToLessonId)
{
return Fail("目标课程与原目标一致!");
}
//修改排课、成绩录入相关表
edu_ChangeTeacherLessonIBLL.ModifyTableAboutTeacherLesson(entity);
//新增Edu_ChangeTeacherLesson记录
edu_ChangeTeacherLessonIBLL.SaveEntity("", entity);
return Success("保存成功!");
}
///
/// 考勤统计
///
/// 分页参数
/// 查询参数
///
[HttpGet]
[AjaxOnly]
public ActionResult GetAttendanceStatisticPageList(string pagination, string queryJson)
{
Pagination paginationobj = pagination.ToObject();
var data = stuAttendanceIBLL.GetAttendanceStatisticPageList(paginationobj, queryJson);
var jsonData = new
{
rows = data,
total = paginationobj.total,
page = paginationobj.page,
records = paginationobj.records
};
return Success(jsonData);
}
///
/// 全校学生课程考勤
///
/// 分页参数
/// 查询参数
///
[HttpGet]
[AjaxOnly]
public ActionResult GetAttendancePageList(string pagination, string queryJson)
{
Pagination paginationobj = pagination.ToObject();
var data = stuAttendanceIBLL.GetAttendancePageList(paginationobj, queryJson);
var jsonData = new
{
rows = data,
total = paginationobj.total,
page = paginationobj.page,
records = paginationobj.records
};
return Success(jsonData);
}
#endregion
}
}