import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:syncrow_web/pages/roles_and_permission/model/role_type_model.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/model/permission_option_model.dart'; import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/utils/constants/api_const.dart'; class UserPermissionApi { static final HTTPService _httpService = HTTPService(); fetchRoles() async { final response = await _httpService.get( path: ApiEndpoints.roleTypes, showServerMessage: true, expectedResponseModel: (json) { final List fetchedRoles = (json['data'] as List) .map((item) => RoleTypeModel.fromJson(item)) .toList(); return fetchedRoles; }, ); return response; } Future> fetchPermission(roleUuid) async { final response = await _httpService.get( path: ApiEndpoints.permission.replaceAll("roleUuid", roleUuid), showServerMessage: true, expectedResponseModel: (json) { return (json as List) .map((data) => PermissionOption.fromJson(data)) .toList(); }, ); return response ?? []; } Future sendInviteUser({ String? firstName, String? lastName, String? email, String? jobTitle, String? phoneNumber, String? roleUuid, List? spaceUuids, }) async { try { final body = { "firstName": firstName, "lastName": lastName, "email": email, "jobTitle": jobTitle != '' ? jobTitle : " ", "phoneNumber": phoneNumber != '' ? phoneNumber : " ", "roleUuid": roleUuid, "projectUuid": "0e62577c-06fa-41b9-8a92-99a21fbaf51c", "spaceUuids": spaceUuids, }; final response = await _httpService.post( path: ApiEndpoints.inviteUser, showServerMessage: true, body: jsonEncode(body), expectedResponseModel: (json) { if (json['statusCode'] != 400) { return json["success"]; } else { return false; } }, ); return response ?? []; } on DioException catch (e) { return false; } catch (e) { return false; } } Future checkEmail(String email) async { try { final response = await _httpService.post( path: ApiEndpoints.checkEmail, showServerMessage: true, body: {"email": email}, expectedResponseModel: (json) { if (json['statusCode'] != 400) { var message = json["message"]; if (message is String) { return message; } else { return 'Unexpected message format'; } } return null; }, ); return response ?? 'Unknown error occurred'; } on DioException catch (e) { if (e.response != null) { print(e.response?.data['error']); final errorMessage = e.response?.data['error']; return errorMessage is String ? errorMessage : 'Error occurred while checking email'; } return 'Error occurred while checking email'; } catch (e) { return e.toString(); } } }