using System; using System.Collections.Generic; using System.Linq; using System.Web; using sbcLabSystem.Data.Domain.Backstage; using sbcLabSystem.Data.Domain.Account; using PalGain.Core; using sbcLabSystem.Service.QC; using sbcLabSystem.Service.Account; namespace sbcLabSystem.Models.Backstage { public class QCDistributionPageViewModel { public QCDistributionPageViewModel() { QCDistributions = QCDistributionInfoViewModel.ToList(); CurrentQCDistribution = new QCDistributionInfoViewModel(); CurrentPageIndex = 1; } public QCDistributionPageViewModel(int qcDistId, int pageIndex, int maxItemInOnePage) : this(qcDistId, "", pageIndex, maxItemInOnePage) { } public QCDistributionPageViewModel(int qcDistId, string keyWord, int pageIndex, int maxItemInOnePage) { PageNavInfo = new PageNavigationViewModel(pageIndex, PalGainEngine.Instance.Resolve().GetUserRequestInfoQueryable().Count(), maxItemInOnePage); CurrentPageIndex = 1; QCDistributionSampleList = PalGainEngine.Instance.Resolve().GetQcDistributions() .Where(p => p.Id != qcDistId).Select(p => new NameValue() { Id = p.Id, DistNo = p.DistNo }).ToList(); CurrentQCDistRegisterInfo = new QCDistributionRegisterInfoViewModel(); if (qcDistId == 0) { CurrentQCDistribution = new QCDistributionInfoViewModel(); } else { CurrentQCDistribution = QCDistributionInfoViewModel.FromEntity( PalGainEngine.Instance.Resolve().GetQcDistributions() .FirstOrDefault(p => p.Id == qcDistId)); CurrentQCDistribution.AnswerInfo = null; CurrentQCDistribution.AnswerJSON = ""; var result = PalGainEngine.Instance.Resolve().GetUserRequestInfoQueryable(); if (string.IsNullOrEmpty(keyWord) == false) { result = result.Where(p => p.LabCode.ToLower().Contains(keyWord.ToLower()) || p.CompanyName.ToLower().Contains(keyWord.ToLower())); } var list = result .OrderBy(p => p.LabCode).Skip((pageIndex - 1) * maxItemInOnePage) .Take(maxItemInOnePage).ToList(); CurrentQCDistribution.LabList = new List(); list.ForEach(x => { var regResult = PalGainEngine.Instance.Resolve().GetQcDistributionRegisters() .FirstOrDefault(p => p.LabId == x.Id && p.QCDistributionId == qcDistId); if (regResult != null) { var regInfoViewModel = QCDistributionRegisterInfoViewModel.FromEntity(regResult); regInfoViewModel.IsSelected = true; regInfoViewModel.LabId = regResult.LabId; regInfoViewModel.LabName = regResult.LabInfo.LabName; regInfoViewModel.Province = regResult.LabInfo.Province; CurrentQCDistribution.LabList.Add(regInfoViewModel); } else { CurrentQCDistribution.LabList.Add(new QCDistributionRegisterInfoViewModel().CopyFromLabInfo(x)); } }); } } public List QCDistributionSampleList { get; set; } public List QCDistributions { get; set; } public QCDistributionInfoViewModel CurrentQCDistribution { get; set; } public QCDistributionRegisterInfoViewModel CurrentQCDistRegisterInfo { get; set; } public int CurrentPageIndex { get; set; } public int LastPageIndex { get; set; } public int ImportQCDistId { get; set; } public string KeyWord { get; set; } public PageNavigationViewModel PageNavInfo { get; set; } public class NameValue { public int Id { get; set; } public string DistNo { get; set; } } } }