private List <ISelectListResult> BuildViewBagRelations(TModel src) { var res = new List <ISelectListResult>(); var navs = GetOneToManyNavigations().ToList(); navs.ForEach(n => { using (var serviceScope = _serviceProvider.CreateScope()) { try { var repotype = n.ForeignKey.PrincipalEntityType.ClrType; if (repotype.IsSubclassOf(typeof(HotelDataOwnId))) { var sl = new SelectListResult(); var relrepo = GetModelRepository(serviceScope, n.ForeignKey.PrincipalEntityType.ClrType); var relfield = n.ForeignKey.Properties.First().Name; sl.SelectList = relrepo.GetSelectList(relfield, GetFieldValue(src, relfield)); res.Add(sl); } } catch (Exception ex) { _logger.LogError(ex, "BuildViewBagRelations"); } } }); return(res); }
private CreateTrackingEntry GetNewModel(TrackingEntryType entryType, string dfn) { // *** Gets appropriate model based on entry type and dfn *** CreateTrackingEntry returnModel = new CreateTrackingEntry(); // *** Set up button text, title, other ui elements *** switch (entryType) { case TrackingEntryType.Start: returnModel.ButtonText = "Start Tracking"; returnModel.PageTitle = "Start Tracking a Patient"; returnModel.PageMessage = "The following patient will appear as a tracked patient in the dashboard"; SelectListResult selectListResult = this.DashboardRepository.SelectLists.GetReasonList(); if (selectListResult.Success) { returnModel.Reasons = selectListResult.SelectList; } returnModel.ReasonText = "Reason for Tracking"; break; case TrackingEntryType.Stop: returnModel.ButtonText = "Stop Tracking"; returnModel.PageTitle = "Stop Tracking a Patient"; returnModel.PageMessage = "Patient will no longer appear as a tracked patient in the dashboard"; returnModel.OutcomeTableHeader = "Pregnancy Outcome"; returnModel.OutcomeHeader = "Outcome:"; returnModel.DateHeader = "Outcome/Delivery Date:"; returnModel.ReasonText = "Stop Tracking Reason"; List <string> stopTrackingReasonList = new List <string>() { "First trimester pregnancy failure or loss", "Second trimester pregnancy failure or loss", "Term or pre-term delivery, completed 8 weeks of postpartum care", "Transfer of care", "Moved out of area", "Other" }; returnModel.Reasons = stopTrackingReasonList; break; case TrackingEntryType.Accept: returnModel.ButtonText = "Accept Tracking"; returnModel.PageTitle = "Accept Flagged Patient"; returnModel.PageMessage = "The following patient will appear as a tracked patient in the dashboard"; break; case TrackingEntryType.Reject: returnModel.ButtonText = "Reject Tracking"; returnModel.PageTitle = "Reject Flagged Patient"; returnModel.PageMessage = "The following patient will not appear as a tracked or flagged patient in the dashboard"; break; } // *** Set return url *** if (TempData.ContainsKey(ReturnUrl)) { returnModel.ReturnUrl = TempData[ReturnUrl].ToString(); TempData[ReturnUrl] = TempData[ReturnUrl]; } // *** Get patient demographics *** this.CurrentPatientDfn = dfn; BasePatient currentPatient = this.CurrentPatient; if (!currentPatient.NotFound) { // *** Populate model with data *** returnModel.TrackingEntry = new TrackingEntry() { PatientDfn = dfn, EntryType = entryType, PatientName = currentPatient.Name }; returnModel.Patient = currentPatient; } return(returnModel); }