/// <summary> /// Sets the current filters for the subscription. /// </summary> /// <param name="filters">The new filters to use for the subscription.</param> public void SetFilters(SubscriptionFilters filters) { lock (this) { // verify state and arguments. if (m_subscription == null) { throw new NotConnectedException(); } // invoke COM method. try { ((IOPCEventSubscriptionMgt)m_subscription).SetFilter( filters.EventTypes, filters.Categories.Count, filters.Categories.ToArray(), filters.LowSeverity, filters.HighSeverity, filters.Areas.Count, filters.Areas.ToArray(), filters.Sources.Count, filters.Sources.ToArray()); } catch (Exception e) { throw OpcCom.Interop.CreateException("IOPCEventSubscriptionMgt.SetFilter", e); } } }
//====================================================================== // Filter Management /// <summary> /// Returns the current filters for the subscription. /// </summary> /// <returns>The current filters for the subscription.</returns> public SubscriptionFilters GetFilters() { lock (this) { // verify state and arguments. if (m_subscription == null) { throw new NotConnectedException(); } // initialize arguments. int pdwEventType = 0; int pdwNumCategories = 0; IntPtr ppdwEventCategories = IntPtr.Zero; int pdwLowSeverity = 0; int pdwHighSeverity = 0; int pdwNumAreas = 0; IntPtr ppszAreaList = IntPtr.Zero; int pdwNumSources = 0; IntPtr ppszSourceList = IntPtr.Zero; // invoke COM method. try { ((IOPCEventSubscriptionMgt)m_subscription).GetFilter( out pdwEventType, out pdwNumCategories, out ppdwEventCategories, out pdwLowSeverity, out pdwHighSeverity, out pdwNumAreas, out ppszAreaList, out pdwNumSources, out ppszSourceList); } catch (Exception e) { throw OpcCom.Interop.CreateException("IOPCEventSubscriptionMgt.GetFilter", e); } // unmarshal results int[] categoryIDs = OpcCom.Interop.GetInt32s(ref ppdwEventCategories, pdwNumCategories, true); string[] areaIDs = OpcCom.Interop.GetUnicodeStrings(ref ppszAreaList, pdwNumAreas, true); string[] sourceIDs = OpcCom.Interop.GetUnicodeStrings(ref ppszSourceList, pdwNumSources, true); // build results. SubscriptionFilters filters = new SubscriptionFilters(); filters.EventTypes = pdwEventType; filters.LowSeverity = pdwLowSeverity; filters.HighSeverity = pdwHighSeverity; filters.Categories.AddRange(categoryIDs); filters.Areas.AddRange(areaIDs); filters.Sources.AddRange(sourceIDs); // return results. return(filters); } }
public void SetFilters(SubscriptionFilters filters) { lock (this) { if (this.m_subscription == null) { throw new NotConnectedException(); } try { ((IOPCEventSubscriptionMgt)this.m_subscription).SetFilter(filters.EventTypes, filters.Categories.Count, filters.Categories.ToArray(), filters.LowSeverity, filters.HighSeverity, filters.Areas.Count, filters.Areas.ToArray(), filters.Sources.Count, filters.Sources.ToArray()); } catch (Exception exception) { throw OpcCom.Interop.CreateException("IOPCEventSubscriptionMgt.SetFilter", exception); } } }
public SubscriptionFilters GetFilters() { lock (this) { if (m_subscription == null) { throw new NotConnectedException(); } int pdwEventType = 0; int pdwNumCategories = 0; IntPtr ppdwEventCategories = IntPtr.Zero; int pdwLowSeverity = 0; int pdwHighSeverity = 0; int pdwNumAreas = 0; IntPtr ppszAreaList = IntPtr.Zero; int pdwNumSources = 0; IntPtr ppszSourceList = IntPtr.Zero; try { ((IOPCEventSubscriptionMgt)m_subscription).GetFilter(out pdwEventType, out pdwNumCategories, out ppdwEventCategories, out pdwLowSeverity, out pdwHighSeverity, out pdwNumAreas, out ppszAreaList, out pdwNumSources, out ppszSourceList); } catch (Exception e) { throw OpcCom.Interop.CreateException("IOPCEventSubscriptionMgt.GetFilter", e); } int[] int32s = OpcCom.Interop.GetInt32s(ref ppdwEventCategories, pdwNumCategories, deallocate: true); string[] unicodeStrings = OpcCom.Interop.GetUnicodeStrings(ref ppszAreaList, pdwNumAreas, deallocate: true); string[] unicodeStrings2 = OpcCom.Interop.GetUnicodeStrings(ref ppszSourceList, pdwNumSources, deallocate: true); SubscriptionFilters subscriptionFilters = new SubscriptionFilters(); subscriptionFilters.EventTypes = pdwEventType; subscriptionFilters.LowSeverity = pdwLowSeverity; subscriptionFilters.HighSeverity = pdwHighSeverity; subscriptionFilters.Categories.AddRange(int32s); subscriptionFilters.Areas.AddRange(unicodeStrings); subscriptionFilters.Sources.AddRange(unicodeStrings2); return(subscriptionFilters); } }
public SubscriptionFilters GetFilters() { lock (this) { if (this.m_subscription == null) { throw new NotConnectedException(); } int pdwEventType = 0; int pdwNumCategories = 0; IntPtr zero = IntPtr.Zero; int pdwLowSeverity = 0; int pdwHighSeverity = 0; int pdwNumAreas = 0; IntPtr ppszAreaList = IntPtr.Zero; int pdwNumSources = 0; IntPtr ppszSourceList = IntPtr.Zero; try { ((IOPCEventSubscriptionMgt)this.m_subscription).GetFilter(out pdwEventType, out pdwNumCategories, out zero, out pdwLowSeverity, out pdwHighSeverity, out pdwNumAreas, out ppszAreaList, out pdwNumSources, out ppszSourceList); } catch (Exception exception) { throw OpcCom.Interop.CreateException("IOPCEventSubscriptionMgt.GetFilter", exception); } int[] collection = OpcCom.Interop.GetInt32s(ref zero, pdwNumCategories, true); string[] strArray = OpcCom.Interop.GetUnicodeStrings(ref ppszAreaList, pdwNumAreas, true); string[] strArray2 = OpcCom.Interop.GetUnicodeStrings(ref ppszSourceList, pdwNumSources, true); SubscriptionFilters filters = new SubscriptionFilters { EventTypes = pdwEventType, LowSeverity = pdwLowSeverity, HighSeverity = pdwHighSeverity }; filters.Categories.AddRange(collection); filters.Areas.AddRange(strArray); filters.Sources.AddRange(strArray2); return(filters); } }
// GET: Subscriptions public async Task <IActionResult> Index(SubscriptionSorts pSortSubscription = SubscriptionSorts.noSubscriptionOrder, SubscriptionFilters filter = SubscriptionFilters.NoFilter, decimal?filterInfo = 0, SubscriptionSearches search = SubscriptionSearches.NoSearch, decimal?searchInfo = 0) { IEnumerable <SubscriptionDto> listSubscriptions = null; string filterNameAsString = null; string searchNameAsString = null; if (filter != SubscriptionFilters.NoFilter) { filterNameAsString = "AmountTrigger"; } if (search != SubscriptionSearches.NoSearch) { searchNameAsString = "SearchingValue"; } using (var httpClient = new HttpClient()) { string url = $"http://localhost:50106/api/v1/subscriptions?OrderBy={pSortSubscription}&FilterBy={filter}&{filterNameAsString}={filterInfo}&SearchBy={search}&{searchNameAsString}={searchInfo}"; using (var response = await httpClient.GetAsync(url)) { string apiResponse = await response.Content.ReadAsStringAsync(); listSubscriptions = JsonConvert.DeserializeObject <List <SubscriptionDto> >(apiResponse); } } var subFilter = Enum.GetValues(typeof(SubscriptionFilters)) .Cast <SubscriptionFilters>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["subscriFilter"] = new SelectList(subFilter, "Value", "Text"); var subSearch = Enum.GetValues(typeof(SubscriptionSearches)) .Cast <SubscriptionSearches>() .Select(d => new SelectListItem { Text = d.ToString(), Value = ((int)d).ToString() }).ToList(); ViewData["subscriSearch"] = new SelectList(subSearch, "Value", "Text"); return(View(listSubscriptions)); }
public static IQueryable <Models.Subscription> FilterSubscriptionBy(this IQueryable <Models.Subscription> subscription, SubscriptionFilters filterBy, decimal amountTrigger) { switch (filterBy) { case SubscriptionFilters.NoFilter: return(subscription); case SubscriptionFilters.AmountFilter: return(subscription.Where(s => s.SubscriptionAmount == amountTrigger)); case SubscriptionFilters.AmountMaxFilter: return(subscription.Where(s => s.SubscriptionAmount <= amountTrigger)); case SubscriptionFilters.AmountMinFilter: return(subscription.Where(s => s.SubscriptionAmount >= amountTrigger)); default: throw new ArgumentOutOfRangeException (nameof(filterBy), filterBy, null); } }
private SubscriptionFilters ParseFrontendFilter(string filterJson) { var result = new SubscriptionFilters(); var frontendFilters = Serialization.FromJson<FrontendFilter>(filterJson); if (frontendFilters != null) { result.AddRange(frontendFilters.Select(filter => new SubscriptionFilter { Property = filter.Key, Value = filter.Value })); } return result; }