delete_dialog

This commit is contained in:
mohammad
2024-12-16 18:59:56 +03:00
parent a46f69636d
commit c31f1262a2
2 changed files with 69 additions and 12 deletions

View File

@ -7,6 +7,7 @@ import 'package:syncrow_web/pages/roles_and_permission/users_page/model/tree_nod
import 'package:syncrow_web/pages/spaces_management/model/community_model.dart'; import 'package:syncrow_web/pages/spaces_management/model/community_model.dart';
import 'package:syncrow_web/pages/spaces_management/model/space_model.dart'; import 'package:syncrow_web/pages/spaces_management/model/space_model.dart';
import 'package:syncrow_web/services/space_mana_api.dart'; import 'package:syncrow_web/services/space_mana_api.dart';
class UsersBloc extends Bloc<UsersEvent, UsersState> { class UsersBloc extends Bloc<UsersEvent, UsersState> {
UsersBloc() : super(UsersInitial()) { UsersBloc() : super(UsersInitial()) {
on<GetUsers>(_getUsers); on<GetUsers>(_getUsers);
@ -103,9 +104,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
emit(UsersLoadingState()); emit(UsersLoadingState());
isCompleteBasics = firstNameController.text.isNotEmpty && isCompleteBasics = firstNameController.text.isNotEmpty &&
lastNameController.text.isNotEmpty && lastNameController.text.isNotEmpty &&
emailController.text.isNotEmpty && emailController.text.isNotEmpty;
phoneController.text.isNotEmpty &&
jobTitleController.text.isNotEmpty;
emit(ChangeStatusSteps()); emit(ChangeStatusSteps());
return isCompleteBasics; return isCompleteBasics;
} }
@ -115,8 +114,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
emit(UsersLoadingState()); emit(UsersLoadingState());
try { try {
List<String> selectedIds = List<String> selectedIds = getSelectedIds(updatedCommunities);
getSelectedIds(updatedCommunities);
isCompleteSpaces = selectedIds.isNotEmpty; isCompleteSpaces = selectedIds.isNotEmpty;
} catch (e) { } catch (e) {
emit(ErrorState('Error while retrieving selected IDs: $e')); emit(ErrorState('Error while retrieving selected IDs: $e'));
@ -130,8 +128,6 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
return true; return true;
} }
Future<List<SpaceModel>> _fetchSpacesForCommunity( Future<List<SpaceModel>> _fetchSpacesForCommunity(
String communityUuid) async { String communityUuid) async {
return await CommunitySpaceManagementApi().getSpaceHierarchy(communityUuid); return await CommunitySpaceManagementApi().getSpaceHierarchy(communityUuid);
@ -204,7 +200,6 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
bool _searchAndHighlightNodes(List<TreeNode> nodes, String searchTerm) { bool _searchAndHighlightNodes(List<TreeNode> nodes, String searchTerm) {
bool anyMatch = false; bool anyMatch = false;
for (var node in nodes) { for (var node in nodes) {
bool isMatch = bool isMatch =
node.title.toLowerCase().contains(searchTerm.toLowerCase()); node.title.toLowerCase().contains(searchTerm.toLowerCase());
@ -218,16 +213,15 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
List<String> selectedIds = []; List<String> selectedIds = [];
List<String> getSelectedIds(List<TreeNode> nodes) { List<String> getSelectedIds(List<TreeNode> nodes) {
List<String> selectedIds = []; List<String> selectedIds = [];
for (var node in nodes) { for (var node in nodes) {
if (node.isChecked) { if (node.isChecked) {
selectedIds.add(node.uuid); selectedIds.add(node.uuid);
} }
if (node.children.isNotEmpty) { if (node.children.isNotEmpty) {
selectedIds.addAll(getSelectedIds(node.children)); selectedIds.addAll(getSelectedIds(node.children));
} }
} }
return selectedIds; return selectedIds;
} }
} }

View File

@ -0,0 +1,63 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/roles_and_permission/users_page/bloc/users_bloc.dart';
import 'package:syncrow_web/pages/roles_and_permission/users_page/bloc/users_status.dart';
import 'package:syncrow_web/utils/color_manager.dart';
class AddNewUserDialog extends StatefulWidget {
const AddNewUserDialog({super.key});
@override
_AddNewUserDialogState createState() => _AddNewUserDialogState();
}
class _AddNewUserDialogState extends State<AddNewUserDialog> {
int currentStep = 1;
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (BuildContext context) => UsersBloc(),
child: BlocConsumer<UsersBloc, UsersState>(
listener: (context, state) {},
builder: (context, state) {
final _blocRole = BlocProvider.of<UsersBloc>(context);
return Dialog(
child: Container(
decoration: const BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(20))),
child: const Column(
children: [
Padding(
padding: EdgeInsets.all(8.0),
child: SizedBox(
child: Text(
"Delete User",
style: TextStyle(
color: ColorsManager.red,
fontSize: 18,
fontWeight: FontWeight.bold),
),
),
),
Divider(),
Expanded(
child: Text(
"Are you sure you want to delete this user?",
textAlign: TextAlign.center,
)),
Row(
children: [
Expanded(child: Text('Cancel')),
Expanded(child: Text('Delete')),
],
)
],
),
));
}));
}
}