ComplianceServer/oldcode/Core.BLL/Application/Exam/ExamService.cs

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; }
}
}