예제 #1
0
        /// <summary>
        /// 向待发送队列中插入一条告警, 如果前一报文是告警,则增加到其AlarmList当中,否则新建一个CommandMsg
        /// 如此实现告警发生、恢复事件与告警改变事件的串行化
        /// </summary>
        /// <param name="alarm"></param>
        public void FillAlarm(TKAlarm alarm)
        {
            if (AlarmFilter != "")
            {
                if (AlarmFilter.IndexOf(alarm.BusinessType) == -1)
                {
                    return;
                }
            }

            lock (m_Messages)
            {
                CommandMsgV2 alarm_msg = null;
                if (m_Messages.Count == 0 || m_Messages[m_Messages.Count - 1].TK_CommandType != Constants.TK_CommandType.ALARM_REPORT)
                {
                    alarm_msg = new CommandMsgV2();
                    alarm_msg.TK_CommandType = Constants.TK_CommandType.ALARM_REPORT;
                    alarm_msg.SetValue("ClientID", ClientID);
                    alarm_msg.SetValue("AlarmList", new ArrayList());

                    m_Messages.Add(alarm_msg);
                }
                else
                {
                    alarm_msg = m_Messages[m_Messages.Count - 1];
                }

                ArrayList t = alarm_msg.GetValue("AlarmList") as ArrayList;
                t.Add(new TKAlarm(alarm));
            }
        }
예제 #2
0
        private void GetAlarms()
        {
            /* SNIPPET 1: START */
            AlarmFilter alarmFilter = new AlarmFilter
            {
                StartTime           = new DateTime(2020, 6, 1),
                EndTime             = new DateTime(2020, 6, 18),
                ExcludeAcknowledged = true
            };
            PagedResult <Alarm> alarmsPager = client.Alarms.Get(alarmFilter);

            // Prints the number of records fetched and paging information
            Console.WriteLine("Total:" + alarmsPager.Total);
            Console.WriteLine("Current page:" + alarmsPager.CurrentPage);
            Console.WriteLine("Page size:" + alarmsPager.PageSize);
            Console.WriteLine("Pages:" + alarmsPager.PageCount);

            /* Console Output: Start
             *  Total:4611
             *  Current page:1
             *  Page size:100
             *  Pages:47
             * Console Output: End */
            Alarm alarm = alarmsPager.Items.ElementAt(0);

            Console.WriteLine(alarm);

            /* Console Output: Start
             * {
             * "Self": "https://win-21dj9jv9qh6/api/v3/alarms/e03d81f9-69de-48e8-92d7-81167df19f6c",
             * "Id": "e03d81f9-69de-48e8-92d7-81167df19f6c",
             * "ItemReference": "WIN-21DJ9JV9QH6:EECMI-NCE25-3",
             * "Name": "EECMI-NCE25-3",
             * "Message": "WIN-21DJ9JV9QH6:EECMI-NCE25-3 is offline",
             * "IsAckRequired": true,
             * "TypeUrl": null,
             * "Type": "alarmValueEnumSet.avOffline",
             * "Priority": 106,
             * "TriggerValue": {
             *  "Value": "",
             *  "UnitsUrl": null,
             *  "Units": "unitEnumSet.noUnits"
             * },
             * "CreationTime": "2020-06-17T11:22:30Z",
             * "IsAcknowledged": false,
             * "IsDiscarded": false,
             * "CategoryUrl": null,
             * "Category": "objectCategoryEnumSet.systemCategory",
             * "ObjectUrl": "https://win-21dj9jv9qh6/api/v3/objects/e03d81f9-69de-48e8-92d7-81167df19f6c",
             * "AnnotationsUrl": "https://win-21dj9jv9qh6/api/v3/alarms/e03d81f9-69de-48e8-92d7-81167df19f6c/annotations"
             * }
             * Console Output: End */
            /* SNIPPET 1: END */
        }
