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 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; } /// /// 不包含质控参与记录,仅仅为质控发布对象 /// /// /// public static QCDistributionInfoViewModel FromEntity(QCDistribution entity) { //var usedLabList = new List(); //if (entity.QCDistributionRegisters != null && entity.QCDistributionRegisters.Count > 0) //{ // entity.QCDistributionRegisters.ForEach(x => // { // var tempInfo = PalGainEngine.Instance.Resolve().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; } /// /// 包括质控参与记录列表对象 /// /// /// /// /// public static QCDistributionInfoViewModel FromEntity(QCDistribution entity, int currentPageIndex, int maxItemCount) { //QCDistributionInfoViewModel viewModel = FromEntity(entity); //viewModel.LabList = PalGainEngine.Instance.Resolve().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 ToList() { int itemesCountOnePage = 100; var list = PalGainEngine.Instance.Resolve().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().GetQcDistributions().FirstOrDefault(p => p.Id == viewModel.Id); if (viewModel.AnswerInfo == null) { viewModel.AnswerInfo = new AnswerInfoViewModel(); } exist.AnswerJSON = JsonHelper.JsonSerializer(viewModel.AnswerInfo); return exist; } public static QCDistribution ToEntity(QCDistributionInfoViewModel viewModel) { QCDistribution exist = PalGainEngine.Instance.Resolve().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().SaveQcDistributionRegister(registerInfo); } else { var entity = PalGainEngine.Instance.Resolve().GetQcDistributionRegisters() .FirstOrDefault(p => p.Id == x.Id); if (entity != null) { PalGainEngine.Instance.Resolve().DeleteQcDistributionRegister(entity); } } }); } return exist; } } }