CAESGenome.Models.SequencingViewModel.Create C# (CSharp) Method

Create() public static method

public static Create ( IRepositoryFactory repositoryFactory, User user, JobType jobType = null, SequencingPostModel postModel = null ) : SequencingViewModel
repositoryFactory IRepositoryFactory
user User
jobType JobType
postModel SequencingPostModel
return SequencingViewModel
        public static SequencingViewModel Create(IRepositoryFactory repositoryFactory, User user, JobType jobType = null, SequencingPostModel postModel = null)
        {
            var viewModel = new SequencingViewModel()
                {
                    JobType = jobType,
                    JobTypes = jobType == null ? repositoryFactory.JobTypeRepository.Queryable.Where(a => a.StandardSequencing || a.CustomSequencing).ToList() : new List<JobType>(),
                    PostModel = postModel ?? new SequencingPostModel()
                };

            if (jobType != null)
            {
                var rid = postModel != null && postModel.RechargeAccount != null ? postModel.RechargeAccount.Id : -1;
                viewModel.RechargeAccounts = new SelectList(user.RechargeAccounts, "Id", "AccountNum", rid);

                // shared for bacterial clone, dna submission, user run sequencing
                if (jobType.Id == (int)JobTypeIds.BacterialClone || jobType.Id == (int)JobTypeIds.DnaSubmission || jobType.Id == (int)JobTypeIds.UserRunSequencing)
                {
                    var pts = new List<SelectListItem>();
                    pts.Add(new SelectListItem() { Value = ((int)Core.Resources.PlateTypes.NinetySix).ToString(), Text = EnumUtility.GetEnumDescription(Core.Resources.PlateTypes.NinetySix) });
                    pts.Add(new SelectListItem() { Value = ((int)Core.Resources.PlateTypes.ThreeEightyFour).ToString(), Text = EnumUtility.GetEnumDescription(Core.Resources.PlateTypes.ThreeEightyFour) });
                    viewModel.PlateTypes = new SelectList(pts, "Value", "Text");
                }

                // shared for bacterial clone, dna submission
                if (jobType.Id == (int)JobTypeIds.BacterialClone || jobType.Id == (int)JobTypeIds.DnaSubmission)
                {
                    var pid1 = postModel != null && postModel.Primer1 != null ? postModel.Primer1.Id : -1;
                    viewModel.Primers = new SelectList(repositoryFactory.PrimerRepository.Queryable.Where(a => a.Supplied), "Id", "Name", pid1);
                }

                if (jobType.Id == (int)JobTypeIds.BacterialClone || jobType.Id == (int)JobTypeIds.Sublibrary)
                {
                    var aid = postModel != null && postModel.Antibiotic != null ? postModel.Antibiotic.Id : -1;
                    viewModel.Antibiotics = new SelectList(repositoryFactory.AntibioticRepository.Queryable.OrderBy(a => a.Name), "Id", "Name", aid);

                    var vid = postModel != null && postModel.Vector != null ? postModel.Vector.Id : -1;
                    viewModel.Vectors = new SelectList(repositoryFactory.VectorRepository.Queryable.OrderByDescending(a => a.Name), "Id", "Name", vid);
                }

                // only for baacterial clone
                if (jobType.Id == (int)JobTypeIds.BacterialClone)
                {
                    var sd = new List<SelectListItem>();
                    sd.Add(new SelectListItem() { Value = ((int)SequenceDirection.Forward).ToString(), Text = EnumUtility.GetEnumDescription(SequenceDirection.Forward) });
                    sd.Add(new SelectListItem() { Value = ((int)SequenceDirection.Backward).ToString(), Text = EnumUtility.GetEnumDescription(SequenceDirection.Backward) });
                    viewModel.SequenceDirections = new SelectList(sd, "Value", "Text");

                    var sid = postModel != null && postModel.Strain != null ? postModel.Strain.Id : -1;
                    viewModel.Strains = new SelectList(repositoryFactory.StrainRepository.Queryable.Where(a => a.Supplied), "Id", "Name", sid);

                    var pid2 = postModel != null && postModel.Primer2 != null ? postModel.Primer2.Id : -1;
                    viewModel.Primers2 = new SelectList(repositoryFactory.PrimerRepository.Queryable.Where(a => a.Supplied), "Id", "Name", pid2);

                    var bid = postModel != null && postModel.Bacteria != null ? postModel.Bacteria.Id : -1;
                    viewModel.Bacterias = new SelectList(repositoryFactory.BacteriaRepository.Queryable, "Id", "Name", bid);
                }

                if (jobType.Id == (int)JobTypeIds.DnaSubmission)
                {
                    var jid = postModel != null && postModel.JobType != null ? postModel.JobType.Id : -1;
                    viewModel.DnaJobTypes = new SelectList(repositoryFactory.JobTypeRepository.Queryable.Where(a => a.DNASequencing), "Id", "Name", jid);
                }

                if (jobType.Id == (int)JobTypeIds.UserRunSequencing)
                {
                    var did = postModel != null && postModel.Dye != null ? postModel.Dye.Id : -1;
                    viewModel.Dyes = new SelectList(repositoryFactory.DyeRepository.Queryable.Where(a => a.Supplied && !a.Genotyping), "Id", "Name", did);
                }

                if (jobType.Id == (int)JobTypeIds.Sublibrary)
                {
                    var sid = postModel != null && postModel.TypeOfSample != null ? (int)postModel.TypeOfSample : -1;
                    var st = new List<SelectListItem>();
                    st.Add(new SelectListItem() {Value = ((int)Core.Resources.TypeOfSamples.BAC).ToString(), Text = EnumUtility.GetEnumDescription(Core.Resources.TypeOfSamples.BAC)});
                    st.Add(new SelectListItem() { Value = ((int)Core.Resources.TypeOfSamples.DNA).ToString(), Text = EnumUtility.GetEnumDescription(Core.Resources.TypeOfSamples.DNA) });
                    viewModel.TypeOfSamples = new SelectList(st, "Value", "Text", sid);
                }
            }

            return viewModel;
        }
SequencingViewModel