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(); } }
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; } } }
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(); } }