using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.DataLogic.ScoreManage; using EMIS.ViewModel; using Bowin.Common.Linq.Entity; using EMIS.Entities; using EMIS.ViewModel.ScoreManage; using EMIS.DataLogic.ExaminationApply; using System.Linq.Expressions; using Bowin.Common.Linq; namespace EMIS.CommonLogic.ScoreManage { public class LevelSettingServices: BaseServices,ILevelSettingServices { public LevelSettingDAL levelSettingDAL { get; set; } public ExaminationSubjectDAL ExaminationSubjectDAL { get; set; } public Bowin.Common.Linq.Entity.IGridResultSet GetLevelSettingGrid(ViewModel.ConfiguretView configuretView, Guid? examinationSubjectID, int pageIndex, int pageSize) { Expression> exp = x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE; if (examinationSubjectID.HasValue) { exp = exp.And(x => x.ExaminationSubjectID == examinationSubjectID); } var query = levelSettingDAL.GetLevelSettingViewQueryable(exp); if (!string.IsNullOrEmpty(configuretView.ConditionValue)) query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); return query.OrderByDescending(x => x.ExaminationSubjectName).ThenByDescending(x => x.MaxScore).ThenByDescending(x => x.MinScore).ToGridResultSet(pageIndex, pageSize); } public LevelSettingView GetLevelSettingView(Guid? LevelSettingID) { var query = levelSettingDAL.GetLevelSettingViewQueryable(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE).Where(x => x.LevelSettingID == LevelSettingID).FirstOrDefault(); return query; } public ER_LevelSetting GetLevelSettingEntity(Guid? LevelSettingID) { return levelSettingDAL.levelSettingRepository.GetSingle(x => x.LevelSettingID == LevelSettingID); } public void Save(LevelSettingView levelSettingView) { try { var query = levelSettingDAL.GetLevelSettingViewQueryable(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE&&x.ExaminationSubjectID==levelSettingView.ExaminationSubjectID).ToList(); //修改的时候排除本身 if (levelSettingView != null) { query = query.Where(x => x.LevelSettingID != levelSettingView.LevelSettingID).ToList(); } foreach (var LevelSetting in query) { if ((LevelSetting.MaxScore >= levelSettingView.MaxScore && LevelSetting.MinScore <= levelSettingView.MaxScore) || (LevelSetting.MaxScore >= levelSettingView.MinScore && LevelSetting.MinScore <= levelSettingView.MinScore)) throw new Exception(string.Format("{0}分数段{1}与{2}<=总成绩<={3}分数段有重合。", LevelSetting.LevelName, LevelSetting.ScoreRange.Replace(" ", ""), levelSettingView.MinScore, levelSettingView.MaxScore)); } ER_LevelSetting levelSettingEntity = null; if (levelSettingView.LevelSettingID == null || levelSettingView.LevelSettingID == Guid.Empty) { levelSettingEntity = new ER_LevelSetting(); levelSettingEntity.LevelSettingID = Guid.NewGuid(); SetNewStatus(levelSettingEntity); UnitOfWork.Add(levelSettingEntity); } else { levelSettingEntity = GetLevelSettingEntity(levelSettingView.LevelSettingID); if (levelSettingEntity == null) throw new Exception("未找到相对应的等级成绩设置!"); SetModifyStatus(levelSettingEntity); } //if (levelSettingEntity.ExaminationSubjectID == null) //{ // EX_ExaminationSubject examinationSubject = ExaminationSubjectDAL.ExaminationSubjectRepository.Entities.Where(x => x.Name == levelSettingView.ExaminationSubjectName).OrderByDescending(x=>x.CreateTime).FirstOrDefault(); // levelSettingEntity.ExaminationSubjectID = levelSettingView.ExaminationSubjectID; //} //else //{ // levelSettingEntity.ExaminationSubjectID = levelSettingView.ExaminationSubjectID; //} levelSettingEntity.ExaminationSubjectID = levelSettingView.ExaminationSubjectID; levelSettingEntity.LevelName = levelSettingView.LevelName; levelSettingEntity.LevelNum = levelSettingView.LevelNo; levelSettingEntity.MaxScore = levelSettingView.MaxScore; levelSettingEntity.MinScore = levelSettingView.MinScore; levelSettingEntity.Remark = levelSettingView.Remark; UnitOfWork.Commit(); } catch (Exception) { throw; } } public void Delete(IList levelSettingID) { if (levelSettingID.Count > 0) { UnitOfWork.Delete(x => levelSettingID.Contains(x.LevelSettingID)); } } } }