示例#1
0
        private async Task QuerySubscriptions()
        {
            if (subscriptionPage == 1)
            {
                if (SubscriptionItems == null)
                {
                    SubscriptionItems = new ObservableCollection <SubscriptionItem>();
                }
                else
                {
                    SubscriptionItems.Clear();
                }
            }

            UserContentProvider user   = new UserContentProvider();
            List <Subscription> reuslt = await user.QuerySubscription(subscriptionPage, currentUserId, GlobalValue.CurrentUserContext.UserId, GlobalValue.CurrentUserContext.MobileToken);

            reuslt.ForEach(x => SubscriptionItems.Add(ConvertToSubscriptionItem(x)));

            subscriptionPage++;

            if (SubscriptionItems.Count <= 10 && subscriptionPage == 2)
            {
                await QuerySubscriptions();
            }
        }
示例#2
0
        private async void ExecuteSubscriptionCommand(int id)
        {
            SubscriptionItem value = SubscriptionItems.First(x => x.Id == id);

            if (value.IsSubscribed)
            {
                UserContentProvider     user   = new UserContentProvider();
                DiscoverSubscribeResult reuslt = await user.Unsubscribe(id, GlobalValue.CurrentUserContext.UserId, GlobalValue.CurrentUserContext.MobileToken);

                if (reuslt.Error == null || reuslt.Error.Count == 0)
                {
                    value.IsSubscribed = false;
                }
            }
            else
            {
                UserContentProvider     user   = new UserContentProvider();
                DiscoverSubscribeResult reuslt = await user.Subscribe(id, GlobalValue.CurrentUserContext.UserId, GlobalValue.CurrentUserContext.MobileToken);

                if (reuslt.Error == null || reuslt.Error.Count == 0)
                {
                    value.IsSubscribed = true;
                }
            }
        }
示例#3
0
 public dynamic ToObjects()
 {
     if (Shippings.Count > 0 && Metadatas.Count > 0)
     {
         return(new
         {
             items = SubscriptionItems.Select(x => x.ToObject()),
             shippings = Shippings.Select(x => x.ToObject()),
             metadata = Metadatas.Select(x => x.ToObject())
         });
     }
     if (Shippings.Count > 0)
     {
         return(new
         {
             items = SubscriptionItems.Select(x => x.ToObject()),
             shippings = Shippings.Select(x => x.ToObject())
         });
     }
     if (Metadatas.Count > 0)
     {
         return(new
         {
             items = SubscriptionItems.Select(x => x.ToObject()),
             metadata = Metadatas.Select(x => x.ToObject())
         });
     }
     return(new
     {
         items = SubscriptionItems.Select(x => x.ToObject())
     });
 }
 /// <summary>
 /// Open a dialog to display and edit a list of the subscription item objects.
 /// </summary>
 internal void EditItems()
 {
     try
     {
         SubscriptionItems myItems = new SubscriptionItems(this);
         // edit the items.
         OpcDa::Item[] modifiedItems;
         using (ItemListEditDlg dial = new ItemListEditDlg())
         {
             modifiedItems = dial.ShowDialog(myItems.Items, false, false);
             if (dial.DialogResult != DialogResult.OK || modifiedItems == null)
             {
                 return;
             }
         }
         if (Tag != null)
         {
             // separate the items in lists depending on whether item id changed.
             ArrayList insertItems = new ArrayList();
             ArrayList updateItems = new ArrayList();
             ArrayList deleteItems = new ArrayList();
             // save item ids to detect item id changes.
             Opc.ItemIdentifier[] itemIDs = myItems.CreateIdentifiers;
             for (int ii = 0; ii < itemIDs.Length; ii++)
             {
                 if (modifiedItems[ii].Key != itemIDs[ii].Key)
                 {
                     insertItems.Add(modifiedItems[ii]);
                     deleteItems.Add(itemIDs[ii]);
                 }
                 else
                 {
                     updateItems.Add(modifiedItems[ii]);
                 }
             }
             Tag.SetResultFilters((int)OpcDa.ResultFilter.All);
             // delete old items.
             if (deleteItems.Count > 0)
             {
                 Tag.RemoveItems((Opc.ItemIdentifier[])deleteItems.ToArray(typeof(Opc.ItemIdentifier)));
             }
             // update existing items.
             if (updateItems.Count > 0)
             {
                 myItems.MatchChildren(Tag.ModifyItems((int)OpcDa::StateMask.All, (OpcDa::Item[])updateItems.ToArray(typeof(OpcDa::Item))));
             }
             // insert new items.
             if (insertItems.Count > 0)
             {
                 myItems.MatchChildren(Tag.AddItems((OpcDa::Item[])insertItems.ToArray(typeof(OpcDa::Item))));
             }
         }
     }
     catch (Exception exp)
     {
         MessageBox.Show(exp.Message, "Edit Items", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
 /// <summary>
 /// Create subscription at the server.
 /// </summary>
 internal void Subscribe()
 {
     try
     {
         State.ClientHandle = Guid.NewGuid();
         Tag = (Subscription)FindServer().CreateSubscription(State);
         SubscriptionItems myItems = new SubscriptionItems(this);
         //force to set subscription state
         Tag.SetResultFilters((int)OpcDa.ResultFilter.All);
         myItems.MatchChildren(Tag.AddItems(myItems.Items));
         Subscription.RaiseSubscriptionModified(Tag, false);
     }
     catch (Exception ex) { MessageBox.Show(ex.Message, "Subscribe", MessageBoxButtons.OK, MessageBoxIcon.Error); }
     finally { AssignImageIndex(); }
 }