예제 #3
0
        public async Task <IActionResult> GetAlarms([FromRoute] int id, [FromQuery] AlarmFilter filter, [FromQuery] int rowsPerPage = 20, [FromQuery] int pageNumber = 1)
        {
            string userEmail = User.FindFirst(ClaimTypes.Email).Value;
            User   user      = await userManager.FindByEmailAsync(userEmail);

            PaginatedElement <Alarm> alarms = alarmService.GetByPool(id, filter, rowsPerPage, pageNumber, user);

            PaginatedDto <AlarmDto> dto = mapper.Map <PaginatedDto <AlarmDto> >(alarms);

            return(Ok(dto));
        }
        public void TestGetAll()
        {
            //GIVEN
            Mock <IAlarmRepository> alarmRepo    = new Mock <IAlarmRepository>();
            AlarmService            alarmService = new AlarmService(alarmRepo.Object);

            //WHEN
            alarmRepo.Setup(o => o.Count(It.IsAny <DeviceAlarmFilter>())).Returns(3).Verifiable();
            alarmRepo.Setup(o => o.Get(It.IsAny <DeviceAlarmFilter>(), 5, 1)).Returns(new List <Alarm>
            {
                new Alarm
                {
                    Id               = "A45880",
                    DeviceId         = "",
                    SiteId           = "",
                    IsActive         = true,
                    AlarmType        = Alarm.Type.DeviceFailure,
                    AlarmGravity     = Alarm.Gravity.Information,
                    OccuredAt        = DateTime.UtcNow,
                    ShortDescription = "humidité entre 30 et 39",
                    Description      = "L'humidité intérieur est anormale"
                },
                new Alarm
                {
                    Id               = "A45881",
                    DeviceId         = "",
                    SiteId           = "",
                    IsActive         = true,
                    AlarmType        = Alarm.Type.DeviceFailure,
                    AlarmGravity     = Alarm.Gravity.Information,
                    OccuredAt        = DateTime.UtcNow,
                    ShortDescription = "humidité entre 30 et 39",
                    Description      = "L'humidité intérieur est anormale"
                }
            }).Verifiable();

            AlarmFilter alarmFilter = new AlarmFilter
            {
                AlarmType = Alarm.Type.DeviceFailure,
                Gravity   = Alarm.Gravity.Critical
            };

            var items = alarmService.GetAll(alarmFilter, rowsPerPage: 5, pageNumber: 1);

            Check.That(items.PageCount).IsEqualTo(1);
            Check.That(items.TotalItemsCount).IsEqualTo(3);
            Check.That(items.Items).HasSize(2);

            alarmRepo.VerifyAll();
        }
예제 #5
0
        public Alarm Get(int id, User user)
        {
            IFilter <Alarm> filter = new AlarmFilter();

            if (user != null)
            {
                filter = new IdentityAlarmFilter(filter, user);
            }
            Alarm alarm = alarmRepository.GetById(id, filter);

            if (alarm == null)
            {
                throw new NotFoundException(typeof(Alarm));
            }

            return(alarm);
        }
예제 #6
0
        private static AlarmFilter ReadUserInput(string[] args)
        {
            AlarmFilter alarmFilter = new AlarmFilter
            {
                StartTime           = DateTime.Parse(args[0], null, DateTimeStyles.RoundtripKind),
                EndTime             = DateTime.Parse(args[1], null, DateTimeStyles.RoundtripKind),
                PriorityRange       = args[2],
                Type                = args[3].ToLower() != "null" ? Convert.ToInt32(args[3].ToString()) : 0,
                ExcludePending      = args[4].ToLower() != "null" ? Convert.ToBoolean(args[4]) : false,
                ExcludeAcknowledged = !string.IsNullOrEmpty(args[5]) ? Convert.ToBoolean(args[5]) : false,
                ExcludeDiscarded    = !string.IsNullOrEmpty(args[6]) ? Convert.ToBoolean(args[6]) : false,
                Attribute           = args[7].ToLower() != "null" ? Convert.ToInt32(args[7]) : 0,
                Category            = args[8].ToLower() != "null" ? Convert.ToInt32(args[8]) : 0,
                Page                = args[9].ToLower() != "null" ? Convert.ToInt32(args[9]) : 0,
                PageSize            = args[10].ToLower() != "null" ? Convert.ToInt32(args[10]) : 0,
                Sort                = args[11]
            };

            return(alarmFilter);
        }
