126 lines
4.4 KiB
C#
126 lines
4.4 KiB
C#
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<int, string>();
|
|
//var subjectList = subject.ToObject<List<subject>>();
|
|
foreach (var item in dto.subject)
|
|
{
|
|
answerList.Add(item.subjectId, item.answer);
|
|
}
|
|
var ret = _paper.HandExamPaper(dto.paperid, answerList);
|
|
return ret;
|
|
}
|
|
|
|
public List<EXAM_PAPER> List(ref Laypage pager, string appid, string appuserid, int? type, DateTime? sTime, DateTime? eTime)
|
|
{
|
|
var where = PredicateExtensionses.True<EXAM_PAPER>();
|
|
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<EXAM_PAPERSUBJECT> singleSubject, IEnumerable<EXAM_PAPERSUBJECT> 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<EXAM_PAPERSUBJECT> singleSubject { get; set; }
|
|
public IEnumerable<EXAM_PAPERSUBJECT> composeSubject { get; set; }
|
|
}
|
|
|
|
|
|
public class AnswerDto
|
|
{
|
|
public string appid { get; set; }
|
|
public string appuserid { get; set; }
|
|
public int paperid { get; set; }
|
|
public List<subject> subject { get; set; }
|
|
}
|
|
public class subject
|
|
{
|
|
public int subjectId { get; set; }
|
|
public string answer { get; set; }
|
|
}
|
|
}
|