String getEtlCount(Dictionary <String, EtlDownstreamStageTO> allStages, String type) { if (allStages == null || allStages.Count == 0) { return("0"); } int counter = 0; foreach (String key in allStages.Keys) { EtlBatchStage stage = (EtlBatchStage)Enum.Parse(typeof(EtlBatchStage), allStages[key].stage); if (String.Equals(type, "Completed")) { if (stage >= EtlBatchStage.BCMA_DATA_MART) { counter++; } } else if (String.Equals(type, "Active")) { if ((stage > 0 && stage < EtlBatchStage.COMPLETED_WORKFLOW)) // TODO - doesn't appear there is an "errored" batch stage... need to consider?? { counter++; } } else if (String.Equals(type, "Errored")) { // just a placeholder - same comment as above: TODO - doesn't appear there is an "errored" batch stage... need to consider?? } } return(counter.ToString()); }
DataTable getBindableTable(TaggedExtractorConfigArrays tecas, Dictionary <String, EtlDownstreamStageTO> etlStageBySite) { Dictionary <String, String> siteIdsAndNames = DataBindingUtils.getSiteIdAndNameDict(); Dictionary <String, IList <ExtractorConfigurationTO> > active = getConfigsByKeyAndSite("Active", tecas); Dictionary <String, IList <ExtractorConfigurationTO> > queued = getConfigsByKeyAndSite("Queued", tecas); Dictionary <String, IList <ExtractorConfigurationTO> > errored = getConfigsByKeyAndSite("Errored", tecas); Dictionary <String, IList <ExtractorConfigurationTO> > completed = getConfigsByKeyAndSite("Completed", tecas); DataTable mock = new DataTable(); mock.Columns.Add("site"); mock.Columns.Add("progressBarMarkup"); mock.Columns.Add("status"); mock.Columns.Add("statusMarkup"); mock.Columns.Add("adtStatus"); mock.Columns.Add("adtFinishedTimestamp"); mock.Columns.Add("labStatus"); mock.Columns.Add("labFinishedTimestamp"); mock.Columns.Add("vitalsStatus"); mock.Columns.Add("vitalsFinishedTimestamp"); mock.Columns.Add("bcmaStatus"); mock.Columns.Add("bcmaFinishedTimestamp"); mock.Columns.Add("pharmaStatus"); mock.Columns.Add("pharmaFinishedTimestamp"); for (int i = 0; i < siteIdsAndNames.Count; i++) { String currentSite = siteIdsAndNames.ElementAt(i).Key; String dateTimeFormatString = "M/d h:mm tt"; // if any config has been marked errored for this site - show failure if (errored.ContainsKey(currentSite) && errored[currentSite] != null && errored[currentSite].Count > 0) { String controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.Failed_NotStarted); String statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.Failed_NotStarted); mock.Rows.Add(new object[] { siteIdsAndNames.ElementAt(i).Value, DataBindingUtils.getProgressBarCssClassMarkupFromEnum(ProgressBarType.Failed_NotStarted), controlsText, statusMarkup, controlsText, DateTime.Now.ToString(dateTimeFormatString), // ADT controlsText, DateTime.Now.ToString(dateTimeFormatString), // labs controlsText, DateTime.Now.ToString(dateTimeFormatString), // vitals controlsText, DateTime.Now.ToString(dateTimeFormatString), // BCMA controlsText, DateTime.Now.ToString(dateTimeFormatString), // pharma }); continue; } // if all jobs for a site are in queued and no other collections contain site ID, then mark as not started if (!errored.ContainsKey(currentSite) && !active.ContainsKey(currentSite) && !completed.ContainsKey(currentSite) && queued.ContainsKey(currentSite)) { String controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.NotStarted_NotStarted); String statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.NotStarted_NotStarted); mock.Rows.Add(new object[] { siteIdsAndNames.ElementAt(i).Value, DataBindingUtils.getProgressBarCssClassMarkupFromEnum(ProgressBarType.NotStarted_NotStarted), controlsText, statusMarkup, controlsText, DateTime.Now.ToString(dateTimeFormatString), // ADT controlsText, DateTime.Now.ToString(dateTimeFormatString), // labs controlsText, DateTime.Now.ToString(dateTimeFormatString), // vitals controlsText, DateTime.Now.ToString(dateTimeFormatString), // BCMA controlsText, DateTime.Now.ToString(dateTimeFormatString), // pharma }); continue; } // if any config for this site is running or queued - show in progress if ((queued.ContainsKey(currentSite) && queued[currentSite] != null && queued[currentSite].Count > 0) || (active.ContainsKey(currentSite) && active[currentSite] != null && active[currentSite].Count > 0)) { String controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.InProgress_NotStarted); String statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.InProgress_NotStarted); mock.Rows.Add(new object[] { siteIdsAndNames.ElementAt(i).Value, DataBindingUtils.getProgressBarCssClassMarkupFromEnum(ProgressBarType.InProgress_NotStarted), controlsText, statusMarkup, controlsText, DateTime.Now.ToString(dateTimeFormatString), // ADT controlsText, DateTime.Now.ToString(dateTimeFormatString), // labs controlsText, DateTime.Now.ToString(dateTimeFormatString), // vitals controlsText, DateTime.Now.ToString(dateTimeFormatString), // BCMA controlsText, DateTime.Now.ToString(dateTimeFormatString), // pharma }); continue; } // if we show at least one job completed for this site and no configs found in active or queued or errored, consider it complete! if (completed.ContainsKey(currentSite) && completed[currentSite] != null && completed[currentSite].Count > 0) { String controlsText = ""; String statusMarkup = ""; ProgressBarType currentType = 0; if (etlStageBySite.ContainsKey(currentSite)) { EtlBatchStage etlStage = (EtlBatchStage)Enum.Parse(typeof(EtlBatchStage), etlStageBySite[currentSite].stage); if (etlStage == EtlBatchStage.COMPLETED_WORKFLOW) { controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.Completed_Completed); statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.Completed_Completed); currentType = ProgressBarType.Completed_Completed; } else if (etlStage == EtlBatchStage.NOT_STARTED) { controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.Completed_InProgress); statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.Completed_InProgress); currentType = ProgressBarType.Completed_InProgress; } else if (etlStage >= EtlBatchStage.START_WORKFLOW) { controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.Completed_InProgress); statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.Completed_InProgress); currentType = ProgressBarType.Completed_InProgress; } // TBD - how do we show failed ETL????? } else // didn't find site ID in ETL stages { controlsText = DataBindingUtils.getProgressBarTextFromEnum(ProgressBarType.Completed_InProgress); // TBD - should there be a Completed_notStarted status??? seems like there should be... statusMarkup = DataBindingUtils.getStatusCssClassMarkupFromEnum(ProgressBarType.Completed_InProgress); currentType = ProgressBarType.Completed_InProgress; } mock.Rows.Add(new object[] { siteIdsAndNames.ElementAt(i).Value, DataBindingUtils.getProgressBarCssClassMarkupFromEnum(currentType), controlsText, statusMarkup, controlsText, DateTime.Now.ToString(dateTimeFormatString), // ADT controlsText, DateTime.Now.ToString(dateTimeFormatString), // labs controlsText, DateTime.Now.ToString(dateTimeFormatString), // vitals controlsText, DateTime.Now.ToString(dateTimeFormatString), // BCMA controlsText, DateTime.Now.ToString(dateTimeFormatString), // pharma }); continue; } } return(mock); }