using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Common.API;
using Edu.Common.Enum.Question;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.Exam;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.Module.EduTask;
using Edu.Module.Public;
using Edu.Module.User;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.Applet
{
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class AppletIndexController : AppletBaseController
{
///
/// 学生管理处理类
///
private readonly StudentModule studentModule = new StudentModule();
///
/// 学生管理处理类
///
private readonly EducationContractModule educationContractModule = new EducationContractModule();
///
/// 班级管理处理类
///
private readonly ClassModule classModule = new ClassModule();
///
/// 课程处理类对象
///
private readonly CourseModule courseModule = AOP.AOPHelper.CreateAOPObject();
///
/// 教务单据处理类对象
///
private readonly EducationReceiptModule educationReceiptModule = AOP.AOPHelper.CreateAOPObject();
///
/// 试卷处理类对象
///
private readonly Module.Exam.PaperModule paperModule = AOP.AOPHelper.CreateAOPObject();
#region 小程序首页
///
/// 小程序首页
///
///
[HttpPost]
public ApiResult GetIndexInfo()
{
var appletUserInfo = base.AppletUserInfo;
//判断学员是否退学
var studentList = studentModule.GetStudentInfo(appletUserInfo.AccountId, appletUserInfo.Group_Id);
if (studentList == null || !studentList.Any())
{
return ApiResult.Failed(message: $"很抱歉,由于你已经退学,无法继续使用本系统", new { Error = 3 });
}
RB_Student_ViewModel studentModel = new RB_Student_ViewModel();
studentModel = studentList.Where(x => x.ClassStatus == 2).FirstOrDefault();
if (studentModel == null || studentModel.StuId == 0)
{
studentModel = new RB_Student_ViewModel();
studentModel = studentList.Where(x => x.ClassStatus == 1).FirstOrDefault();
if (studentModel == null || studentModel.StuId == 0)
{
studentModel = new RB_Student_ViewModel();
studentModel = studentList.Where(x => x.ClassStatus == 3).FirstOrDefault();
}
}
//获取电子合同 GetStudentContractInfo
var contractList = educationContractModule.GetStudentContractInfo(appletUserInfo.AccountId, appletUserInfo.Group_Id);
var backClassList = educationContractModule.GetStudentBackClassInfo(appletUserInfo.AccountId, appletUserInfo.Group_Id);
var classTimeList = classModule.GetClassTimeByClassId(studentModel.ClassId, appletUserInfo.Group_Id);
var tempList = classTimeList.OrderBy(x => x.NewEndPlanDateTime).Where(x => x.ClassId == studentModel.ClassId && x.NewPlanDateTime.HasValue && System.DateTime.Now >= x.NewPlanDateTime.Value.AddMinutes(-10) && x.NewEndPlanDateTime.HasValue && System.DateTime.Now < x.NewEndPlanDateTime.Value.AddMinutes(30));
if (tempList == null || !tempList.Any())
{
tempList = classTimeList.OrderBy(x => x.NewEndPlanDateTime).Where(x => x.ClassId == studentModel.ClassId && x.NewPlanDateTime.HasValue && System.DateTime.Now <= x.NewPlanDateTime.Value);
}
var classModel = tempList?.OrderBy(x => x.NewPlanDateTime).FirstOrDefault();
if (classModel == null || classModel.ClassTimeId == 0)
{
classModel = new Model.ViewModel.Grade.RB_Class_Time_Extend();
}
#region 我的试卷
List examinationPublishList = new List();
if (studentModel != null && studentModel.GuestId > 0)
{
examinationPublishList = paperModule.GetGuestExaminationPublishPage(1, 5, out long rowsCount, new Model.ViewModel.Exam.RB_Examination_Publish_ViewModel { GuestId = studentModel.GuestId, Group_Id = studentModel.Group_Id });
if (examinationPublishList == null)
{
examinationPublishList = new List();
}
else
{
foreach (var item in examinationPublishList)
{
if (item.ExamStartTime > System.DateTime.Now)
{
item.ExamStatusStr = "未开始";
}
else if (item.ExamEndTime > System.DateTime.Now)
{
if (item.ExamStatus == 0)
{
item.ExamStatusStr = "缺考";
}
else if (item.ExamStatus == 1)
{
item.ExamStatusStr = "完成";
}
}
else if (item.ExamStartTime < System.DateTime.Now && item.ExamEndTime > System.DateTime.Now)
{
item.ExamStatusStr = "已开始";
}
}
}
}
#endregion
var result = new
{
studentModel.SName,//学区
studentModel.CourseName,//课程
studentModel.SurplusHours,//剩余时间
studentModel.TeacherName,//老师
studentModel.ClassId,
studentModel.ClassName,
studentModel.CourseId,
studentModel.GuestId,
EnterPhone = Cache.User.UserReidsCache.GetUserLoginInfo(studentModel.EnterID).UserMobile,
ContractNum = (((contractList != null && contractList.Any()) ? contractList.Count() : 0) + ((backClassList != null && backClassList.Any()) ? backClassList.Count() : 0)),//合同数
ClassPlan = new //我的课表最新一个数据
{
NewPlanDateTimeStr = (classModel.NewPlanDateTime.HasValue) ? classModel?.NewPlanDateTime.Value.ToString("yyyy-MM-dd") : "",
TimeStr = (classModel.NewPlanDateTime.HasValue) ? Common.ConvertHelper.GetTimeStr(classModel.NewPlanDateTime.Value) : "",
TimeStart = classModel.StartTime,
classModel.TeacherName,
TimeStatusStr = classModel.ClassStatus,
},
paperList = examinationPublishList.Select(x => new { x.PaperId, x.Id, x.PaperName, x.PublishPic, ExamStartTime = x.ExamStartTime.ToString("yyyy-MM-dd HH:mm:ss"), x.ExamStatus, x.ExamStatusStr })
};
return ApiResult.Success("", result);
}
#endregion
#region 我的课表
///
/// 老师上课计划统计
///
///
public ApiResult GetStundentPlanStatistical()
{
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
DateTime now = DateTime.Now;
//获取当前月的第一天
DateTime d1 = new DateTime(now.Year, now.Month, 1);
//当月最后一天
DateTime d2 = d1.AddMonths(1).AddDays(-1);
if (string.IsNullOrEmpty(startDate))
{
startDate = Common.ConvertHelper.FormatDate(d1);
}
if (string.IsNullOrEmpty(endDate))
{
endDate = Common.ConvertHelper.FormatDate(d2);
}
else
{
//if (Convert.ToDateTime(endDate) > Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)))
//{
// endDate = Common.ConvertHelper.FormatDate(DateTime.Now);
//}
}
RB_Class_ViewModel query = new RB_Class_ViewModel()
{
StartTime = startDate,
EndTime = endDate,
Group_Id = base.AppletUserInfo.Group_Id,
School_Id = -1,
ClassId = base.ParmJObj.GetInt("ClassId"),
};
var list = classModule.GetStundentPlanModule(query);
List chapterTreeList = new List();
if (list != null && list.Any())
{
string rannkIds = string.Join(",", list.Select(x => x.Ranks));//查询章节信息
chapterTreeList = new CourseModule().GetMatchChapterRepository((list.FirstOrDefault()?.CourseId ?? 0), rannkIds);
}
DateTime startTime = Convert.ToDateTime(query.StartTime);
DateTime endTime = Convert.ToDateTime(query.EndTime);
TimeSpan sp = endTime.Subtract(startTime);
List