protected void ASPxTreeList1_CustomDataCallback(object sender, DevExpress.Web.ASPxTreeList.TreeListCustomDataCallbackEventArgs e)
 {
     using (IDocumentSession session = Global.Store.OpenSession())
     {
         string processedId = e.Argument;
         if (e.Argument.StartsWith("!-!"))
         {
             processedId = "{" + e.Argument.Substring(3, e.Argument.Length - 3);
         }
         if (e.Argument.EndsWith("!-!"))
         {
             processedId = processedId.Substring(0, processedId.Length - 3) + "}";
         }
         using (var transaction = new TransactionScope())
         {
             if (session.Query <TreeCheckResult>().Where(x => x.AppID == processedId).Any())
             {
                 TreeMember             member           = session.Load <TreeMember>(session.Query <TreeMember>().Where(x => x.AppID == processedId).First().Id);
                 List <TreeCheckResult> allResults       = session.Query <TreeCheckResult>().Where(r => r.AppID == processedId).ToList();
                 List <TreeCheckResult> processedResults = session.Query <TreeCheckResult>().Where(r => r.AppID == processedId).ToList();
                 foreach (var result in allResults)
                 {
                     if (processedResults.Where(x => x.Title == result.Title).Count() > 1)
                     {
                         TreeCheckResult uniqueResult = result;
                         processedResults.RemoveAll(x => x.Title == result.Title);
                         processedResults.Add(result);
                     }
                 }
                 e.Result = TreeListMemberLogic.HtmlizeResults(processedResults);
             }
             else
             {
                 e.Result = "Results not found";
             }
             transaction.Complete();
         }
     }
 }
        public void Handle(SelfHealthMessage message)
        {
            GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>().Connection.Broadcast("messageReceived");
            using (IDocumentSession session = Global.Store.OpenSession())
            {
                try
                {
                    if (session.Query <TreeMember>().Where(x => x.AppID == message.AppID).Any())
                    {
                        TreeMember theMember = session.Load <TreeMember>(session.Query <TreeMember>().Where(x => x.AppID == message.AppID).First().Id);
                        using (var transaction = new TransactionScope())
                        {
                            theMember.DateChecked = message.DateChecked;
                            List <TreeCheckResult> memberResults = session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID).ToList();
                            foreach (var result in message.Results)
                            {
                                if (memberResults.Any(x => x.Title == result.Title))
                                {
                                    TreeCheckResult formerResult = session.Load <TreeCheckResult>(session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID && x.Title == result.Title).First().Id);
                                    formerResult.Status = result.Status;
                                    formerResult.AdditionalInformation = result.AdditionalInformation;
                                    formerResult.TimeElasped           = result.TimeElasped;
                                    session.SaveChanges();
                                }
                                else
                                {
                                    TreeCheckResult newResult = new TreeCheckResult();
                                    newResult.AppID  = message.AppID;
                                    newResult.Title  = result.Title;
                                    newResult.Status = result.Status;
                                    newResult.AdditionalInformation = result.AdditionalInformation;
                                    newResult.TimeElasped           = result.TimeElasped;
                                    session.Store(newResult);
                                    session.SaveChanges();
                                }
                                //session.SaveChanges();
                            }
                            List <TreeCheckResult> newMemberResults = session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID).ToList();
                            theMember.Status = GetOverallStatus(newMemberResults);
                            session.SaveChanges();
                            transaction.Complete();
                        }

                        //:: SignalR CLIENT ::
                        GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>().Connection.Broadcast("afterProcessing");
                        var hubContext = GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>();
                        hubContext.Connection.Broadcast(JsonConvert.SerializeObject(theMember));
                        //}
                    }


                    else
                    {
                        Component c = new Component();
                        using (var datacontext = new ServiceMonitorDataContext())
                        {
                            var comp = datacontext.Components.Where(x => x.AppID == message.AppID);
                            if (comp.Any())
                            {
                                c.AppID             = comp.First().AppID;
                                c.AppName           = comp.First().AppName;
                                c.HasSubComponents  = comp.First().HasSubComponents == true ? true : false;
                                c.ParentComponentId = comp.First().ParentComponentId;
                            }
                        }
                        using (var transaction = new TransactionScope())
                        {
                            TreeMember m = new TreeMember()
                            {
                                AppID             = message.AppID,
                                AppName           = c.AppName,
                                DateChecked       = message.DateChecked,
                                HasSubComponents  = c.HasSubComponents,
                                ParentComponentId = c.ParentComponentId,
                                Status            = message.OverallStatus
                            };
                            session.Store(m);

                            foreach (var result in message.Results)
                            {
                                TreeCheckResult r = new TreeCheckResult()
                                {
                                    AppID  = message.AppID,
                                    Title  = result.Title,
                                    Status = result.Status,
                                    AdditionalInformation = result.AdditionalInformation,
                                    TimeElasped           = result.TimeElasped
                                };
                                session.Store(r);
                            }
                            ;
                            session.SaveChanges();
                            transaction.Complete();
                        }

                        //:: SignalR CLIENT ::
                        var hubContext = GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>();
                        hubContext.Connection.Broadcast("reloadPage");
                    }
                }
                catch (Exception exp)
                {
                    GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>().Connection.Broadcast("error:" + exp.Message);
                }
            }
        }
