using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Web;
|
using sbcLabSystem.Data.Domain.Backstage;
|
using sbcLabSystem.Service.QC;
|
using sbcLabSystem.Service.Account;
|
using PalGain.Core;
|
using BatchService.Framework.Utility;
|
using System.Web.UI.WebControls;
|
|
namespace sbcLabSystem.Models.Backstage
|
{
|
public class QCDistributionInfoViewModel
|
{
|
public int Id { get; set; }
|
public string DistNo { get; set; }
|
public DateTime? IssuedDate { get; set; }
|
public DateTime? CloseDate { get; set; }
|
public DateTime? ModifyDate { get; set; }
|
public string Remark { get; set; }
|
public string IssuedDateString { get; set; }
|
public string CloseDateString { get; set; }
|
public int UsedLabCount { get; set; }
|
public List<QCDistributionRegisterInfoViewModel> LabList { get; set; }
|
public int CurrentPageIndex { get; set; }
|
public int LastPageIndex { get; set; }
|
public AnswerInfoViewModel AnswerInfo { get; set; }
|
public string AnswerJSON { get; set; }
|
public bool IsSubmitAll { get; set; }
|
/// <summary>
|
/// 不包含质控参与记录,仅仅为质控发布对象
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
public static QCDistributionInfoViewModel FromEntity(QCDistribution entity)
|
{
|
//var usedLabList = new List<QCDistributionRegisterInfo>();
|
//if (entity.QCDistributionRegisters != null && entity.QCDistributionRegisters.Count > 0)
|
//{
|
// entity.QCDistributionRegisters.ForEach(x =>
|
// {
|
// var tempInfo = PalGainEngine.Instance.Resolve<AccountService>().GetUserRequestInfoQueryable()
|
// .FirstOrDefault(p => p.Id == x.LabId);
|
// if (tempInfo != null)
|
// {
|
// usedLabList.Add(x);
|
// }
|
// });
|
//}
|
QCDistributionInfoViewModel viewModel = new QCDistributionInfoViewModel()
|
{
|
Id = entity.Id,
|
DistNo = entity.DistNo,
|
Remark = entity.Remark,
|
CloseDate = entity.CloseDate,
|
IssuedDate = entity.IssuedDate,
|
IssuedDateString = entity.IssuedDate.GetValueOrDefault().ToString("yyyy-MM-dd"),
|
CloseDateString = entity.CloseDate.GetValueOrDefault().ToString("yyyy-MM-dd"),
|
UsedLabCount = entity.QCDistributionRegisters != null ?
|
entity.QCDistributionRegisters.Where(p => p.ProjectId <= 4).Count() : 0,
|
ModifyDate = entity.ModifyDate.GetValueOrDefault(),
|
AnswerJSON = entity.AnswerJSON,
|
IsSubmitAll = entity.IsAllSubmit,
|
};
|
return viewModel;
|
}
|
/// <summary>
|
/// 包括质控参与记录列表对象
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <param name="currentPageIndex"></param>
|
/// <param name="maxItemCount"></param>
|
/// <returns></returns>
|
public static QCDistributionInfoViewModel FromEntity(QCDistribution entity, int currentPageIndex, int maxItemCount)
|
{
|
//QCDistributionInfoViewModel viewModel = FromEntity(entity);
|
//viewModel.LabList = PalGainEngine.Instance.Resolve<AccountService>().GetUserRequestInfoQueryable().OrderBy(p => p.Id)
|
// .Skip((currentPageIndex - 1) * maxItemCount).Take(maxItemCount).ToList()
|
// .Select(p => UserRequestViewModel.FromEntity(p)).ToList();
|
//viewModel.LabList.ForEach(x =>
|
//{
|
// QCDistributionRegisterInfo registerInfo = entity.QCDistributionRegisters.FirstOrDefault(p => p.LabId == x.Id && p.QCDistributionId == entity.Id);
|
// if (registerInfo != null)
|
// {
|
// x.IsSelected = true;
|
// x.IsCharged = registerInfo.IsCharged;
|
// x.ProjectId = registerInfo.ProjectId;
|
// x.SampleNo = registerInfo.SampleNo;
|
// x.IsSendEMS = registerInfo.IsSendEMS;
|
// x.EMSNo = registerInfo.EMSNo;
|
// x.PacketContent = registerInfo.PacketContent;
|
// x.QCDistributionRegisterId = registerInfo.Id;
|
// }
|
//});
|
//viewModel.LabRegisterList = entity.QCDistributionRegisters.ToList().Select(p => QCDistributionRegisterInfoViewModel.FromEntity(p)).ToList();
|
//return viewModel;
|
return null;
|
}
|
public static List<QCDistributionInfoViewModel> ToList()
|
{
|
int itemesCountOnePage = 100;
|
var list = PalGainEngine.Instance.Resolve<QCService>().GetQcDistributions().OrderByDescending(p => p.Id)
|
.Take(itemesCountOnePage).ToList();
|
return list.Select(p => QCDistributionInfoViewModel.FromEntity(p)).ToList();
|
}
|
public static QCDistribution ToEntityForAnswerInfo(QCDistributionInfoViewModel viewModel)
|
{
|
QCDistribution exist = PalGainEngine.Instance.Resolve<QCService>().GetQcDistributions().FirstOrDefault(p => p.Id == viewModel.Id);
|
if (viewModel.AnswerInfo == null)
|
{
|
viewModel.AnswerInfo = new AnswerInfoViewModel();
|
}
|
exist.AnswerJSON = JsonHelper.JsonSerializer<AnswerInfoViewModel>(viewModel.AnswerInfo);
|
return exist;
|
}
|
public static QCDistribution ToEntity(QCDistributionInfoViewModel viewModel)
|
{
|
QCDistribution exist = PalGainEngine.Instance.Resolve<QCService>().GetQcDistributions().FirstOrDefault(p => p.Id == viewModel.Id);
|
if (exist == null)
|
{
|
exist = new QCDistribution();
|
}
|
if (viewModel.CloseDate != null)
|
{
|
exist.CloseDate = viewModel.CloseDate;
|
}
|
if (viewModel.IssuedDate != null)
|
{
|
exist.IssuedDate = viewModel.IssuedDate;
|
}
|
exist.DistNo = viewModel.DistNo;
|
exist.Remark = viewModel.Remark;
|
exist.ModifyDate = DateTime.Now;
|
|
if (viewModel.LabList != null && viewModel.LabList.Count > 0)
|
{
|
viewModel.LabList.ForEach(x =>
|
{
|
QCDistributionRegisterInfo registerInfo = QCDistributionRegisterInfoViewModel.ToEntity(x);
|
registerInfo.QCDistributionId = viewModel.Id;
|
registerInfo.LabId = x.LabId;
|
registerInfo.ProjectId = x.ProjectId;
|
if (x.IsSelected)
|
{
|
registerInfo.IsCharged = x.IsCharged;
|
PalGainEngine.Instance.Resolve<QCService>().SaveQcDistributionRegister(registerInfo);
|
}
|
else
|
{
|
var entity = PalGainEngine.Instance.Resolve<QCService>().GetQcDistributionRegisters()
|
.FirstOrDefault(p => p.Id == x.Id);
|
if (entity != null)
|
{
|
PalGainEngine.Instance.Resolve<QCService>().DeleteQcDistributionRegister(entity);
|
}
|
}
|
});
|
}
|
return exist;
|
}
|
}
|
}
|