public async Task MarkInactive(LoginViewItem viewItem) { if (viewItem == null) { throw new ArgumentNullException("viewItem"); } // Apply business logic var permissionResult = this.Manager.CanMarkInactive(viewItem.Login); switch (permissionResult.Status) { case PermissionStatus.Allow: // Request confirmation for marking the item as inactive this.Dialog.AcceptAction = () => { // Mark the viewItem as Inactive viewItem.IsActive = false; // Call the manager to update the message this.Manager.MarkInactive(viewItem.Login); }; await this.Dialog.ShowAsync(this.Manager.Settings.ConfirmMarkInactiveMsg); break; case PermissionStatus.Deny: await this.Dialog.DisplayAsync(permissionResult.Message); break; default: throw new ArgumentOutOfRangeException(); } }
private void AddValidated(LoginViewItem viewItem) { // Call the manager to add the new message if (this.Manager.Add(viewItem.Login, true)) { // Add the item to the list to the right place if sorter != null this.ViewItems.Add(viewItem); } }
public async Task Add(LoginViewItem viewItem) { if (viewItem == null) { throw new ArgumentNullException("viewItem"); } viewItem = new LoginViewItem(new Login()) { Username = (viewItem.Username ?? string.Empty).Trim(), Password = viewItem.Password }; try { var login = viewItem.Login; // Display validation to UI this.UsernameValidationMsg = Validator.CombineResults(this.Manager.ValidateUsername(login.Username)); this.PasswordValidationMsg = Validator.CombineResults(this.Manager.ValidatePassword(login.Password)); // Apply validations about required fields, ranges & values var validationResults = this.Manager.Validate(login); if (validationResults.Length == 0) { // Apply business logic var permissionResult = this.Manager.CanAdd(login); switch (permissionResult.Status) { case PermissionStatus.Allow: this.AddValidated(viewItem); break; case PermissionStatus.Confirm: // Confirm any user warnings this.Dialog.AcceptAction = () => this.AddValidated(viewItem); await this.Dialog.ConfirmAsync(permissionResult.Message); break; case PermissionStatus.Deny: await this.Dialog.DisplayAsync(permissionResult.Message); break; default: throw new ArgumentOutOfRangeException(); } } } catch (Exception e) { Console.WriteLine(e); } }