using DaJiaoYan.Utils;
using Newtonsoft.Json;
using NTwain.Data;
using System;
using System.Collections.Generic;
namespace DaJiaoYan.Models
{
public class UploadHandlerPostParam
{
public enum UploadType
{
///
/// 扫描上传
///
Scan = 1,
///
/// 文件夹上传
///
Directory = 2,
}
public enum MarkType
{
LocalMarking = 2,
OnlineMarking = 1,
}
public enum ErrorType
{
None,
TypeError,
SchoolIdError,
CampusIdError,
TestIdError,
SubjectIdError,
IsSchoolNumberError,
MarkingTypeError,
SignWeightError,
TokenError,
ScannerError,
DirectoryError,
NoImageError,
}
private readonly Dictionary errorInfos = new Dictionary()
{
{ ErrorType.None, "" },
{ ErrorType.TypeError, "上传类型错误" },
{ ErrorType.SchoolIdError, "学校信息错误" },
{ ErrorType.CampusIdError, "校区信息错误" },
{ ErrorType.SubjectIdError, "科目信息错误" },
{ ErrorType.TestIdError, "试卷信息错误" },
{ ErrorType.IsSchoolNumberError, "考号匹配模式错误" },
{ ErrorType.MarkingTypeError, "阅卷模式模式错误" },
{ ErrorType.SignWeightError, "填涂深浅参数错误" },
{ ErrorType.TokenError, "用户信息异常,请重新登录" },
{ ErrorType.ScannerError, "扫描仪异常" },
{ ErrorType.DirectoryError, "选择的文件夹异常" },
{ ErrorType.NoImageError, "没有可上传的图片" },
};
private readonly ErrorType errorType;
[JsonProperty(PropertyName = "token")]
public string Token { get; set; }
[JsonProperty(PropertyName = "type")]
public UploadType Type { get; set; }
[JsonProperty(PropertyName = "school_id")]
public int SchoolId { get; set; }
[JsonProperty(PropertyName = "campus_id")]
public int CampusId { get; set; }
[JsonProperty(PropertyName = "class_id")]
public int ClassId { get; set; }
[JsonProperty(PropertyName = "test_id")]
public int TestId { get; set; }
[JsonProperty(PropertyName = "subject_id")]
public int SubjectId { get; set; }
[JsonProperty(PropertyName = "is_school_no")]
public int IsSchoolNo { get; set; }
[JsonProperty(PropertyName = "sign_weight")]
public int SignWeight { get; set; }
[JsonProperty(PropertyName = "scanner")]
public string Scanner { get; set; }
[JsonProperty(PropertyName = "directory")]
public string Directory { get; set; }
[JsonProperty(PropertyName = "ver")]
public int Ver { get; set; }
public List Files { get; set; }
public int Progress { get; set; }
public bool ScanFinish { get; set; }
public MarkType MarkingType { get; set; }
public ErrorType GetErrorType
{
get
{
return errorType;
}
}
public string ErrorMessage
{
get
{
return errorInfos[GetErrorType];
}
}
public UploadHandlerPostParam(string token, string type, string schoolId, string campusId, string classId, string testId, string subjectId, string isSchoolNo, string signWeight, string scanner, string directory, string markingType, int ver)
{
if (string.IsNullOrEmpty(type) || !Reg.Match(type, "[12]"))
{
errorType = ErrorType.TypeError;
}
else if (string.IsNullOrEmpty(schoolId) || !Reg.Match(schoolId, Reg.NUMBER))
{
errorType = ErrorType.SchoolIdError;
}
else if (string.IsNullOrEmpty(campusId) || !Reg.Match(campusId, Reg.NUMBER))
{
errorType = ErrorType.CampusIdError;
}
else if (string.IsNullOrEmpty(testId) || !Reg.Match(testId, Reg.NUMBER))
{
errorType = ErrorType.TestIdError;
}
else if (string.IsNullOrEmpty(subjectId) || !Reg.Match(subjectId, Reg.NUMBER))
{
errorType = ErrorType.SubjectIdError;
}
else if (string.IsNullOrEmpty(isSchoolNo) || !Reg.Match(isSchoolNo, "[01]"))
{
errorType = ErrorType.IsSchoolNumberError;
}
else if (string.IsNullOrEmpty(signWeight) || !Reg.Match(signWeight, Reg.NUMBER))
{
errorType = ErrorType.SignWeightError;
}
else if (string.IsNullOrEmpty(markingType) || !Reg.Match(markingType, "[12]"))
{
errorType = ErrorType.MarkingTypeError;
}
if (errorType == ErrorType.None)
{
Token = token;
Type = type.ConvertToEnum();
SchoolId = Convert.ToInt32(schoolId);
CampusId = Convert.ToInt32(campusId);
if (Reg.Match(classId, Reg.NUMBER))
{
ClassId = Convert.ToInt32(classId);
}
TestId = Convert.ToInt32(testId);
SubjectId = Convert.ToInt32(subjectId);
IsSchoolNo = Convert.ToInt32(isSchoolNo);
SignWeight = Convert.ToInt32(signWeight);
Scanner = scanner;
Directory = directory;
MarkingType = markingType.ConvertToEnum();
//Files = files;
//Progress = progress;
//ScanFinish = scanFinish;
if (string.IsNullOrEmpty(Token))
{
errorType = ErrorType.TokenError;
}
else if (Type == UploadType.Scan && string.IsNullOrEmpty(Scanner))
{
errorType = ErrorType.ScannerError;
}
else if (Type == UploadType.Directory)
{
if (string.IsNullOrEmpty(Directory) || !FileExts.CheckDirectory(Directory, false))
{
errorType = ErrorType.DirectoryError;
}
else
{
Files = FileExts.GetImageFiles(Directory);
if (Files?.Count < 1)
{
errorType = ErrorType.NoImageError;
}
}
}
}
Ver = ver;
}
}
}