private DataTable FormatNodes(NodeHealthSummary nodeSummary) { DataTable dtNodes = new DataTable(); dtNodes.Columns.AddRange(new DataColumn[] { new DataColumn("RowNum"), new DataColumn("NodeIP"), new DataColumn("NodeName"), new DataColumn("StoreID"), new DataColumn("StoreName"), new DataColumn("Errors") }); int RowNum = 0; foreach (var machine in nodeSummary.Machines) { string errorString = ""; List <CMS.AMS.Models.Attribute> allComponentsErrors = new List <CMS.AMS.Models.Attribute>(); foreach (var component in machine.Components) { if (!component.Alive) { component.Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = component.Severity, ParamID = (component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker) ? (component.IsPromoFetchNode ? ServerHealthErrorCodes.PromoFecthNode_Disconnected : ServerHealthErrorCodes.PromotionBroker_Disconnected) : ServerHealthErrorCodes.CustomerBroker_Disconnected), Code = RequestStatusConstants.Failure, Description = ((component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker) ? PhraseLibExtension.PhraseLib.Lookup("term.promotionbroker", LanguageID) : PhraseLibExtension.PhraseLib.Lookup("term.customerbroker", LanguageID)) + " " + PhraseLibExtension.PhraseLib.Lookup("term.disconnected", LanguageID)), LastUpdate = component.LastHeard }); } allComponentsErrors.AddRange(component.Attributes.Where(e => e.Code == RequestStatusConstants.Failure)); } errorString = ServerHealthHelper.FormatErrors(allComponentsErrors, LanguageID); RowNum++; machine.RowNum = RowNum; dtNodes.Rows.Add(RowNum, machine.NodeIP, machine.NodeName, machine.StoreID, machine.StoreName, errorString); } return(dtNodes); }
private DataTable FormatEngines(NodeHealthSummary engineSummary) { DataTable dtEngines = new DataTable(); dtEngines.Columns.AddRange(new DataColumn[] { new DataColumn("RowNum"), new DataColumn("NodeIP"), new DataColumn("NodeName"), new DataColumn("StoreID"), new DataColumn("StoreName"), new DataColumn("Errors") }); int RowNum = 0; foreach (var machine in engineSummary.Machines) { if (!machine.Components[0].Alive) { machine.Components[0].Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = machine.Components[0].Severity, Code = RequestStatusConstants.Failure, ParamID = (machine.Components[0].EnterpriseEngine ? ServerHealthErrorCodes.EnterpriseEngine_Disconnected : ServerHealthErrorCodes.PromotionEngine_Disconnected), Description = PhraseLib.Lookup("term.engine", LanguageID) + " " + PhraseLib.Lookup("term.disconnected", LanguageID), LastUpdate = machine.Components[0].LastHeard }); } string errorString = ServerHealthHelper.FormatErrors(machine.Components[0].Attributes.Where(e => e.Code == RequestStatusConstants.Failure), LanguageID); RowNum++; machine.RowNum = RowNum; dtEngines.Rows.Add(RowNum, machine.NodeIP, machine.NodeName, machine.StoreID, (machine.Components[0].EnterpriseEngine) ? PhraseLib.Lookup("term.all", LanguageID) + " " + PhraseLib.Lookup("term.stores", LanguageID) : machine.StoreName, errorString); } return(dtEngines); }
public static string GetNodes(string URL, int LanguageID) { List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> >(); IRestServiceHelper RESTServiceHelper = CurrentRequest.Resolver.Resolve <IRestServiceHelper>(); KeyValuePair <NodeHealthSummary, string> result = RESTServiceHelper.CallService <NodeHealthSummary>(RESTServiceList.ServerHealthService, URL, LanguageID, HttpMethod.Get, String.Empty, false, headers); NodeHealthSummary nodeSummary = result.Key; string errorMessage = result.Value; if (errorMessage == string.Empty) { var nodes = new List <object>(); if (nodeSummary.Machines.Count > 0) { foreach (var machine in nodeSummary.Machines) { List <CMS.AMS.Models.Attribute> allComponentsErrors = new List <CMS.AMS.Models.Attribute>(); string PBerrorHtml = "", CBerrorHtml = ""; bool HasPB = false, HasCB = false; foreach (var component in machine.Components) { if (!component.Alive) { component.Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = component.Severity, ParamID = (component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker) ? (component.IsPromoFetchNode ? ServerHealthErrorCodes.PromoFecthNode_Disconnected : ServerHealthErrorCodes.PromotionBroker_Disconnected) : ServerHealthErrorCodes.CustomerBroker_Disconnected), Code = RequestStatusConstants.Failure, Description = ((component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker) ? PhraseLibExtension.PhraseLib.Lookup("term.promotionbroker", LanguageID) : PhraseLibExtension.PhraseLib.Lookup("term.customerbroker", LanguageID)) + " " + PhraseLibExtension.PhraseLib.Lookup("term.disconnected", LanguageID)), LastUpdate = component.LastHeard }); } var errors = component.Attributes.Where(e => e.Code == RequestStatusConstants.Failure); allComponentsErrors.AddRange(errors); if (component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker)) { PBerrorHtml = ServerHealthHelper.GenerateErrorTable(errors, LanguageID); HasPB = true; } else if (component.ComponentName.ToUpper().Contains(BrokerNameConstants.CustomerBroker)) { CBerrorHtml = ServerHealthHelper.GenerateErrorTable(errors, LanguageID); HasCB = true; } } string errorString = ServerHealthHelper.FormatErrors(allComponentsErrors, LanguageID); nodes.Add(new { nodeIp = machine.NodeIP, storeName = machine.StoreName, nodeName = machine.NodeName, storeId = machine.StoreID, errorString = errorString, PBerrorHtml = PBerrorHtml, CBerrorHtml = CBerrorHtml, hasCB = HasCB, hasPB = HasPB, Report = machine.Report, Alert = machine.Alert }); } return(JsonConvert.SerializeObject(nodes)); } else { return(JsonConvert.SerializeObject(PhraseLibExtension.PhraseLib.Lookup("term.nomorerecords", LanguageID))); } } else { return(JsonConvert.SerializeObject(errorMessage)); } }
public static string GetEngines(string URL, int LanguageID) { List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> >(); IRestServiceHelper RESTServiceHelper = CurrentRequest.Resolver.Resolve <IRestServiceHelper>(); KeyValuePair <NodeHealthSummary, string> result = RESTServiceHelper.CallService <NodeHealthSummary>(RESTServiceList.ServerHealthService, URL, LanguageID, HttpMethod.Get, String.Empty, false, headers); string errorMessage = result.Value; NodeHealthSummary engineSummary = result.Key; if (errorMessage == string.Empty) { var engines = new List <object>(); if (engineSummary.Machines.Count > 0) { foreach (var machine in engineSummary.Machines) { if (!machine.Components[0].Alive) { machine.Components[0].Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = machine.Components[0].Severity, Code = RequestStatusConstants.Failure, ParamID = (machine.Components[0].EnterpriseEngine ? ServerHealthErrorCodes.EnterpriseEngine_Disconnected : ServerHealthErrorCodes.PromotionEngine_Disconnected), Description = (PhraseLibExtension.PhraseLib.Lookup("term.engine", LanguageID) + " " + PhraseLibExtension.PhraseLib.Lookup("term.disconnected", LanguageID)), LastUpdate = machine.Components[0].LastHeard }); } string errorHtml = ""; var errors = machine.Components[0].Attributes.Where(e => e.Code == RequestStatusConstants.Failure); string errorString = ServerHealthHelper.FormatErrors(errors, LanguageID); errorHtml = ServerHealthHelper.GenerateErrorTable(errors, LanguageID); engines.Add(new { nodeIp = machine.NodeIP, storeName = (machine.Components[0].EnterpriseEngine) ? PhraseLibExtension.PhraseLib.Lookup("term.all", LanguageID) + " " + PhraseLibExtension.PhraseLib.Lookup("term.stores", LanguageID) : machine.StoreName, nodeName = machine.NodeName, storeId = machine.StoreID, errorString = errorString, errorHtml = errorHtml, Report = machine.Report, Alert = machine.Alert }); } return(JsonConvert.SerializeObject(engines)); } else { return(JsonConvert.SerializeObject(PhraseLibExtension.PhraseLib.Lookup("term.nomorerecords", LanguageID))); } } else { return(JsonConvert.SerializeObject(errorMessage)); } }
private void BindErrors(IEnumerable <CMS.AMS.Models.Attribute> Errors, int RowNum, GridView gvErrors, HtmlImage image, HtmlAnchor anchor, string errorDivID) { //localize grid columns gvErrors.Columns[0].HeaderText = PhraseLib.Lookup("term.severity", LanguageID); gvErrors.Columns[1].HeaderText = PhraseLib.Lookup("term.code", LanguageID); gvErrors.Columns[2].HeaderText = PhraseLib.Lookup("term.description", LanguageID); gvErrors.Columns[3].HeaderText = PhraseLib.Lookup("term.duration", LanguageID); if (image != null) { image.ID = image.ID + RowNum.ToString(); String toottip = PhraseLib.Lookup("store-health-ue.ViewHideErrorDetails", LanguageID); image.Attributes.Add("title", System.Web.HttpUtility.HtmlDecode(toottip)); } DataTable dtErrors = new DataTable(); dtErrors.Columns.AddRange(new DataColumn[] { new DataColumn("RowNum"), new DataColumn("ParamID"), new DataColumn("Severity"), new DataColumn("Description"), new DataColumn("Duration"), new DataColumn("NodeIP") }); if (Errors != null && Errors.Count() > 0) { foreach (var error in Errors) { dtErrors.Rows.Add(RowNum.ToString(), error.ParamID, PhraseLib.Lookup("term." + error.Severity, LanguageID), ServerHealthHelper.GetErrorDescription(error.ParamID, LanguageID), error.LastUpdate.ConvertToDuration(LanguageID), RowNum); } gvErrors.DataSource = dtErrors; gvErrors.DataBind(); if (image != null && anchor != null) { image.Attributes.Add("src", "../../images/plus2.png"); anchor.Attributes.Add("href", "JavaScript:divexpandcollapse('" + errorDivID + "','" + image.ID + "','','')"); } } else { if (image != null) { image.Attributes.Add("src", "../../images/plus2-disabled.png"); } if (anchor != null) { anchor.Attributes.Remove("href"); } } }
private void PopulateNodesPage() { //Bind Health List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> >(); IRestServiceHelper RESTServiceHelper = CurrentRequest.Resolver.Resolve <IRestServiceHelper>(); KeyValuePair <NodeHealth, string> result = RESTServiceHelper.CallService <NodeHealth>(RESTServiceList.ServerHealthService, (m_health.HealthServiceURL != string.Empty? m_health.HealthServiceURL + "/nodes/" + Request.QueryString["NodeName"]:""), LanguageID, HttpMethod.Get, String.Empty, false, headers); string errorMessage = result.Value; nodeHealth = result.Key; //Errors DataTable dtErrors = new DataTable(); dtErrors.Columns.AddRange(new DataColumn[] { new DataColumn("Severity"), new DataColumn("ParamID"), new DataColumn("Description"), new DataColumn("Duration") }); gvNodeWarnings.Columns[0].HeaderText = PhraseLib.Lookup("term.severity", LanguageID); gvNodeWarnings.Columns[1].HeaderText = PhraseLib.Lookup("term.code", LanguageID); gvNodeWarnings.Columns[2].HeaderText = PhraseLib.Lookup("term.description", LanguageID); gvNodeWarnings.Columns[3].HeaderText = PhraseLib.Lookup("term.duration", LanguageID); if (errorMessage == string.Empty && nodeHealth != null) { Alert.Checked = nodeHealth.Machine.Alert; Report.Checked = nodeHealth.Machine.Report; bool hasPromotionBroker = false; bool hasCustomerBroker = false; foreach (var component in nodeHealth.Machine.Components) { if (!component.Alive) { component.Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = component.Severity, Code = RequestStatusConstants.Failure, ParamID = (component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker) ? (component.IsPromoFetchNode ? ServerHealthErrorCodes.PromoFecthNode_Disconnected: ServerHealthErrorCodes.PromotionBroker_Disconnected) : ServerHealthErrorCodes.CustomerBroker_Disconnected), Description = (PhraseLibExtension.PhraseLib.Lookup("term.disconnected", LanguageID)), LastUpdate = component.LastHeard }); } foreach (var error in component.Attributes.Where(e => e.Code == RequestStatusConstants.Failure)) { dtErrors.Rows.Add(PhraseLib.Lookup("term." + error.Severity, LanguageID), error.ParamID, ServerHealthHelper.GetErrorDescription(error.ParamID, LanguageID), error.LastUpdate.ConvertToDuration(LanguageID)); } if (component.ComponentName.ToUpper().Contains(BrokerNameConstants.PromotionBroker)) { lblPBStatus.Text = component.Alive ? PhraseLib.Lookup("term.connected", LanguageID) : "<font color=\"red\">" + PhraseLib.Lookup("term.disconnected", LanguageID) + "</font>"; lblPBLastHeard.Text = component.LastHeard.ConvertToLocalDateTime().ToString(); foreach (var attr in component.Attributes) { if (attr.Description.ToUpper().Contains("FETCH")) { lblLastUpdateOffer.Text = attr.LastUpdate.ConvertToLocalDateTime().ToString(); } if (attr.Description.ToUpper().Contains("IPL")) { lblLastIPL.Text = attr.LastUpdate.ConvertToLocalDateTime().ToString(); } } if (lblLastUpdateOffer.Text == "") { lblLastUpdateOffer.Text = "-"; } if (lblLastIPL.Text == "") { lblLastIPL.Text = "-"; } hasPromotionBroker = true; } else if (component.ComponentName.ToUpper().Contains(BrokerNameConstants.CustomerBroker)) { lblCBStatus.Text = component.Alive ? PhraseLib.Lookup("term.connected", LanguageID) : "<font color=\"red\">" + PhraseLib.Lookup("term.disconnected", LanguageID) + "</font>"; lblCBLastHeard.Text = component.LastHeard.ConvertToLocalDateTime().ToString(); lblLastLookUp.Text = ServerHealthHelper.RetrieveAttribute(component.Attributes, ServerHealthErrorCodes.CustomerBroker_LastCustomerLookup); lblLastTransDownload.Text = ServerHealthHelper.RetrieveAttribute(component.Attributes, ServerHealthErrorCodes.CustomerBroker_LastTransactionDownload); lblLastTransUpload.Text = ServerHealthHelper.RetrieveAttribute(component.Attributes, ServerHealthErrorCodes.CustomerBroker_LastTransactionUpload); hasCustomerBroker = true; } } divCB.Visible = hasCustomerBroker; divPB.Visible = hasPromotionBroker; communication.Visible = hasPromotionBroker; if (dtErrors.Rows.Count > 0) { gvNodeWarnings.DataSource = dtErrors; gvNodeWarnings.DataBind(); } else { lblError.Text = "<center>" + PhraseLib.Lookup("term.norecords", LanguageID) + "</center>"; } //Identification lblNodeName.Text = Server.HtmlEncode(nodeHealth.Machine.NodeName); lblIpAddress.Text = Server.HtmlEncode(nodeHealth.Machine.NodeIP); } else { ucServerHealthTabs.SetInfoMessage(errorMessage, true, true); } }
private void PopulateEnginesPage() { //Bind Health string errorMessage = ""; List <KeyValuePair <string, string> > headers = new List <KeyValuePair <string, string> >(); IRestServiceHelper RESTServiceHelper = CurrentRequest.Resolver.Resolve <IRestServiceHelper>(); KeyValuePair <NodeHealth, string> result = RESTServiceHelper.CallService <NodeHealth>(RESTServiceList.ServerHealthService, (hdnURL.Value != string.Empty? hdnURL.Value + "/engines/":"") + Request.QueryString["NodeName"], LanguageID, HttpMethod.Get, String.Empty, false, headers); engineHealth = result.Key; errorMessage = result.Value; if (errorMessage == string.Empty && engineHealth != null) { //Identification lblEngineName.Text = Server.HtmlEncode(engineHealth.Machine.NodeName); lblIpAddress.Text = Server.HtmlEncode(engineHealth.Machine.NodeIP); lblStatus.Text = engineHealth.Machine.Components[0].Alive ? PhraseLib.Lookup("term.connected", LanguageID) : "<font color=\"red\">" + PhraseLib.Lookup("term.disconnected", LanguageID) + "</font>"; lblType.Text = (engineHealth.Machine.Components[0].EnterpriseEngine) ? PhraseLib.Lookup("serverhealth.enterpriseengine", LanguageID) : PhraseLib.Lookup("serverhealth.storeengine", LanguageID); Alert.Checked = engineHealth.Machine.Alert; Report.Checked = engineHealth.Machine.Report; hdnLocationID.Value = engineHealth.Machine.StoreID; hdnEnterpriseEngine.Value = engineHealth.Machine.Components[0].EnterpriseEngine.ToString().ToLower(); if (engineHealth.Machine.Components[0].EnterpriseEngine) { linkConfig.Visible = false; } else { linkConfig.Text = PhraseLib.Lookup("term.storeconfiguration", LanguageID); linkConfig.NavigateUrl = "../store-edit.aspx?LocationID=" + hdnLocationID.Value; linkConfig.Visible = true; } lblStore.Text = Server.HtmlEncode((engineHealth.Machine.Components[0].EnterpriseEngine) ? PhraseLib.Lookup("term.all", LanguageID) + " " + PhraseLib.Lookup("term.stores", LanguageID) : engineHealth.Machine.StoreName); //Last CardHolder Look-Up lblCardholderlookup.Text = ServerHealthHelper.RetrieveAttribute(engineHealth.Machine.Components[0].Attributes, (engineHealth.Machine.Components[0].EnterpriseEngine == true ? ServerHealthErrorCodes.EnterpriseEngine_LastCustomerLookup : ServerHealthErrorCodes.PromotionEngine_LastCustomerLookup)); //Last TransUpload lblTransactionupload.Text = ServerHealthHelper.RetrieveAttribute(engineHealth.Machine.Components[0].Attributes, (engineHealth.Machine.Components[0].EnterpriseEngine == true ? ServerHealthErrorCodes.EnterpriseEngine_LastTransactionUpload : ServerHealthErrorCodes.PromotionEngine_LastTransactionUpload)); //Last Sync lblsync.Text = ServerHealthHelper.RetrieveAttribute(engineHealth.Machine.Components[0].Attributes, (engineHealth.Machine.Components[0].EnterpriseEngine == true ? ServerHealthErrorCodes.EnterpriseEngine_LastSync: ServerHealthErrorCodes.PromotionEngine_LastSync)); //Last Heard lblLastHeard.Text = engineHealth.Machine.Components[0].LastHeard.ConvertToLocalDateTime().ToString(); //Broker to Engine Pending Files //BindFiles(hdnURL.Value + "/engines/" + engineHealth.Machine.NodeName + "/files?offset=0&pagesize=" + hdnPageSize.Value, gvEngineFiles, hdnPageSize, hdnPageCount, loadmoreajaxloader); BindFiles(engineHealth.PendingFilesURL + "?offset=0&pagesize=" + hdnPageSize.Value, gvEngineFiles, hdnPageSize, hdnPageCount, loadmoreajaxloader); hdnPendingFilesURL.Value = engineHealth.PendingFilesURL; //Logix to Broker Pending Files if (engineHealth.Machine.Components[0].EnterpriseEngine) { BindFiles(hdnURL.Value + "/enterprise/logixfiles?offset=0&pagesize=" + hdnPageSize1.Value, gvBrokerFiles, hdnPageSize1, hdnPageCount1, loadmoreajaxloader1); } else { BindFiles(hdnURL.Value + "/stores/" + hdnLocationID.Value + "/logixfiles?offset=0&pagesize=" + hdnPageSize1.Value, gvBrokerFiles, hdnPageSize1, hdnPageCount1, loadmoreajaxloader1); } //Errors if (!engineHealth.Machine.Components[0].Alive) { engineHealth.Machine.Components[0].Attributes.Insert(0, new CMS.AMS.Models.Attribute { Severity = engineHealth.Machine.Components[0].Severity, Code = RequestStatusConstants.Failure, ParamID = (engineHealth.Machine.Components[0].EnterpriseEngine ? ServerHealthErrorCodes.EnterpriseEngine_Disconnected : ServerHealthErrorCodes.PromotionEngine_Disconnected), Description = (PhraseLibExtension.PhraseLib.Lookup("term.engine", LanguageID) + " " + PhraseLibExtension.PhraseLib.Lookup("term.disconnected", LanguageID)), LastUpdate = engineHealth.Machine.Components[0].LastHeard }); } DataTable dtErrors = new DataTable(); dtErrors.Columns.AddRange(new DataColumn[] { new DataColumn("Severity"), new DataColumn("ParamID"), new DataColumn("Description"), new DataColumn("Duration") }); foreach (var error in engineHealth.Machine.Components[0].Attributes.Where(e => e.Code == RequestStatusConstants.Failure)) { dtErrors.Rows.Add(PhraseLib.Lookup("term." + error.Severity, LanguageID), error.ParamID, ServerHealthHelper.GetErrorDescription(error.ParamID, LanguageID), error.LastUpdate.ConvertToDuration(LanguageID)); } gvEngineWarnings.Columns[0].HeaderText = PhraseLib.Lookup("term.severity", LanguageID); gvEngineWarnings.Columns[1].HeaderText = PhraseLib.Lookup("term.code", LanguageID); gvEngineWarnings.Columns[2].HeaderText = PhraseLib.Lookup("term.description", LanguageID); gvEngineWarnings.Columns[3].HeaderText = PhraseLib.Lookup("term.duration", LanguageID); if (dtErrors.Rows.Count == 0) { lblError.Text = "<center>" + PhraseLib.Lookup("term.norecords", LanguageID) + "</center>"; } else { gvEngineWarnings.DataSource = dtErrors; gvEngineWarnings.DataBind(); } } else { ucServerHealthTabs.SetInfoMessage(errorMessage, true, true); loadmoreajaxloader.Visible = false; loadmoreajaxloader1.Visible = false; } }
protected void gvEngines_OnRowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { int RowNum = gvEngines.DataKeys[e.Row.RowIndex].Value.ConvertToInt16(); GridView gvErrors = (GridView)e.Row.FindControl("gvErrors"); e.Row.Cells[6].Style.Add("display", "none"); if (e.Row.RowIndex % 2 == 0) { e.Row.Attributes.Add("class", "shaded"); } e.Row.Attributes.Add("id", "row" + RowNum.ToString()); DataTable dtErrors = new DataTable(); dtErrors.Columns.AddRange(new DataColumn[] { new DataColumn("RowNum"), new DataColumn("ParamID"), new DataColumn("Severity"), new DataColumn("Description"), new DataColumn("Duration"), new DataColumn("NodeIP") }); var machine = engineSummary.Machines.Where(a => a.RowNum == RowNum).First(); var Errors = machine.Components[0].Attributes.Where(b => b.Code == RequestStatusConstants.Failure); HtmlImage image = (HtmlImage)e.Row.FindControl("plusimage"); HtmlAnchor anchor = (HtmlAnchor)e.Row.FindControl("link"); if (image != null) { image.ID = "imgdiv" + RowNum.ToString(); String toottip = PhraseLib.Lookup("store-health-ue.ViewHideErrorDetails", LanguageID); image.Attributes.Add("title", System.Web.HttpUtility.HtmlDecode(toottip)); } //localize grid columns gvErrors.Columns[0].HeaderText = PhraseLib.Lookup("term.severity", LanguageID); gvErrors.Columns[1].HeaderText = PhraseLib.Lookup("term.code", LanguageID); gvErrors.Columns[2].HeaderText = PhraseLib.Lookup("term.description", LanguageID); gvErrors.Columns[3].HeaderText = PhraseLib.Lookup("term.duration", LanguageID); if (Errors.Count() > 0) { if (machine.Report) { if (Errors.Where(a => a.Severity == SeverityConstants.High).Count() > 0) { e.Row.Attributes.Add("class", "shadeddarkred"); } else if (Errors.Where(a => a.Severity == SeverityConstants.Medium).Count() > 0) { e.Row.Attributes.Add("class", "shadedred"); } else if (Errors.Where(a => a.Severity == SeverityConstants.Low).Count() > 0) { e.Row.Attributes.Add("class", "shadedlightred"); } } foreach (var error in Errors) { dtErrors.Rows.Add(RowNum.ToString(), error.ParamID, PhraseLibExtension.PhraseLib.Lookup("term." + error.Severity, LanguageID), ServerHealthHelper.GetErrorDescription(error.ParamID, LanguageID), error.LastUpdate.ConvertToDuration(LanguageID).Replace("Days", PhraseLib.Lookup("term.days", LanguageID)).Replace("Minutes", PhraseLib.Lookup("term.minutes", LanguageID)).Replace("Hours", PhraseLib.Lookup("term.hours", LanguageID)), RowNum); } gvErrors.DataSource = dtErrors; gvErrors.DataBind(); if (image != null) { image.Attributes.Add("src", "../../images/plus2.png"); } if (anchor != null) { anchor.Attributes.Add("href", "JavaScript:divexpandcollapse('div" + RowNum.ToString() + "')"); } } else { if (image != null) { image.Attributes.Add("src", "../../images/plus2-disabled.png"); } if (anchor != null) { anchor.Attributes.Remove("href"); } } AddReportandAlert(e, RowNum, machine); } }