/// <summary> /// Method to process the pass syncronization event /// </summary> private void ProcessPassSynchronizationEvent() { try { StringBuilder sb = new StringBuilder(); // construct a Jetstream service client JetstreamServiceClient client = new JetstreamServiceClient(JetstreamConfiguration.URL, JetstreamConfiguration.ApplicationAccessKey); // create the GetDeviceDefinitions request GetDeviceDefinitionsRequest deviceRequest = new GetDeviceDefinitionsRequest(); // call the Jetstream GetDeviceDefinitions ReST endpoint GetDeviceDefinitionsResponse deviceResponse = client.GetDeviceDefinitions(deviceRequest); List<Device> devices = JetstreamEventRepository.GetDevices(); //Get the passrfids to be added or updated List<User> users = JetstreamEventRepository.GetUser(); List<string> passesAdd = users.Where(x => x.StatusId == 1).Select(x => x.PassRFID).Distinct().ToList(); List<string> passesRemove = users.Where(x => x.StatusId == 0).Select(x => x.PassRFID).Distinct().ToList(); foreach (var device in devices) { var deviceModel = deviceResponse.DeviceDefinitionList.Where(x => x.Id == device.DeviceGuid).ToList(); if (deviceModel.Count > 0) { var jetstreamGetDeviceDefinitionsResponseDeviceDefinition = deviceModel.FirstOrDefault(); bool updatePass = jetstreamGetDeviceDefinitionsResponseDeviceDefinition != null && jetstreamGetDeviceDefinitionsResponseDeviceDefinition.CommandList.DeviceSpecificCommandList.DeviceSpecificCommand.ToList().Select(x => x.CommandName).Contains("UpdatePasses"); if (updatePass) { GetPassesRequest getPassRequest = new GetPassesRequest { LogicalDeviceId = device.LogicalDeviceId }; DeviceSpecificCommandResponse getPassResponse = client.DeviceSpecificCommand(getPassRequest); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(getPassResponse.Body); string xpath = System.Configuration.ConfigurationManager.AppSettings["xpath"]; var nodes = xmlDoc.SelectNodes(xpath); if (nodes != null) foreach (XmlNode childrenNode in nodes) { var user = users.FirstOrDefault(x => x.PassRFID == childrenNode.Value); if (user == null) { passesRemove.Add(childrenNode.Value); } else { passesAdd.Remove(childrenNode.Value); } } UpdatePassesRequest updateRequest = new UpdatePassesRequest { LogicalDeviceId = device.LogicalDeviceId, Add = passesAdd, Remove = passesRemove }; // call the Jetstream ResT endpoint client.DeviceSpecificCommand(updateRequest); } } sb.AppendLine("ProcessPassSynchronizationEvent for Logical Device " + device.LogicalDeviceId); } // write the collected data to the event log EventLog.WriteEntry("JetstreamSDK ", sb.ToString()); } catch (Exception) { // ignored } }
public void DeviceSpecificCommandTest() { // construct a Jetstream service client JetstreamServiceClient client = new JetstreamServiceClient(JetstreamConfiguration.Url, JetstreamConfiguration.ApplicationAccessKey); try { // create and configure the request object GetPassesRequest request = new GetPassesRequest(); request.LogicalDeviceId = LogicalDeviceId; // call the Jetstream ReST endpoint client.DeviceSpecificCommand(request); } catch (Exception ex) { Assert.Fail(ex.ToString()); } }