using Dapper;
using Learun.DataBase.Repository;
using Learun.Util;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
namespace Learun.Application.TwoDevelopment.EducationalAdministration
{
///
/// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架
/// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司
/// 创 建:超级管理员
/// 日 期:2023-05-29 14:28
/// 描 述:线上课程
///
public class LessonInfoOfElectiveOnlineService : RepositoryFactory
{
#region 获取数据
///
/// 获取页面显示列表数据
///
/// 查询参数
/// 查询参数
///
public IEnumerable GetPageList(Pagination pagination, string queryJson)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT t.* ");
strSql.Append(" FROM LessonInfoOfElectiveOnline t ");
strSql.Append(" WHERE 1=1 ");
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
if (!queryParam["LessonNo"].IsEmpty())
{
dp.Add("LessonNo", "%" + queryParam["LessonNo"].ToString() + "%", DbType.String);
strSql.Append(" AND t.LessonNo Like @LessonNo ");
}
if (!queryParam["LessonName"].IsEmpty())
{
dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
strSql.Append(" AND t.LessonName Like @LessonName ");
}
if (!queryParam["AcademicYearNo"].IsEmpty())
{
dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
}
if (!queryParam["Semester"].IsEmpty())
{
dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
strSql.Append(" AND t.Semester = @Semester ");
}
if (!queryParam["EmpNo"].IsEmpty())
{
dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
strSql.Append(" AND t.EmpNo = @EmpNo ");
}
if (!queryParam["CheckMark"].IsEmpty())
{
dp.Add("CheckMark", queryParam["CheckMark"].ToString(), DbType.String);
strSql.Append(" AND t.CheckMark = @CheckMark ");
}
var list = new List();
list = this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination).ToList();
//选课专业
var majorSql = @"SELECT t.MajorName,t.MajorNo,a.* FROM ElectiveMajorOnline a left join CdMajor t on a.majorid=t.id";
var electiveMajorOnlineList = this.BaseRepository("CollegeMIS").FindList(majorSql);
foreach (var item in list)
{
//模式二:正式选课
var aa = this.BaseRepository("CollegeMIS").FindList(x => x.LIOEOId == item.Id);
//已报名人数
item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
//审核通过人数
item.StuNum = aa.Where(x => x.Status == 2).Count();
//选课专业
item.ElectiveMajorOnlineList = electiveMajorOnlineList.Where(x => x.LIOEOId == item.Id).ToList();
}
return list;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取LessonInfoOfElectiveOnline表实体数据
///
/// 主键
///
public LessonInfoOfElectiveOnlineEntity GetLessonInfoOfElectiveOnlineEntity(string keyValue)
{
try
{
var opeentity = BaseRepository("CollegeMIS").FindEntity(keyValue);
if (opeentity != null)
{
//模式二:正式选课
var aa = this.BaseRepository("CollegeMIS").FindList(x => x.LIOEOId == opeentity.Id);
//已报名人数
opeentity.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
}
return opeentity;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取LessonInfoOfElectiveOnline表实体数据
///
/// 主键
///
public LessonInfoOfElectiveOnlineEntity GetLessonInfoOfElectiveOnlineEntityByLessonNo(string lessonNo)
{
try
{
return BaseRepository("CollegeMIS").FindEntity(x => x.LessonNo == lessonNo);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取页面显示列表数据【学子在线-线上课程选课】
///
/// 查询参数
///
public IEnumerable GetPageListOfStudent(Pagination pagination, string queryJson)
{
try
{
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
//学号
if (!queryParam["StuNo"].IsEmpty())
{
dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
}
//教学工作安排中“线上选课”工作设置的学年学期
var now = DateTime.Now;
var EADateArrangeEntityAboutElective = this.BaseRepository("CollegeMIS").FindEntity(x => x.WorkName == "线上选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
if (EADateArrangeEntityAboutElective == null)
{
return new List();
}
var strSql = new StringBuilder();
strSql.Append(@"select b.*,c.StuNo,c.StuName,c.Status,a.Id as ElectiveMajorOnlineId,a.MajorId,a.Grade from LessonInfoOfElectiveOnline b
left join StuSelectLessonListOfElectiveOnline c on b.Id=c.LIOEOId and c.StuNo=@StuNo
left join ElectiveMajorOnline a on a.LIOEOId=b.Id
where not exists ( ");
//不显示与已选课程 相同课程名称相同教师的课程
strSql.Append(" select * from StuSelectLessonListOfElectiveOnline s where s.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and s.Semester='" + EADateArrangeEntityAboutElective.Semester + "' and s.StuNo=@StuNo and s.Status <>3 and s.LessonName=b.LessonName and s.EmpNo=b.EmpNo and s.LIOEOId!=b.Id ");
strSql.Append(" ) ");
strSql.Append(" AND b.CheckMark='1' ");
strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "' ");
//学生选课显示‘是否可选’为‘是’的课程信息
strSql.Append(" and b.IsAllowSelect=1 ");
//管理选课专业可以为空
if (!queryParam["StuMajorNo"].IsEmpty())
{
dp.Add("StuMajorNo", queryParam["StuMajorNo"].ToString(), DbType.String);
strSql.Append(" and (a.MajorId is null or a.MajorId = @StuMajorNo ) ");
}
else
{
strSql.Append(" and a.MajorId is null ");
}
if (!queryParam["StuGrade"].IsEmpty())
{
dp.Add("StuGrade", queryParam["StuGrade"].ToString(), DbType.String);
strSql.Append(" and (a.Grade is null or a.Grade = @StuGrade) ");
}
else
{
strSql.Append(" and a.Grade is null ");
}
if (!queryParam["LessonNo"].IsEmpty())
{
dp.Add("LessonNo", "%" + queryParam["LessonNo"].ToString() + "%", DbType.String);
strSql.Append(" AND b.LessonNo like @LessonNo ");
}
if (!queryParam["LessonName"].IsEmpty())
{
dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
strSql.Append(" AND b.LessonName Like @LessonName ");
}
var list = this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination);
foreach (var item in list)
{
//模式二:正式选课
var aa = this.BaseRepository("CollegeMIS").FindList(x => x.LIOEOId == item.Id);
//已报名人数
item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
}
return list;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
#region 提交数据
///
/// 删除实体数据
///
/// 主键
public void DeleteEntity(string keyValue)
{
var db = this.BaseRepository("CollegeMIS").BeginTrans();
try
{
//单个删除
//this.BaseRepository("CollegeMIS").Delete(t => t.Id == keyValue);
//批量删除
foreach (var item in keyValue.Split(','))
{
//删除选课专业
db.ExecuteBySql($"delete from ElectiveMajorOnline where LIOEOId='{item}'");
//删除选修课课程表
db.ExecuteBySql($"delete from LessonInfoOfElectiveOnline where Id='{item}'");
}
db.Commit();
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 保存实体数据(新增、修改)
///
/// 主键
/// 实体
public void SaveEntity(string keyValue, LessonInfoOfElectiveOnlineEntity entity)
{
try
{
if (!string.IsNullOrEmpty(keyValue))
{
entity.Modify(keyValue);
this.BaseRepository("CollegeMIS").Update(entity);
}
else
{
entity.Create();
this.BaseRepository("CollegeMIS").Insert(entity);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
#region 扩展数据
///
/// 启用/停用实体数据
///
/// 主键
public void DoLock(string keyValue, string status)
{
try
{
//单个启用
//this.BaseRepository("CollegeMIS").ExecuteBySql($"update LessonInfoOfElectiveOnline set CheckMark='{status}' where Id='{keyValue}' ");
if (keyValue.Contains(","))
{
keyValue = string.Join("','", keyValue.Split(','));
}
string sql = $"update LessonInfoOfElectiveOnline set CheckMark='{status}' where Id in ('{keyValue}')";
this.BaseRepository("CollegeMIS").ExecuteBySql(sql);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 设置可选/取消可选
///
///
///
public void SetUpIsAllowSelect(string keyValue, int IsAllowSelect)
{
try
{
if (keyValue.Contains(","))
{
keyValue = string.Join("','", keyValue.Split(','));
}
string sql = $"update LessonInfoOfElectiveOnline set IsAllowSelect='{IsAllowSelect}' where Id in ('{keyValue}')";
this.BaseRepository("CollegeMIS").ExecuteBySql(sql);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 批量设置人数
///
///
///
public void SaveStuNumMax(string keyValue, int StuNumMax)
{
try
{
if (keyValue.Contains(","))
{
keyValue = string.Join("','", keyValue.Split(','));
}
this.BaseRepository("CollegeMIS").ExecuteBySql($"update LessonInfoOfElectiveOnline set StuNumMax='{StuNumMax}' where Id in ('{keyValue}')");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取选课时间管理
///
///
public EADateArrangeEntity GetEADateArrangeEntityAboutElective()
{
try
{
var semesterAndYear = Common.GetSemesterAndYear();
var strAcademicYear = semesterAndYear.AcademicYearShort;
var strSemester = semesterAndYear.Semester;
var now = DateTime.Now;
//不判断学年学期
return this.BaseRepository("CollegeMIS").FindEntity(x => x.WorkName == "线上选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
}
}