/// <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);
            }
        }
Beispiel #3
0
 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);
         }
     }
 }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
 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));
        }
Beispiel #7
0
        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;
        }