예제 #3
0
        public void Handle(SelfHealthMessage message)
        {
            Console.WriteLine();
            Console.WriteLine("[{0:dd-MMM-yyyy hh:mm tt}] {1} Status: {2}", message.DateChecked, message.AppID, message.OverallStatus);
            foreach (var res in message.Results)
            {
                Console.WriteLine("{0}\t{1}\t({2}ms)\t[{3}]", res.Title, res.Status, res.TimeElasped, res.AdditionalInformation);
            }
            Console.WriteLine("---------------------------------------------------");
            Console.WriteLine();
            //Bus.Send<SelfHealthMessage>(x =>
            //    {
            //        x.AppID = message.AppID;
            //        x.DateChecked = message.DateChecked;
            //        x.OverallStatus = message.OverallStatus;
            //        x.Results = message.Results;
            //    });
            //Bus.Send("DejaVu.SelfHealthCheck.WebMonitor.Workers", new SelfHealthMessage()
            //{
            //    AppID = message.AppID,
            //    DateChecked = message.DateChecked,
            //    OverallStatus = message.OverallStatus,
            //    Results = message.Results
            //});
            //Bus.Publish<IMessageReceivedEvent>(e => e.Message = message);
            GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>().Connection.Broadcast("messageReceived");
            DejaVu.SelfHealthCheck.WebMonitor.Workers.RavenDB.RavenStore.CustomInitializeStore();
            using (IDocumentSession session = DejaVu.SelfHealthCheck.WebMonitor.Workers.RavenDB.RavenStore.Store.OpenSession())
            {
                try
                {
                    Component theComponent = new Component();
                    theComponent = session.Query <Component>().Where(x => x.AppID == message.AppID).FirstOrDefault();
                    if (theComponent == null)
                    {
                    }
                    else
                    {
                        using (var transaction = new TransactionScope())
                        {
                            TreeCheckResult        checkResult   = new TreeCheckResult();
                            List <TreeCheckResult> memberResults = session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID).ToList();

                            foreach (var result in message.Results)
                            {
                                if (memberResults.Any(x => x.Title == result.Title))
                                {
                                    TreeCheckResult formerResult = session.Load <TreeCheckResult>(session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID && x.Title == result.Title).First().Id);
                                    formerResult.Status = result.Status;
                                    formerResult.AdditionalInformation = result.AdditionalInformation;
                                    formerResult.TimeElasped           = result.TimeElasped;
                                    session.SaveChanges();
                                }
                                else
                                {
                                    TreeCheckResult newResult = new TreeCheckResult();
                                    newResult.AppID  = message.AppID;
                                    newResult.Title  = result.Title;
                                    newResult.Status = result.Status;
                                    newResult.AdditionalInformation = result.AdditionalInformation;
                                    newResult.TimeElasped           = result.TimeElasped;
                                    session.Store(newResult);
                                    session.SaveChanges();
                                }
                                //session.SaveChanges();
                            }
                            List <TreeCheckResult> newMemberResults = session.Query <TreeCheckResult>().Where(x => x.AppID == message.AppID).ToList();
                            theComponent.DateChecked = message.DateChecked.ToString("dd-MMM-yyyy hh:mm:ss tt");
                            theComponent.Status      = GetOverallStatus(newMemberResults).ToString();
                            session.SaveChanges();
                            transaction.Complete();
                        }
                        var appId = theComponent.AppID;
                        if (appId.StartsWith("{"))
                        {
                            appId = "" + appId.Substring(1, appId.Length - 1);
                        }
                        if (appId.EndsWith("}"))
                        {
                            appId = appId.Substring(0, appId.Length - 1) + "";
                        }
                        theComponent.AppID = appId;
                        GlobalHost.ConnectionManager.GetConnectionContext <MonitorHub>().Connection.Broadcast(JsonConvert.SerializeObject(theComponent));
                    }
                }
                catch (Exception e)
                {
                    ErrorLog log = new ErrorLog()
                    {
                        AppID        = message.AppID,
                        ErrorMessage = e.Message
                    };
                    session.Store(log);
                }
            }
        }