public void TestListMember() { var instance = new ListMember { List = new List <string>() }; var context = BuildContext(instance); var root = context.Factory.CreateNodeHierarchy(context.RootNode, new GraphNodePath(context.RootNode)); var member = root[nameof(ListMember.List)]; Assert.Equal(0, member.Children.Count); Assert.Equal(nameof(ListMember.List), member.DisplayName); Assert.Equal(Index.Empty, member.Index); Assert.True(member.IsEnumerable); Assert.False(member.IsReadOnly); Assert.True(member.IsVisible); Assert.Equal(nameof(ListMember.List), member.Name); Assert.Equal(40, member.Order); Assert.Equal(root, member.Parent); Assert.Equal(instance.List, member.Value); instance = new ListMember(); context = BuildContext(instance); root = context.Factory.CreateNodeHierarchy(context.RootNode, new GraphNodePath(context.RootNode)); member = root[nameof(ListMember.List)]; Assert.Equal(0, member.Children.Count); Assert.Equal(nameof(ListMember.List), member.DisplayName); Assert.Equal(Index.Empty, member.Index); Assert.False(member.IsEnumerable); Assert.False(member.IsReadOnly); Assert.True(member.IsVisible); Assert.Equal(nameof(ListMember.List), member.Name); Assert.Equal(40, member.Order); Assert.Equal(root, member.Parent); Assert.Equal(instance.List, member.Value); }
private void navBarItem5_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e) { ListMember form = ListMember.GetForm(); form.MdiParent = this; form.Show(); form.Activate(); }
public void RemoveLast() { ListMember <TKey, TValue> pointer = head; for (int i = 0; i < length - 2; i++) { pointer = pointer.next; } pointer.next = null; length--; }
public TValue this[TKey s] { get { ListMember <TKey, TValue> pointer = head; for (int i = 0; i < length - 1 && !pointer.Key.Equals(s); i++) { pointer = pointer.next; } if (pointer != null && pointer.Key.Equals(s)) { return(pointer.value); } else { return(default);
public void Add(TKey key, TValue value) { var tmp = new ListMember <TKey, TValue>() { Key = key, value = value, next = null }; if (length == 0) { head = tmp; } else { ListMember <TKey, TValue> pointer = head; for (int i = 0; i < length - 1; i++) { pointer = pointer.next; } pointer.next = tmp; } length++; }
public static async Task ExecuteAllMethods(ICakeMailRestClient client, string userKey, long clientId, TextWriter log, CancellationToken cancellationToken) { await log.WriteLineAsync("\n***** LISTS *****").ConfigureAwait(false); var lists = await client.Lists.GetListsAsync(userKey, ListStatus.Active, null, ListsSortBy.Name, SortDirection.Descending, null, null, clientId).ConfigureAwait(false); await log.WriteLineAsync($"All lists retrieved. Count = {lists.Count()}").ConfigureAwait(false); var listsCount = await client.Lists.GetCountAsync(userKey, ListStatus.Active, null, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Lists count = {listsCount}").ConfigureAwait(false); var listId = await client.Lists.CreateAsync(userKey, "Dummy list", "Bob Smith", "*****@*****.**", true, clientId).ConfigureAwait(false); await log.WriteLineAsync($"New list created. Id: {listId}").ConfigureAwait(false); var updated = await client.Lists.UpdateAsync(userKey, listId, name : "Updated name", clientId : clientId).ConfigureAwait(false); await log.WriteLineAsync($"List updated: {(updated ? "success" : "failed")}").ConfigureAwait(false); var list = await client.Lists.GetAsync(userKey, listId, false, false, clientId).ConfigureAwait(false); await log.WriteLineAsync($"List retrieved: Name = {list.Name}").ConfigureAwait(false); await client.Lists.AddFieldAsync(userKey, listId, "MyCustomField1", FieldType.Integer, clientId).ConfigureAwait(false); await client.Lists.AddFieldAsync(userKey, listId, "MyCustomField2", FieldType.DateTime, clientId).ConfigureAwait(false); await client.Lists.AddFieldAsync(userKey, listId, "MyCustomField3", FieldType.Text, clientId).ConfigureAwait(false); await client.Lists.AddFieldAsync(userKey, listId, "MyCustomField4", FieldType.Memo, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Custom fields added to the list").ConfigureAwait(false); var fields = await client.Lists.GetFieldsAsync(userKey, listId, clientId).ConfigureAwait(false); await log.WriteLineAsync($"List contains the following fields: {string.Join(", ", fields.Select(f => f.Name))}").ConfigureAwait(false); var subscriberCustomFields = new Dictionary <string, object>() { { "MyCustomField1", 12345 }, { "MyCustomField2", DateTime.UtcNow }, { "MyCustomField3", "qwerty" } }; var listMemberId = await client.Lists.SubscribeAsync(userKey, listId, "*****@*****.**", true, true, subscriberCustomFields, clientId).ConfigureAwait(false); await log.WriteLineAsync("One member added to the list").ConfigureAwait(false); var query = "`email`=\"[email protected]\""; var subscribers = await client.Lists.GetMembersAsync(userKey, listId, query : query, clientId : clientId).ConfigureAwait(false); await log.WriteLineAsync($"Subscribers retrieved: {subscribers.Count()}").ConfigureAwait(false); var subscriber = await client.Lists.GetMemberAsync(userKey, listId, listMemberId, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Subscriber retrieved: {subscriber.Email}").ConfigureAwait(false); var member1 = new ListMember { Email = "*****@*****.**", CustomFields = new Dictionary <string, object> { { "MyCustomField1", 12345 }, { "MyCustomField2", DateTime.UtcNow }, { "MyCustomField3", "qwerty" } } }; var member2 = new ListMember { Email = "*****@*****.**", CustomFields = new Dictionary <string, object> { { "MyCustomField1", 98765 }, { "MyCustomField2", DateTime.MinValue }, { "MyCustomField3", "azerty" } } }; var importResult = await client.Lists.ImportAsync(userKey, listId, new[] { member1, member2 }, false, false, clientId).ConfigureAwait(false); await log.WriteLineAsync("Two members imported into the list").ConfigureAwait(false); var members = await client.Lists.GetMembersAsync(userKey, listId, null, null, null, null, null, null, clientId).ConfigureAwait(false); await log.WriteLineAsync($"All list members retrieved. Count = {members.Count()}").ConfigureAwait(false); var membersCount = await client.Lists.GetMembersCountAsync(userKey, listId, null, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Members count = {membersCount}").ConfigureAwait(false); var customFieldsToUpdate = new Dictionary <string, object> { { "MyCustomField1", 555555 }, { "MyCustomField3", "zzzzzzzzzzzzzzzzzzzzzzzzzz" } }; var memberUpdated = await client.Lists.UpdateMemberAsync(userKey, listId, 1, customFieldsToUpdate, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Member updated: {(memberUpdated ? "success" : "failed")}").ConfigureAwait(false); var logs = await client.Lists.GetLogsAsync(userKey, listId, LogType.Open, false, false, null, null, null, null, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Retrieved 'Opens'. Count = {logs.Count()}").ConfigureAwait(false); var firstSegmentId = await client.Segments.CreateAsync(userKey, listId, "Segment #1", "(`email` LIKE \"aa%\")", clientId).ConfigureAwait(false); var secondSegmentId = await client.Segments.CreateAsync(userKey, listId, "Segment #2", "(`email` LIKE \"bb%\")", clientId).ConfigureAwait(false); await log.WriteLineAsync("Two segments created").ConfigureAwait(false); var segments = await client.Segments.GetSegmentsAsync(userKey, listId, 0, 0, true, clientId).ConfigureAwait(false); await log.WriteLineAsync($"Segments retrieved. Count = {segments.Count()}").ConfigureAwait(false); var firstSegmentDeleted = await client.Segments.DeleteAsync(userKey, firstSegmentId, clientId).ConfigureAwait(false); await log.WriteLineAsync("First segment deleted").ConfigureAwait(false); var secondSegmentDeleted = await client.Segments.DeleteAsync(userKey, secondSegmentId, clientId).ConfigureAwait(false); await log.WriteLineAsync("Second segment deleted").ConfigureAwait(false); var deleted = await client.Lists.DeleteAsync(userKey, listId, clientId).ConfigureAwait(false); await log.WriteLineAsync($"List deleted: {(deleted ? "success" : "failed")}").ConfigureAwait(false); }
/// <summary> /// Sets up the execution logic for all the DelegateCommands in the ViewModel /// </summary> private void SetupCommands() { // Register user when they login the very first time. RegisterCommand = new DelegateCommand(async() => { // Show validation fail flyout if (string.IsNullOrWhiteSpace(User.Name) || string.IsNullOrWhiteSpace(User.City) || string.IsNullOrWhiteSpace(User.State)) { flyoutProvider.ShowRegisterValidationFlyout(); return; } await profilesTable.InsertAsync(User); DisplayRegistrationForm = false; RegisterDeviceAsync(); LoadListsAsync(true); LoadInvitesAsync(); }, true); // Shows the flyout for user to create a new list the first time ShowNewUserNewListCommand = new DelegateCommand(() => { flyoutProvider.ShowNewUserNewListFlyout(); }, false); // Shows the flyout for user to enter the new list name ShowNewListCommand = new DelegateCommand(() => { flyoutProvider.ShowNewListFlyout(); }, false); // Creates a new list in the backend with the user as the owner NewListCommand = new DelegateCommand(async() => { if (String.IsNullOrWhiteSpace(NewListName)) { flyoutProvider.ShowNameRequiredFlyout(); return; } ListMember membership = new ListMember { Name = NewListName, UserId = App.MobileService.CurrentUser.UserId, }; NewListName = String.Empty; await listMembersTable.InsertAsync(membership); Lists.Add(membership); ShowList(Lists.IndexOf(membership)); flyoutProvider.HideNewListFlyout(); }); // Shows the flyout with all the lists having user as the owner ShowChooseListCommand = new DelegateCommand(() => { flyoutProvider.ShowChooseListFlyout(); }); // Opens the list as selected by the user SelectListCommand = new DelegateCommand <ListMember>(listMember => { ShowList(Lists.IndexOf(listMember)); }); // Asks the user for confirmation before leaving list ConfirmLeaveListCommand = new DelegateCommand(() => { flyoutProvider.ShowLeaveListConfirmationFlyout(); }); // Removes the user as the owner of the list LeaveListCommand = new DelegateCommand(async() => { await listMembersTable.DeleteAsync(CurrentList); Lists.Remove(CurrentList); ShowList(0); flyoutProvider.HideLeaveListConfirmationFlyout(); }); // Shows the floyout where the user can add the name of an item in a list ShowAddItemCommand = new DelegateCommand(() => { flyoutProvider.ShowAddItemFlyout(); }, false); // Adds an item in the list in the backend AddItemCommand = new DelegateCommand(async() => { if (String.IsNullOrWhiteSpace(NewItemText)) { flyoutProvider.ShowDescriptionRequiredFlyout(); return; } var item = new Item { Text = NewItemText, ListId = CurrentList.ListId, CreatedBy = User.Name, }; NewItemText = String.Empty; await itemsTable.InsertAsync(item); Items.Add(item); }); // Removes an item from a list when Remove Items button is pressed RemoveItemsCommand = new DelegateCommand(async() => { foreach (Item item in selectedItems) { try { await itemsTable.DeleteAsync(item); } catch (MobileServiceInvalidOperationException exc) { // a 404 is an expected scenario here, another user // has most likely deleted the item whilst we've been // viewing. if (exc.Response.StatusCode != HttpStatusCode.NotFound) { ShowError("Another user deleted the item already."); } } Items.Remove(item); } }, false); // Refreshes a list when Refresh Items button is pressed // this will populate any items added by any other list owner elsewhere RefreshCommand = new DelegateCommand(() => { LoadSettingsAsync(); LoadInvitesAsync(); if (CurrentList != null) { LoadListsAsync(); LoadItemsAsync(); } }, false); // Searches for a user in the backend ShowUserSearchCommand = new DelegateCommand(() => { var inviteUserViewModel = new InviteUserViewModel(this, profilesTable); flyoutProvider.ShowInviteUserFlyout(inviteUserViewModel); }, false); // Shows all the available invites for the user ViewInvitesCommand = new DelegateCommand(() => { var viewInvitesViewModel = new ViewInvitesViewModel(this, invitesTable); flyoutProvider.ShowViewInvitesFlyout(viewInvitesViewModel); }, false); }