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);
    }
예제 #2
0
    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));
        }
    }
예제 #4
0
    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");
            }
        }
    }
예제 #6
0
    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);
        }
    }
예제 #7
0
    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;
        }
    }
예제 #8
0
    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);
        }
    }