using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EMIS.DataLogic.MinorManage.MinorSetting;
using Bowin.Common.Linq.Entity;
using EMIS.ViewModel;
using EMIS.ViewModel.MinorManage.MinorSetting;
using System.Linq.Expressions;
using Bowin.Common.Linq;
using EMIS.Entities;
using EMIS.ViewModel.ScoreManage;
namespace EMIS.CommonLogic.MinorManage.MinorSetting
{
public class MinorConditionServices : BaseServices, IMinorConditionServices
{
public MinorConditionDAL minorConditionDAL { get; set; }
///
/// 查询辅修条件列表
///
///
///
///
///
///
public IGridResultSet MinorConditionViewGrid(ConfiguretView configuretView, int? isCurrent, int pageIndex, int pageSize)
{
Expression> exp = (x => true);
if (isCurrent.HasValue)
{
if (isCurrent == 1)
{
exp = exp.And(x => x.RecordStatus >= (int)SYS_STATUS.USABLE);
}
if (isCurrent == 0)
{
exp = exp.And(x => x.RecordStatus <= (int)SYS_STATUS.UNUSABLE);
}
}
var query = minorConditionDAL.GetMinorConditionViewQueryable(exp);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.Title).ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询辅修信息(Excel)
///
///
///
///
///
public List GetMinorConditionViewList(ConfiguretView configuretView, int? isCurrent, List idList)
{
//毕业条件
Expression> exp = (x => true);
if (isCurrent.HasValue)
{
if (isCurrent == 1)
{
exp = exp.And(x => x.RecordStatus >= (int)SYS_STATUS.USABLE);
}
if (isCurrent == 0)
{
exp = exp.And(x => x.RecordStatus <= (int)SYS_STATUS.UNUSABLE);
}
}
if (idList.Count > 0 && idList != null)
{
exp = exp.And(x => idList.Contains(x.MinorConditionID));
}
var query = minorConditionDAL.GetMinorConditionViewQueryable(exp);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.Title).ToList();
}
///
/// 查询辅修条件(根据ID)
///
///
///
public MinorConditionView GetMinorConditionView(Guid? minorConditionID)
{
try
{
var query = minorConditionDAL
.GetMinorConditionViewQueryable(x => x.MinorConditionID == minorConditionID)
.SingleOrDefault();
return query;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 辅修条件编辑(新增、修改)
///
///
public void MinorConditionEdit(MinorConditionView minorConditionView)
{
try
{
ER_MinorCondition minorCondition = new ER_MinorCondition();
if (minorConditionView.MinorConditionID == null || minorConditionView.MinorConditionID == Guid.Empty)
{
//新增、复制新增
minorCondition = minorConditionDAL.minorConditionRepository
.GetSingle(x => x.Title == minorConditionView.Title);
if (minorCondition != null)
{
throw new Exception("已存在相同的辅修条件。");
}
minorCondition = new ER_MinorCondition();
minorCondition.MinorConditionID = Guid.NewGuid();
minorCondition.Title = minorConditionView.Title;
minorCondition.RecordStatus = minorConditionView.IsEnable ? 1 : 0;
minorCondition.CreateTime = DateTime.Now;
minorCondition.CreateUserID = EMIS.Utility.FormValidate.CustomPrincipal.Current.UserID;
minorCondition.ModifyTime = DateTime.Now;
minorCondition.ModifyUserID = EMIS.Utility.FormValidate.CustomPrincipal.Current.UserID;
UnitOfWork.Add(minorCondition);
}
else
{
//修改
minorCondition = minorConditionDAL.minorConditionRepository
.GetSingle(x => x.MinorConditionID != minorConditionView.MinorConditionID
&& x.Title == minorConditionView.Title && x.MethodFullName == minorConditionView.MethodFullName);
if (minorCondition != null)
{
throw new Exception("已存在相同的辅修条件。");
}
minorCondition = minorConditionDAL.minorConditionRepository
.GetSingle(x => x.MinorConditionID == minorConditionView.MinorConditionID);
if (minorCondition == null)
{
throw new Exception("数据有误,请核查。");
}
minorCondition.Title = minorConditionView.Title;
minorCondition.RecordStatus = minorConditionView.IsEnable ? 1 : 0;
minorCondition.ModifyTime = DateTime.Now;
minorCondition.ModifyUserID = EMIS.Utility.FormValidate.CustomPrincipal.Current.UserID;
}
UnitOfWork.Commit();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 辅修条件删除
///
///
public void MinorConditionDelete(IList minorConditionIDList)
{
try
{
if (minorConditionIDList.Count > 0)
{
UnitOfWork.Delete(x => minorConditionIDList.Contains(x.MinorConditionID));
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 成绩全部及格
///
///
///
public bool AllPass(Guid userID)
{
List scoreList = new List();
if (minorConditionDAL.GetAllScore(userID) != null)
{
scoreList = minorConditionDAL.GetAllScore(userID).ToList();
if (scoreList.Any(x => x.TotalScore < 60))
{
return false;
}
}
return true;
}
///
/// 没有补考记录
///
///
///
public bool NotResit(Guid userID)
{
List scoreList = new List();
if (minorConditionDAL.GetAllScore(userID) != null)
{
scoreList = minorConditionDAL.GetAllScore(userID).ToList();
if (scoreList.Any(x => x.ExamsCategoryID == (int)CF_ExamsCategory.Resit))
{
return false;
}
}
return true;
}
}
}