예제 #7
0
 private void GetSingleAlarm_GetAlarmsForAnObject_GetAlarmsForNetworkDevice(Alarm alarm, Guid objectId, AlarmFilter alarmFilter, MetasysObject device)
 {
     /* SNIPPET 2: START */
     Alarm singleAlarm = client.Alarms.FindById(alarm.Id);
     PagedResult <Alarm> objectAlarms = client.Alarms.GetForObject(objectId, alarmFilter);
     PagedResult <Alarm> deviceAlarms = client.Alarms.GetForNetworkDevice(device.Id, alarmFilter);
     /* SNIPPET 2: END */
 }
예제 #8
0
        public void Run()
        {
            try
            {
                /**** Common vars shared between different snippets: modify the following input according to your testing server *****/
                Guid objectId = new Guid("8e3b3738-2f5f-494d-bde1-fac15da28c86");
                Guid id1      = objectId;
                Guid id2      = new Guid("01e025e8-0fb3-59da-a9b8-2f238c6f011c");

                // Common objects are mocked to do not waste precious roundtrip time on each snippet
                List <Command> commands = new List <Command> {
                    new Command {
                        CommandId = "Adjust"
                    }, new Command {
                        CommandId = "OperatorOverride"
                    }, new Command(), new Command(), new Command {
                        CommandId = "Release"
                    }
                };

                MetasysObject building = new MetasysObject {
                    Id = new Guid("2f321415-35d9-5c48-b643-60c5132cc001")
                };

                MetasysObject sampleEquipment = new MetasysObject {
                    Id = new Guid("0e8c034b-1586-5ed9-8455-dd33e99c2c7e")
                };

                MetasysObject device = new MetasysObject {
                    Id = new Guid("21c605fb-4755-5d65-8e9f-4fc8283b0366")
                };

                AlarmFilter alarmFilter = new AlarmFilter
                {
                    StartTime           = new DateTime(2020, 06, 01),
                    EndTime             = new DateTime(2020, 07, 10),
                    ExcludeAcknowledged = true
                };

                Alarm alarm = new Alarm {
                    Id = new Guid("f1a17676-f421-4649-80a5-b13935ae7404")
                };

                AuditFilter auditFilter = new AuditFilter
                {
                    StartTime          = new DateTime(2020, 06, 01),
                    EndTime            = new DateTime(2020, 06, 24),
                    OriginApplications = OriginApplicationsEnum.SystemSecurity | OriginApplicationsEnum.AuditTrails,
                    ActionTypes        = ActionTypeEnum.Subsystem | ActionTypeEnum.Command
                };

                Audit audit = new Audit {
                    Id = new Guid("f798591b-e6d6-441f-8f7b-596fc2e6c003")
                };

                Audit auditForAnnotation = new Audit {
                    Id = new Guid("f179a59c-ce36-47e1-afa6-f873b80259ed")
                };

                /********************************************************************************************************************/
                var option = "";
                while (option != "99")
                {
                    PrintMenu();
                    Console.Write("\r\nSelect an option: ");
                    option = Console.ReadLine();
                    Console.WriteLine();
                    switch (option)
                    {
                    case "1":
                        TryLogin_Refresh();
                        break;

                    case "2":
                        GetObjectIdentifier();
                        break;

                    case "3":
                        ReadProperty(objectId);
                        break;

                    case "4":
                        ReadPropertyMultiple(id1, id2);
                        break;

                    case "5":
                        WriteProperty();
                        break;

                    case "6":
                        WritePropertyMultiple(id1, id2);
                        break;

                    case "7":
                        GetCommands(objectId);
                        break;

                    case "8":
                        SendCommands(objectId, commands);
                        break;

                    case "9":
                        GetNetworkDeviceTypes_GetNetworkDevices();
                        break;

                    case "10":
                        GetObjects();
                        break;

                    case "11":
                        Localize();
                        break;

                    case "12":
                        GetSpaces();
                        break;

                    case "13":
                        GetSpaceTypes();
                        break;

                    case "14":
                        GetEquipment();
                        break;

                    case "15":
                        GetSpaceEquipment_GetSpaceChildren(building);
                        break;

                    case "16":
                        GetEquipmentPoints(sampleEquipment);
                        break;

                    case "17":
                        GetAlarms();
                        break;

                    case "18":
                        GetSingleAlarm_GetAlarmsForAnObject_GetAlarmsForNetworkDevice(alarm, objectId, alarmFilter, device);
                        break;

                    case "19":
                        GetAlarmsAnnotation(alarm);
                        break;

                    case "20":
                        GetTrendedAttributes_GetSamples();
                        break;

                    case "21":
                        GetAudits();
                        break;

                    case "22":
                        GetSingleAudit_GetAuditsForAnObject(audit, objectId, auditFilter);
                        break;

                    case "23":
                        GetAuditsAnnotation(audit);
                        break;

                    case "24":
                        DiscardSingleAudit(audit);
                        break;

                    case "25":
                        ChangeApiVersion();
                        break;

                    case "26":
                        ChangeHostname();
                        break;

                    case "27":
                        AddAuditAnnotation(auditForAnnotation);
                        break;

                    case "28":
                        AddAuditAnnotationMultiple();
                        break;

                    case "29":
                        DiscardAuditMultiple();
                        break;

                    case "30":
                        GetServerTime();
                        break;

                    case "99":
                        return;     // Exit from JSON output demo
                    }
                    Console.WriteLine();
                    Console.WriteLine("Press Enter to return to the JSON output menu...");
                    Console.ReadLine();
                    Console.WriteLine();
                }
            }
            catch (Exception exception)
            {
                log.Logger.Error(string.Format("{0}", exception.Message));
                Console.WriteLine("\n \nAn Error occurred. Press Enter to return to Main Menu");
                Console.ReadLine();
            }
        }
        public async Task <IActionResult> Count([FromQuery] AlarmFilter filter)
        {
            int count = alarmService.CountAll(filter);

            return(Ok(count));
        }
        public async Task <IActionResult> Get([FromQuery] AlarmFilter filter, [FromQuery] int rowsPerPage = 0, [FromQuery] int pageNumber = 1)
        {
            PaginatedItems <Alarm> alarms = alarmService.GetAll(filter, rowsPerPage, pageNumber);

            return(Ok(Mapper.Map <PaginatedItemsDto <AlarmDetailsDto> >(alarms)));
        }
