using CRM.Core.BLL.Exam; using CRM.Core.Common.Layui; using CRM.Core.DAL.Exam; using CRM.Core.Model.Entity; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; namespace CRM.Core.BLL.Application.Exam { public class ExamService { private readonly Exam_DAL _examDal = new Exam_DAL(); private readonly EXAM_PAPER_BL _paper = new EXAM_PAPER_BL(); private readonly EXAM_PAPERSUBJECT_BL _paperSubject = new EXAM_PAPERSUBJECT_BL(); public ExamResult GenerateExam(int paperType, string appid, string appuserid) { var paperId = 0; var isNew = true; //结束时间大于当前时间,然后还没有交卷,说明这个是正在进行中的考试,直接取出 var doPaper = _paper.Get(p => p.APPID == appid && p.APPUSERID == appuserid && p.TYPE == paperType && p.ENDTIME > DateTime.Now && p.HANDTIME == null); if (doPaper != null) { paperId = doPaper.ID; isNew = false; } else { paperId = _examDal.GenerateExam(paperType, appid, appuserid); } var paper = _paper.Get(p => p.ID == paperId); var subject = _paperSubject.GetList(p => p.PAPERID == paperId); var singleSubject = subject.Where(p => p.SUBJECTTYPE == 1).OrderBy(p => p.RN); var composeSubject = subject.Where(p => p.SUBJECTTYPE == 2).OrderBy(p => p.RN); return new ExamResult(isNew, paper, singleSubject, composeSubject); } public bool Save(AnswerDto dto) { var answerList = new Dictionary(); //var subjectList = subject.ToObject>(); foreach (var item in dto.subject) { answerList.Add(item.subjectId, item.answer); } var ret = _paper.HandExamPaper(dto.paperid, answerList); return ret; } public List List(ref Laypage pager, string appid, string appuserid, int? type, DateTime? sTime, DateTime? eTime) { var where = PredicateExtensionses.True(); if (!string.IsNullOrEmpty(appid)) { where = where.And(p => p.APPID == appid); } if (!string.IsNullOrEmpty(appuserid)) { where = where.And(p => p.APPUSERID == appuserid); } if (type.HasValue) { where = where.And(p => p.TYPE == type); } if (sTime.HasValue) { where = where.And(p => p.STARTTIME > sTime.Value); } if (eTime.HasValue) { eTime = eTime.Value.AddDays(1); where = where.And(p => p.STARTTIME < eTime.Value); } var list = _paper.GetList(where, p => p.ID, pager).ToList(); return list; } public ExamResult Show(int paperId) { var paper = _paper.Get(p => p.ID == paperId); var subject = _paperSubject.GetList(p => p.PAPERID == paperId); var singleSubject = subject.Where(p => p.SUBJECTTYPE == 1).OrderBy(p => p.RN); var composeSubject = subject.Where(p => p.SUBJECTTYPE == 2).OrderBy(p => p.RN); return new ExamResult(false, paper, singleSubject, composeSubject); } } public class ExamResult { public ExamResult(bool isNew, EXAM_PAPER paper, IEnumerable singleSubject, IEnumerable composeSubject) { this.isNew = isNew; this.paper = paper; this.singleSubject = singleSubject; this.composeSubject = composeSubject; } public bool isNew { get; set; } public EXAM_PAPER paper { get; set; } public IEnumerable singleSubject { get; set; } public IEnumerable composeSubject { get; set; } } public class AnswerDto { public string appid { get; set; } public string appuserid { get; set; } public int paperid { get; set; } public List subject { get; set; } } public class subject { public int subjectId { get; set; } public string answer { get; set; } } }