private async void AddUserBtn_Click(object sender, RoutedEventArgs e) { try { AddUserBtn.IsEnabled = false; string login = LoginTextBox.Text; string password = PasswordTextBox.Text; string confirmPassword = ConfirmPasswordTextBox.Text; List <Role> selectedRoles = new List <Role>(); foreach (var item in RoleListBox.SelectedItems) { selectedRoles.Add((Role)item); } if (string.IsNullOrWhiteSpace(login)) { throw new ArgumentNullException($"'{nameof(login)}' is incorrect"); } if (string.IsNullOrWhiteSpace(password) || !password.Equals(confirmPassword)) { throw new ArgumentNullException($"'{nameof(password)}' is incorrect"); } if (selectedRoles.Count() == 0) { throw new ArgumentNullException($"'{nameof(selectedRoles)}' is incorrect"); } var requestUser = new User { Login = login, Password = password, Role_User_Mappings = selectedRoles.Select(x => new Role_User_Mapping { Role = new Role { RoleName = x.RoleName, Id = x.Id } }).ToList() }; string request = tcpService.SerializeAddUserRequest(requestUser, SingletoneObj.User); byte[] data = await tcpService.CodeStreamAsync(request); await SingletoneObj.Stream.WriteAsync(data, 0, data.Length); string response = await tcpService.DecodeStreamAsync(SingletoneObj.Stream); var responseArgs = response.Split(';'); if (responseArgs.Length > 1 && responseArgs[0].Contains("500")) { throw new ArgumentException(responseArgs[1]); } this.Close(); } catch (Exception ex) { AddUserBtn.IsEnabled = true; StatusLabel.Content = "Status: " + ex.Message; } }