예제 #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AlarmGetListExRequest"/> class,
 /// with a filter, records / page, and sort order.
 /// </summary>
 /// <param name="alarmFilter">An AlarmFilter object containing the GUID (Alarm.ItemGuid) to filter on</param>
 /// <param name="recordsPerPage">Number of Records Per Page to be returned</param>
 /// <param name="sortOrder">A SortOrder object containing an array of SortKeys, and the sort Order</param>
 public AlarmGetListExRequest(AlarmFilter alarmFilter, string recordsPerPage, SortOrder sortOrder)
 {
     AlarmFilter = alarmFilter;
     RecordsPerPage = recordsPerPage;
     SortOrder = sortOrder;
 }
예제 #12
0
 public ActionResult Filter(AlarmFilter alarmFilter)
 {
     return(ActionResponse(Data: _AlarmBO.Filter(alarmFilter), BusinessObject: _AlarmBO));
 }
예제 #13
0
        public void Run()
        {
            try {
                Console.WriteLine("Enter alarm id to get alarm details: ");
                string stringAlarmId = Console.ReadLine();
                Guid   alarmId       = Guid.Parse(stringAlarmId);

                Alarm alarmItem = client.Alarms.FindById(alarmId);

                Console.WriteLine(string.Format("\n Alarm details found for {0}", alarmId));
                Console.WriteLine($"\n Id: {alarmItem.Id}, Name: {alarmItem.Name}, ItemReference: {alarmItem.ItemReference}");

                string      getAlarms;
                AlarmFilter getAlarmsFilter = new AlarmFilter();

                Console.WriteLine("Please enter these parameters separated by space: Start Time, End Time, Priority range, Type, Exclude pending, Exclude acknowledged, Exclude discarded, Attribute, Category, Page, Page Size, Sort" +
                                  "\nRefer to the metasys-server/basic-services-dotnet README if you need help getting started.");
                getAlarms = Console.ReadLine();
                string[] args;
                args = getAlarms.Split(' ');

                if (args != null)
                {
                    getAlarmsFilter = ReadUserInput(args);
                }

                Console.WriteLine("\n List of alarms with details");

                var alarmItems = client.Alarms.Get(getAlarmsFilter);

                Console.WriteLine($"\n Total: {alarmItems.Total}");
                Console.WriteLine($"\n Page Count: {alarmItems.PageCount}");
                Console.WriteLine($"\n Page Size: {alarmItems.PageSize}");
                Console.WriteLine($"\n Current Page: {alarmItems.CurrentPage}");

                foreach (var item in alarmItems.Items)
                {
                    Console.WriteLine($"\n Id: {item.Id}, Name: {item.Name}, ItemReference: {item.ItemReference}");
                }

                Console.WriteLine("\nEnter object id to get alarm details: ");
                string objectId = Console.ReadLine();

                string      getAlarmsForObject;
                AlarmFilter alarmFilterForObject = new AlarmFilter();

                Console.WriteLine("\n Please enter these parameters separated by space: Start Time, End Time, Priority range, Type, Exclude pending, Exclude acknowledged, Exclude discarded, Attribute, Category, Page, Page Size, Sort" +
                                  "\nRefer to the metasys-server/basic-services-dotnet README if you need help getting started.");

                getAlarmsForObject = Console.ReadLine();
                args = getAlarmsForObject.Split(' ');

                if (args != null)
                {
                    alarmFilterForObject = ReadUserInput(args);
                }

                Console.WriteLine(string.Format("\nAlarm details found for this object {0}", objectId));

                var alarmItemsForObject = client.Alarms.GetForObject(Guid.Parse(objectId), alarmFilterForObject);

                Console.WriteLine("\nEnter network device id to get alarm details: ");
                string networkDeviceId = Console.ReadLine();

                string      getAlarmsForNetworkDevice;
                AlarmFilter alarmFilterModelForNetworkDevice = new AlarmFilter();

                Console.WriteLine("\nPlease enter these parameters separated by space: Start Time, End Time, Priority range, Type, Exclude pending, Exclude acknowledged, Exclude discarded, Attribute, Category, Page, Page Size, Sort" +
                                  "\nRefer to the metasys-server/basic-services-dotnet README if you need help getting started.");

                getAlarmsForNetworkDevice = Console.ReadLine();
                args = getAlarmsForNetworkDevice.Split(' ');

                if (args == null || args.Length != 12)
                {
                    alarmFilterModelForNetworkDevice = ReadUserInput(args);

                    Console.WriteLine(string.Format("\nAlarm details found for this object {0}", objectId));

                    var alarmItemsForNetworkDevice = client.Alarms.GetForNetworkDevice(Guid.Parse(networkDeviceId), alarmFilterModelForNetworkDevice);
                }
                else
                {
                    Console.WriteLine("\nInvalid Input");
                }
            }
            catch (Exception exception) {
                log.Logger.Error(string.Format("An error occured while getting alarm information - {0}", exception.Message));
                Console.WriteLine("\n \nAn Error occurred. Press Enter to return to Main Menu");
            }
            Console.ReadLine();
        }