Ejemplo n.º 1
0
        //
        // GET: /Animal/

        public ActionResult Index(int projectid, int researchgroupid = 0, int diseasemodelinductionid = 0)
        {
            if (!(_projectuservalidationservice.UserCanCreateAnimal(projectid) || _projectuservalidationservice.UserCanEnterExperimentData(projectid)))
            {
                ViewBag.ErrorMessage = "Access Denied. Please contact administrator for further assistance.";
                return(View("Error"));
            }

            ViewBag.projectid               = projectid;
            ViewBag.researchgroupid         = researchgroupid;
            ViewBag.diseasemodelinductionid = diseasemodelinductionid;

            int userid = (int)Membership.GetUser().ProviderUserKey;

            ViewBag.researchgroupList = new SelectList(db.Researchgroups.Where(r => r.Status == "Current" &&
                                                                               r.UserInResearchgroups.Where(u => u.Status == "Current" && (u.EndTime == null || u.EndTime > DateTime.Now)).Select(u => u.UserProfileUserId).Contains(userid) &&
                                                                               r.ResearchgroupInMultiPARTProjects.Where(rim => rim.Status == "Current").Select(rim => rim.MultiPARTProjectMultiPARTProjectID).Contains(projectid)
                                                                               ).AsEnumerable(), "ResearchgroupID", "ResearchgroupName", researchgroupid);

            var diseasemodel = from p in db.Procedures
                               where p.Status == "Current" &&
                               p.MultiPARTProjectMultiPARTProjectID == projectid &&
                               p.MultiPARTProjects.Status == "Current" &&
                               p.OptionsProcedurePurpose.OptionValue == "Disease Model Induction"
                               orderby p.ProcedureLabel
                               select new ProcedureViewModel
            {
                ProcedureID    = p.ProcedureID,
                ProcedureLabel = p.ProcedureLabel,
            };

            ViewBag.diseasemodelList = new SelectList(diseasemodel.AsEnumerable(), "ProcedureID", "ProcedureLabel", diseasemodelinductionid);

            var cohorts = (from c in db.Cohorts
                           where c.Status == "Current" &&
                           c.MultiPARTProjectMultiPARTProjectID == projectid &&
                           c.MultiPARTProjects.Status == "Current" &&
                           c.ResearchgroupCohortAssignments.Where(rca => rca.Status == "Current").Select(r => r.ResearchgroupID).Contains(researchgroupid) &&
                           c.CohortProcedureAssignments.Where(cpa => cpa.Status == "Current").Select(cpa => cpa.ProcedureID).Contains(diseasemodelinductionid)
                           select c).AsEnumerable()
                          .Select(c => new CohortListViewModel
            {
                MultiPARTProjectID    = c.MultiPARTProjectMultiPARTProjectID,
                CohortID              = c.CohortID,
                CohortLabel           = c.CohortLabel,
                NumberOfProcedures    = c.CohortProcedureAssignments.Count(x => x.Status == "Current"),
                Cormobidity           = String.Join(", ", c.CohortProcedureAssignments.Where(cpa => cpa.Status == "Current" && cpa.Procedures.Status == "Current" && cpa.Procedures.OptionsProcedurePurpose.OptionValue == "Comorbidity Induction").Select(cpa => cpa.Procedures.ProcedureLabel)),
                DiseaseModelInduction = String.Join(", ", c.CohortProcedureAssignments.Where(cpa => cpa.Status == "Current" && cpa.Procedures.Status == "Current" && cpa.Procedures.OptionsProcedurePurpose.OptionValue == "Disease Model Induction").Select(cpa => cpa.Procedures.ProcedureLabel).ToList()),
                Treatment             = String.Join(", ", c.CohortProcedureAssignments.Where(cpa => cpa.Status == "Current" && cpa.Procedures.Status == "Current" && cpa.Procedures.OptionsProcedurePurpose.OptionValue == "Treatment").Select(cpa => cpa.Procedures.ProcedureLabel).ToList()),
                OutcomeAssessment     = String.Join(", ", c.CohortProcedureAssignments.Where(cpa => cpa.Status == "Current" && cpa.Procedures.Status == "Current" && cpa.Procedures.OptionsProcedurePurpose.OptionValue == "Outcome Assessment").Select(cpa => cpa.Procedures.ProcedureLabel).ToList()),
            });

            ViewBag.N = cohorts.Count();

            ViewBag.researchrole =
                db.UserProjectAssignments.Where(upa => upa.Status == "Current" &&
                                                upa.UserInResearchgroups.UserProfileUserId == userid &&
                                                upa.UserInResearchgroups.ResearchgroupResearchgroupID == researchgroupid &&
                                                upa.ResearchgroupInMultiPARTProjects.Status == "Current" &&
                                                upa.ResearchgroupInMultiPARTProjects.MultiPARTProjectMultiPARTProjectID == projectid &&
                                                upa.ResearchgroupInMultiPARTProjects.ResearchgroupResearchgroupID == researchgroupid
                                                ).Select(upa => upa.Options.OptionValue).ToList();

            return(View(cohorts));
        }