From d80b36ed8f4161aac42d9a325ac2c2a45eeba4c6 Mon Sep 17 00:00:00 2001 From: PGAN-MIS Date: Tue, 5 Sep 2023 14:43:57 +0800 Subject: [PATCH 1/3] perform patch --- .../profile/references/references_bloc.dart | 2 +- lib/bloc/role/pass_check/pass_check_bloc.dart | 30 +-- .../role/pass_check/pass_check_event.dart | 8 +- .../role/pass_check/pass_check_state.dart | 8 +- lib/bloc/user/user_bloc.dart | 2 + .../role_assignment_screen.dart | 2 +- .../components/dashboard/dashboard.dart | 28 ++- .../dashboard/superadmin_expanded_menu.dart | 3 +- lib/screens/unit2/login/login.dart | 6 +- .../roles/qr_code_scanner.dart/scan.dart | 28 +-- .../qr_code_scanner.dart/settings_screen.dart | 32 ++-- lib/sevices/login_service/auth_service.dart | 8 +- lib/sevices/roles/pass_check_services.dart | 5 +- lib/utils/app_router.dart | 7 +- lib/utils/request.dart | 180 +++++++++--------- 15 files changed, 179 insertions(+), 170 deletions(-) diff --git a/lib/bloc/profile/references/references_bloc.dart b/lib/bloc/profile/references/references_bloc.dart index ba9fe6c..b460ef9 100644 --- a/lib/bloc/profile/references/references_bloc.dart +++ b/lib/bloc/profile/references/references_bloc.dart @@ -29,7 +29,7 @@ class ReferencesBloc extends Bloc { references = refs; emit(ReferencesLoadedState(references: references)); } - + emit(ReferencesLoadedState(references: references)); } catch (e) { emit( ReferencesErrorState(message: e.toString())); } diff --git a/lib/bloc/role/pass_check/pass_check_bloc.dart b/lib/bloc/role/pass_check/pass_check_bloc.dart index c1d157a..ca5be7f 100644 --- a/lib/bloc/role/pass_check/pass_check_bloc.dart +++ b/lib/bloc/role/pass_check/pass_check_bloc.dart @@ -5,6 +5,7 @@ import 'package:equatable/equatable.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:unit2/model/roles/pass_check/passer_info.dart'; +import 'package:unit2/screens/unit2/homepage.dart/components/dashboard/dashboard.dart'; import 'package:unit2/sevices/roles/pass_check_services.dart'; import '../../../utils/scanner.dart'; part 'pass_check_event.dart'; @@ -12,7 +13,7 @@ part 'pass_check_state.dart'; class PassCheckBloc extends Bloc { PassCheckBloc() : super(PassCheckInitial()) { - int? roleId; + RoleIdRoleName? roleIdRoleName; String? uuid; bool? otherInputs; String? io; @@ -25,9 +26,8 @@ class PassCheckBloc extends Bloc { try { emit(PassCheckLoadingState()); List response = await PassCheckServices.instance - .getPassCheckArea(roleId: event.roleId, userId: event.userId); - roleId = event.roleId; - emit(AssignAreaLoaded(assignedArea: response, roleId: roleId!)); + .getPassCheckArea(roleIdRoleName:RoleIdRoleName(roleId: event.roleIdRoleName.roleId, roleName: event.roleIdRoleName.roleName), userId: event.userId); + emit(AssignAreaLoaded(assignedArea: response, roleIdRoleName: RoleIdRoleName(roleId: event.roleIdRoleName.roleId, roleName: event.roleIdRoleName.roleName))); } catch (e) { emit(PassCheckErrorState(message: e.toString())); } @@ -37,14 +37,14 @@ class PassCheckBloc extends Bloc { checkerId = event.checkerId; io = event.entranceExit; token = event.token; - roleId = event.roleId; + roleIdRoleName = event.roleIdRoleName; assignedArea = event.assignedArea; emit(SettingSaved( assignedArea: assignedArea, checker: checkerId!, io: io!, otherInputs: otherInputs!, - roleId: roleId!, + roleIdRoleName: roleIdRoleName!, token: token!)); }); on((event, emit) { @@ -53,7 +53,7 @@ class PassCheckBloc extends Bloc { checker: checkerId!, io: io!, otherInputs: otherInputs!, - roleId: roleId!, + roleIdRoleName: roleIdRoleName!, token: token!)); }); on((event, emit) { @@ -64,7 +64,7 @@ class PassCheckBloc extends Bloc { io: io!.toLowerCase() == "incoming" ? "i" : "o", otherInputs: otherInputs!, passerId: uuid!, - roleId: roleId!, + roleId: roleIdRoleName!.roleId, stationId: stationId, temp: event.temp)); }); @@ -77,7 +77,7 @@ class PassCheckBloc extends Bloc { io: io!.toLowerCase() == "incoming" ? "i" : "o", otherInputs: otherInputs!, passerId: uuid!, - roleId: roleId!, + roleId: roleIdRoleName!.roleId, stationId: stationId, temp: null)); }); @@ -89,13 +89,13 @@ class PassCheckBloc extends Bloc { try { PasserInfo? passerInfo = await PassCheckServices.instance .getPasserInfo(uuid: uuid!, token: event.token); - if (roleId == 41 || roleId == 13 || roleId == 17 || roleId == 22) { + if (roleIdRoleName!.roleName.toLowerCase() == "41" || roleIdRoleName!.roleName.toLowerCase() == 'qr code scanner' || roleIdRoleName!.roleName.toLowerCase() == 'office/branch chief' || roleIdRoleName!.roleName.toLowerCase() == 'registration in-charge') { stationId = assignedArea.id; - } else if (roleId == 7) { + } else if (roleIdRoleName!.roleName.toLowerCase() == 'barangay chairperson') { cpId = assignedArea.brgycode; - } else if (roleId == 10) { + } else if (roleIdRoleName!.roleName.toLowerCase() == 'purok pres') { cpId = assignedArea.purokdesc; - } else if (roleId == 16) { + } else if (roleIdRoleName!.roleName.toLowerCase() == 'establishment point-person') { cpId = assignedArea.id; } if (passerInfo == null) { @@ -122,7 +122,7 @@ class PassCheckBloc extends Bloc { io: io!.toLowerCase() == "incoming" ? "i" : "o", otherInputs: otherInputs!, passerId: uuid!, - roleId: roleId!, + roleId: roleIdRoleName!.roleId, stationId: stationId, temp: null)); } @@ -136,7 +136,7 @@ class PassCheckBloc extends Bloc { checker: checkerId!, io: io!, otherInputs: otherInputs!, - roleId: roleId!, + roleIdRoleName: roleIdRoleName!, token: token!)); } }); diff --git a/lib/bloc/role/pass_check/pass_check_event.dart b/lib/bloc/role/pass_check/pass_check_event.dart index 0cfe95b..f63ad23 100644 --- a/lib/bloc/role/pass_check/pass_check_event.dart +++ b/lib/bloc/role/pass_check/pass_check_event.dart @@ -8,13 +8,13 @@ abstract class PassCheckEvent extends Equatable { } class GetPassCheckAreas extends PassCheckEvent { - final int roleId; +final RoleIdRoleName roleIdRoleName; final int userId; - const GetPassCheckAreas({required this.roleId, required this.userId}); + const GetPassCheckAreas({required this.roleIdRoleName, required this.userId}); } class SetScannerSettings extends PassCheckEvent { - final int roleId; + final RoleIdRoleName roleIdRoleName; final String token; final dynamic assignedArea; final bool includeOtherInputs; @@ -25,7 +25,7 @@ class SetScannerSettings extends PassCheckEvent { required this.checkerId, required this.entranceExit, required this.includeOtherInputs, - required this.roleId, + required this.roleIdRoleName, required this.token}); } diff --git a/lib/bloc/role/pass_check/pass_check_state.dart b/lib/bloc/role/pass_check/pass_check_state.dart index fe93067..9a49598 100644 --- a/lib/bloc/role/pass_check/pass_check_state.dart +++ b/lib/bloc/role/pass_check/pass_check_state.dart @@ -23,8 +23,8 @@ class PassCheckLoadingState extends PassCheckState {} class AssignAreaLoaded extends PassCheckState { final List assignedArea; - final int roleId; - const AssignAreaLoaded({required this.assignedArea, required this.roleId}); + final RoleIdRoleName roleIdRoleName; + const AssignAreaLoaded({required this.assignedArea, required this.roleIdRoleName}); } class SettingSaved extends PassCheckState { @@ -33,13 +33,13 @@ class SettingSaved extends PassCheckState { final String io; final int checker; final bool otherInputs; - final int roleId; + final RoleIdRoleName roleIdRoleName; const SettingSaved( {required this.assignedArea, required this.checker, required this.io, required this.otherInputs, - required this.roleId, + required this.roleIdRoleName, required this.token}); } diff --git a/lib/bloc/user/user_bloc.dart b/lib/bloc/user/user_bloc.dart index 16ff38f..3d0e250 100644 --- a/lib/bloc/user/user_bloc.dart +++ b/lib/bloc/user/user_bloc.dart @@ -107,6 +107,8 @@ class UserBloc extends Bloc { emit(InternetTimeout(message: timeoutError)); } on Error catch (e) { emit(LoginErrorState(message: e.toString())); + }catch(e){ + emit(LoginErrorState(message: e.toString())); } }); on((event, emit) async { diff --git a/lib/screens/superadmin/role_assignment.dart/role_assignment_screen.dart b/lib/screens/superadmin/role_assignment.dart/role_assignment_screen.dart index 8feade2..93ec3ed 100644 --- a/lib/screens/superadmin/role_assignment.dart/role_assignment_screen.dart +++ b/lib/screens/superadmin/role_assignment.dart/role_assignment_screen.dart @@ -35,7 +35,7 @@ class RbacRoleAssignment extends StatelessWidget { elevation: 0, centerTitle: true, backgroundColor: primary, - title: const Text("User Roles Screenss"), + title: const Text("User Roles Screens"), actions: [ AddLeading(onPressed: () { BuildContext parent = context; diff --git a/lib/screens/unit2/homepage.dart/components/dashboard/dashboard.dart b/lib/screens/unit2/homepage.dart/components/dashboard/dashboard.dart index c814837..eb7ffb4 100644 --- a/lib/screens/unit2/homepage.dart/components/dashboard/dashboard.dart +++ b/lib/screens/unit2/homepage.dart/components/dashboard/dashboard.dart @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:fluttericon/font_awesome5_icons.dart'; import 'package:unit2/model/login_data/user_info/assigned_area.dart'; +import 'package:unit2/model/rbac/assigned_role.dart'; import 'package:unit2/screens/unit2/homepage.dart/components/dashboard/dashboard_icon_generator.dart'; import 'package:unit2/screens/unit2/homepage.dart/components/dashboard/superadmin_expanded_menu.dart'; import 'package:unit2/screens/unit2/homepage.dart/module-screen.dart'; @@ -68,10 +69,6 @@ class _DashBoardState extends State { docSmsCards.add(e); } }); - unit2Cards.forEach((element) { - print( - "${element.moduleName} - ${element.object.name!} - ${element.roleName} "); - }); if (superadminCards.length > 3) { tempSuperAdminCards = superadminCards.sublist(0, 4); } @@ -79,6 +76,10 @@ class _DashBoardState extends State { tempUnit2Cards = unit2Cards.sublist(0, 4); } + superadminCards.forEach((el) { + print(el.object.name); + }); + return Container( padding: const EdgeInsetsDirectional.symmetric(vertical: 24, horizontal: 24), @@ -196,7 +197,7 @@ class _DashBoardState extends State { : e.object.name!, ontap: () { if (e.object.name!.toLowerCase() == 'pass check') { - PassCheckArguments passCheckArguments = PassCheckArguments(roleId: e.roleId, userId: widget.userId); + PassCheckArguments passCheckArguments = PassCheckArguments(roleIdRoleName: RoleIdRoleName(roleId: e.roleId, roleName: e.roleName), userId: widget.userId); Navigator.pushNamed(context, '/pass-check', arguments: passCheckArguments); } if (e.object.name!.toLowerCase() == 'role based access control') { @@ -312,7 +313,7 @@ class _DashBoardState extends State { PassCheckArguments passCheckArguments = PassCheckArguments( - roleId: 10, + roleIdRoleName: RoleIdRoleName(roleId: e.roleId, roleName: e.roleName), userId: widget.userId); Navigator.pushNamed( @@ -386,7 +387,7 @@ class _DashBoardState extends State { PassCheckArguments passCheckArguments = PassCheckArguments( - roleId: 10, + roleIdRoleName: RoleIdRoleName(roleId: e.roleId,roleName: e.roleName), userId: widget.userId); Navigator.pushNamed( context, '/pass-check', @@ -647,7 +648,8 @@ class _DashBoardState extends State { ? "Field Surveyor" : e.object.name!, ontap: () { - Navigator.pushNamed(context, '/passo-home'); + Navigator.pushNamed( + context, '/passo-home'); }) : Container( color: Colors.black, @@ -706,7 +708,13 @@ class _DashBoardState extends State { } class PassCheckArguments { - final int roleId; + final RoleIdRoleName roleIdRoleName; final int userId; - const PassCheckArguments({required this.roleId, required this.userId}); + const PassCheckArguments({required this.roleIdRoleName, required this.userId}); +} + +class RoleIdRoleName{ + final int roleId; + final String roleName; + const RoleIdRoleName({required this.roleId, required this.roleName}); } diff --git a/lib/screens/unit2/homepage.dart/components/dashboard/superadmin_expanded_menu.dart b/lib/screens/unit2/homepage.dart/components/dashboard/superadmin_expanded_menu.dart index dd4c00f..22afbe3 100644 --- a/lib/screens/unit2/homepage.dart/components/dashboard/superadmin_expanded_menu.dart +++ b/lib/screens/unit2/homepage.dart/components/dashboard/superadmin_expanded_menu.dart @@ -212,7 +212,7 @@ class SuperAdminMenu extends StatelessWidget { })); } if (object.object.name == 'Role Member') { - Navigator.of(context).pop(); + Navigator.of(context).pop(); showDialog( context: context, builder: (BuildContext context) { @@ -271,6 +271,7 @@ class SuperAdminMenu extends StatelessWidget { roleAssignmentKey .currentState! .value['lastname']; + Navigator.of(context).pop(); Navigator.push(context, MaterialPageRoute(builder: (BuildContext diff --git a/lib/screens/unit2/login/login.dart b/lib/screens/unit2/login/login.dart index ecd188a..d828c89 100644 --- a/lib/screens/unit2/login/login.dart +++ b/lib/screens/unit2/login/login.dart @@ -47,7 +47,7 @@ class _UniT2LoginState extends State { indicatorWidget: const SpinKitFadingCircle(color: Colors.white), child: BlocConsumer(listener: (context, state) { print(state); - if (state is UserLoggedIn || state is UuidLoaded) { + if (state is UserLoggedIn || state is UuidLoaded || state is LoginErrorState) { final progress = ProgressHUD.of(context); progress!.dismiss(); } @@ -94,6 +94,7 @@ class _UniT2LoginState extends State { })); } }, builder: (context, state) { + print(state); if (state is VersionLoaded) { return Builder(builder: (context) { if (state.versionInfo!.version != state.apkVersion) { @@ -251,9 +252,7 @@ class _UniT2LoginState extends State { onPressed: () { final progress = ProgressHUD.of(context); - FocusScope.of(context).unfocus(); - if (_formKey.currentState! .saveAndValidate()) { password = _formKey.currentState! @@ -263,7 +262,6 @@ class _UniT2LoginState extends State { progress?.showWithText( 'Logging in...', ); - BlocProvider.of(context) .add(UserLogin( username: username, diff --git a/lib/screens/unit2/roles/qr_code_scanner.dart/scan.dart b/lib/screens/unit2/roles/qr_code_scanner.dart/scan.dart index 5e25ab4..f773615 100644 --- a/lib/screens/unit2/roles/qr_code_scanner.dart/scan.dart +++ b/lib/screens/unit2/roles/qr_code_scanner.dart/scan.dart @@ -302,28 +302,28 @@ class _QRCodeScannerState extends State { children: [ SelectedState( //TODO add api data - title: state.roleId == 41 || - state.roleId == 13 || - state.roleId == 17 || - state.roleId == 22 + title: state.roleIdRoleName.roleName.toLowerCase() == "41" || + state.roleIdRoleName.roleName.toLowerCase() == 'qr code scanner' || + state.roleIdRoleName.roleName.toLowerCase() == 'office/branch chief' || + state.roleIdRoleName.roleName.toLowerCase() == 'registration in-charge' ? state.assignedArea.stationName - : state.roleId == 7 + : state.roleIdRoleName.roleName.toLowerCase() == 'barangay chairperson' ? state.assignedArea.brgydesc - : state.roleId == 10 + : state.roleIdRoleName.roleName.toLowerCase() == 'purok president' ? state.assignedArea.purokdesc - : state.roleId == 16 + : state.roleIdRoleName.roleName.toLowerCase() == 'establishment point-person' ? "Agency" : "", - subtitle: state.roleId == 41 || - state.roleId == 13 || - state.roleId == 17 || - state.roleId == 22 + subtitle: state.roleIdRoleName.roleName.toLowerCase() == "41" || + state.roleIdRoleName.roleName.toLowerCase() == 'qr code scanner' || + state.roleIdRoleName.roleName.toLowerCase() == 'office/branch chief' || + state.roleIdRoleName.roleName.toLowerCase() == 'registration in-charge' ? "Station" - : state.roleId == 7 + : state.roleIdRoleName.roleName.toLowerCase() == 'barangay chairperson' ? "Barangay" - : state.roleId == 10 + : state.roleIdRoleName.roleName.toLowerCase() == 'purok president' ? "Purok" - : state.roleId == 16 + : state.roleIdRoleName.roleName.toLowerCase() == 'establishment point-person' ? "Agency" : "", ), diff --git a/lib/screens/unit2/roles/qr_code_scanner.dart/settings_screen.dart b/lib/screens/unit2/roles/qr_code_scanner.dart/settings_screen.dart index c150df6..75b024f 100644 --- a/lib/screens/unit2/roles/qr_code_scanner.dart/settings_screen.dart +++ b/lib/screens/unit2/roles/qr_code_scanner.dart/settings_screen.dart @@ -16,13 +16,13 @@ import 'package:unit2/utils/text_container.dart'; import 'package:unit2/widgets/error_state.dart'; import '../../../../theme-data.dart/btn-style.dart'; import '../../../../theme-data.dart/colors.dart'; -import '../../../../theme-data.dart/form-style.dart'; +import '../../../../theme-data.dart/form-style.dart'; import '../../../../utils/global.dart'; class QRCodeScannerSettings extends StatefulWidget { - final int roleId; - final int userId; - const QRCodeScannerSettings({super.key, required this.roleId, required this.userId}); +final RoleIdRoleName roleIdRoleName; +final int userId; + const QRCodeScannerSettings({super.key, required this.roleIdRoleName, required this.userId}); @override State createState() => _QRCodeScannerSettingsState(); @@ -172,7 +172,7 @@ class _QRCodeScannerSettingsState extends State { ////STATION Container( - child: state.roleId == 41 + child: state.roleIdRoleName.roleName.toLowerCase() == "41" ? DropdownButtonFormField( isExpanded: true, validator: FormBuilderValidators @@ -219,7 +219,7 @@ class _QRCodeScannerSettingsState extends State { }, ////BARANGAY ) - : state.roleId == 7 + : state.roleIdRoleName.roleName.toLowerCase() == 'barangay nurse' ? Column( crossAxisAlignment: CrossAxisAlignment @@ -270,7 +270,7 @@ class _QRCodeScannerSettingsState extends State { ) : ////PUROK - state.roleId == 10 + state.roleIdRoleName.roleName.toLowerCase() == 'checkpoint in-charge' ? Column( crossAxisAlignment: CrossAxisAlignment @@ -323,7 +323,7 @@ class _QRCodeScannerSettingsState extends State { ) : ////Registration InCharge - state.roleId == 22 + state.roleIdRoleName.roleName.toLowerCase() == 'registration in-charge' ? Column( crossAxisAlignment: CrossAxisAlignment @@ -398,7 +398,7 @@ class _QRCodeScannerSettingsState extends State { ], ) : ////QR Code Scanner - state.roleId == 13 + state.roleIdRoleName.roleName.toLowerCase() == 'qr code scanner' ? Column( crossAxisAlignment: CrossAxisAlignment @@ -469,7 +469,7 @@ class _QRCodeScannerSettingsState extends State { ) : ////Establishment Point-Person - state.roleId == 16 + state.roleIdRoleName.roleName.toLowerCase() == 'establishment point-person' ? Column( crossAxisAlignment: CrossAxisAlignment @@ -516,8 +516,8 @@ class _QRCodeScannerSettingsState extends State { ], ) : ////Office Branch Chief - state.roleId == - 17 + state.roleIdRoleName.roleName.toLowerCase() == 'office/branch chief' + ? Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -578,10 +578,6 @@ class _QRCodeScannerSettingsState extends State { onPressed: () { if (_formKey.currentState! .saveAndValidate()) { - print(scanMode); - print(_includeOtherInputs); - print(checkerId); - print(assignedArea); Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) { @@ -595,7 +591,7 @@ class _QRCodeScannerSettingsState extends State { entranceExit: scanMode, includeOtherInputs: _includeOtherInputs, - roleId: state.roleId)), + roleIdRoleName: widget.roleIdRoleName)), child: const QRCodeScanner(), ); })); @@ -615,7 +611,7 @@ class _QRCodeScannerSettingsState extends State { return SomethingWentWrong( message: state.message, onpressed: () { - context.read().add(GetPassCheckAreas(roleId: widget.roleId, userId: widget.userId)); + context.read().add(GetPassCheckAreas(roleIdRoleName: widget.roleIdRoleName, userId: widget.userId)); }); } return Container(); diff --git a/lib/sevices/login_service/auth_service.dart b/lib/sevices/login_service/auth_service.dart index 97720c9..d2b3d79 100644 --- a/lib/sevices/login_service/auth_service.dart +++ b/lib/sevices/login_service/auth_service.dart @@ -39,16 +39,16 @@ class AuthService { Map baseHeaders = {'Content-Type': 'application/json'}; Map responseStatus = {}; String path = Url.instance.authentication(); - // try { + try { http.Response response = await Request.instance .postRequest(path: path, param: {}, headers: baseHeaders, body: body); Map data = jsonDecode(response.body); responseStatus = data; return responseStatus; - // } catch (e) { - // throw (e.toString()); - // } + } catch (e) { + throw (e.toString()); + } } Future> qrLogin({String? uuid, String? password}) async { diff --git a/lib/sevices/roles/pass_check_services.dart b/lib/sevices/roles/pass_check_services.dart index 3b076a6..c74704f 100644 --- a/lib/sevices/roles/pass_check_services.dart +++ b/lib/sevices/roles/pass_check_services.dart @@ -8,6 +8,7 @@ import 'package:unit2/model/roles/pass_check/agency_area_type.dart'; import 'package:unit2/model/roles/pass_check/assign_role_area_type.dart'; import 'package:unit2/model/roles/pass_check/barangay_assign_area.dart'; import 'package:unit2/model/roles/pass_check/passer_info.dart'; +import 'package:unit2/screens/unit2/homepage.dart/components/dashboard/dashboard.dart'; import 'package:unit2/utils/global.dart'; import 'package:http/http.dart' as http; import 'package:unit2/utils/request.dart'; @@ -20,10 +21,10 @@ class PassCheckServices { static PassCheckServices get instance => _instance; Future> getPassCheckArea( - {required int roleId, required int userId}) async { + {required RoleIdRoleName roleIdRoleName, required int userId}) async { String path = Url.instance.getAssignAreas(); Map params = { - "assigned_role__role__id": roleId.toString(), + "assigned_role__role__name__icontains": roleIdRoleName.roleName, "assigned_role__user__id": userId.toString() }; List? statusResponse; diff --git a/lib/utils/app_router.dart b/lib/utils/app_router.dart index 27bc4a2..8b11ea5 100644 --- a/lib/utils/app_router.dart +++ b/lib/utils/app_router.dart @@ -67,9 +67,12 @@ class AppRouter { return BlocProvider( create: (context) => PassCheckBloc() ..add(GetPassCheckAreas( - roleId: arguments.roleId, userId: arguments.userId)), + roleIdRoleName: RoleIdRoleName( + roleId: arguments.roleIdRoleName.roleId, + roleName: arguments.roleIdRoleName.roleName), + userId: arguments.userId)), child: QRCodeScannerSettings( - roleId: arguments.roleId, + roleIdRoleName: arguments.roleIdRoleName, userId: arguments.userId, ), ); diff --git a/lib/utils/request.dart b/lib/utils/request.dart index d75fcdc..970fac6 100644 --- a/lib/utils/request.dart +++ b/lib/utils/request.dart @@ -22,20 +22,20 @@ class Request { response = await get(Uri.https(host, path!, param), headers: headers) .timeout(Duration(seconds: requestTimeout)); } on TimeoutException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on SocketException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on FormatException catch (_) { throw const FormatException(formatError); @@ -43,12 +43,12 @@ class Request { throw const HttpException(httpError); } on Error catch (e) { debugPrint("get request error: $e"); - Fluttertoast.showToast( - msg: onError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: onError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (onError); } return response; @@ -65,20 +65,20 @@ class Request { headers: headers, body: jsonEncode(body)) .timeout(Duration(seconds: requestTimeout)); } on TimeoutException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on SocketException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on FormatException catch (_) { throw const FormatException(formatError); @@ -86,12 +86,12 @@ class Request { throw const HttpException(httpError); } on Error catch (e) { debugPrint("post request error: $e"); - Fluttertoast.showToast( - msg: onError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: onError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (e.toString()); } return response; @@ -107,20 +107,20 @@ class Request { response = await put(Uri.https(host, path, param), headers: headers, body: jsonEncode(body)); } on TimeoutException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on SocketException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on FormatException catch (_) { throw const FormatException(formatError); @@ -128,12 +128,12 @@ class Request { throw const HttpException(httpError); } on Error catch (e) { debugPrint("post request error: $e"); - Fluttertoast.showToast( - msg: onError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: onError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (e.toString()); } return response; @@ -149,20 +149,20 @@ class Request { response = await patch( path: host + path, headers: headers, body: body, param: param); } on TimeoutException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on SocketException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on FormatException catch (_) { throw const FormatException(formatError); @@ -170,12 +170,12 @@ class Request { throw const HttpException(httpError); } on Error catch (e) { debugPrint("post request error: $e"); - Fluttertoast.showToast( - msg: onError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: onError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (e.toString()); } return response; @@ -192,32 +192,32 @@ class Request { headers: headers, body: jsonEncode(body)) .timeout(Duration(seconds: requestTimeout)); } on TimeoutException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on SocketException catch (_) { - Fluttertoast.showToast( - msg: timeoutError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: timeoutError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (timeoutError); } on FormatException catch (_) { throw const FormatException(formatError); } on HttpException catch (_) { throw const HttpException(httpError); } on Error catch (e) { - Fluttertoast.showToast( - msg: onError, - toastLength: Toast.LENGTH_LONG, - gravity: ToastGravity.BOTTOM, - backgroundColor: Colors.black, - ); + // Fluttertoast.showToast( + // msg: onError, + // toastLength: Toast.LENGTH_LONG, + // gravity: ToastGravity.BOTTOM, + // backgroundColor: Colors.black, + // ); throw (e.toString()); } return response; From 5b8a67131f6d78547c11a426a2062b428088e873 Mon Sep 17 00:00:00 2001 From: PGAN-MIS Date: Tue, 5 Sep 2023 16:44:48 +0800 Subject: [PATCH 2/3] fix attachment error and display image in basic info --- .../profile/education/education_bloc.dart | 3 +- .../profile/eligibility/eligibility_bloc.dart | 2 +- .../learning_development_bloc.dart | 2 +- .../learning_development_view_attachment.dart | 4 +- .../profile/shared/single_attachment.dart | 6 +- .../module_objects/module_objects_screen.dart | 4 +- lib/screens/superadmin/role/role_screen.dart | 64 ++++++++++++++----- .../role_extend/role_extend_screen.dart | 4 +- .../role_module/role_module_scree.dart | 4 +- lib/screens/unit2/basic-info/basic-info.dart | 31 +++++---- 10 files changed, 82 insertions(+), 42 deletions(-) diff --git a/lib/bloc/profile/education/education_bloc.dart b/lib/bloc/profile/education/education_bloc.dart index dd7374c..5795d7e 100644 --- a/lib/bloc/profile/education/education_bloc.dart +++ b/lib/bloc/profile/education/education_bloc.dart @@ -219,8 +219,7 @@ class EducationBloc extends Bloc { } }); on((event, emit) { - String fileUrl = - '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(EducationAttachmentViewState( fileUrl: fileUrl, fileName: event.fileName)); }); diff --git a/lib/bloc/profile/eligibility/eligibility_bloc.dart b/lib/bloc/profile/eligibility/eligibility_bloc.dart index a714bc9..bd62e6c 100644 --- a/lib/bloc/profile/eligibility/eligibility_bloc.dart +++ b/lib/bloc/profile/eligibility/eligibility_bloc.dart @@ -290,7 +290,7 @@ class EligibilityBloc extends Bloc { } }); on((event,emit){ - String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(EligibilityAttachmentViewState(fileUrl: fileUrl,fileName: event.filename)); }); on((event, emit) async { diff --git a/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart b/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart index ad53010..c02604d 100644 --- a/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart +++ b/lib/bloc/profile/learningDevelopment/learning_development_bloc.dart @@ -334,7 +334,7 @@ class LearningDevelopmentBloc } }); on((event,emit){ - String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}${event.source}'; + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${event.source}'; emit(LearningAndDevelopmentAttachmentViewState(fileUrl: fileUrl, filename: event.filename)); }); on((event, emit) async { diff --git a/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart b/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart index e86086a..79812ac 100644 --- a/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart +++ b/lib/screens/profile/components/learning_development/learning_development_view_attachment.dart @@ -81,8 +81,8 @@ class _LearningDevelopmentViewAttachmentState ), imageUrl: state.fileUrl, width: double.infinity, - height: 220, - fit: BoxFit.cover, + + fit: BoxFit.fitHeight, ), ), ); diff --git a/lib/screens/profile/shared/single_attachment.dart b/lib/screens/profile/shared/single_attachment.dart index 3f790da..7e1b9a0 100644 --- a/lib/screens/profile/shared/single_attachment.dart +++ b/lib/screens/profile/shared/single_attachment.dart @@ -1,11 +1,9 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; - import '../../../model/profile/attachment.dart'; import '../../../theme-data.dart/box_shadow.dart'; import '../../../theme-data.dart/colors.dart'; -import '../../../utils/alerts.dart'; class SingleAttachment extends StatelessWidget { final Function()? onpressed; @@ -36,9 +34,9 @@ class SingleAttachment extends StatelessWidget { child: GestureDetector( onTap: view, - child: AutoSizeText( + child: Text( attachment.filename!, - wrapWords: false, + maxLines: 1, ), ), diff --git a/lib/screens/superadmin/module_objects/module_objects_screen.dart b/lib/screens/superadmin/module_objects/module_objects_screen.dart index e63f33c..30007d0 100644 --- a/lib/screens/superadmin/module_objects/module_objects_screen.dart +++ b/lib/screens/superadmin/module_objects/module_objects_screen.dart @@ -264,13 +264,13 @@ class RbacModuleObjectsScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( moduleObjects.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/superadmin/role/role_screen.dart b/lib/screens/superadmin/role/role_screen.dart index 5c65a71..03e055c 100644 --- a/lib/screens/superadmin/role/role_screen.dart +++ b/lib/screens/superadmin/role/role_screen.dart @@ -5,10 +5,12 @@ import 'package:flutter_form_builder/flutter_form_builder.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; import 'package:form_builder_validators/form_builder_validators.dart'; +import 'package:search_page/search_page.dart'; import 'package:unit2/bloc/rbac/rbac_operations/role/role_bloc.dart'; import 'package:unit2/screens/superadmin/role/shared_pop_up_menu.dart'; import 'package:unit2/widgets/Leadings/add_leading.dart'; import 'package:unit2/widgets/error_state.dart'; +import '../../../model/rbac/rbac.dart'; import '../../../theme-data.dart/box_shadow.dart'; import '../../../theme-data.dart/btn-style.dart'; import '../../../theme-data.dart/colors.dart'; @@ -24,12 +26,38 @@ class RbacRoleScreen extends StatelessWidget { @override Widget build(BuildContext context) { final formKey = GlobalKey(); + List roles = []; return Scaffold( appBar: AppBar( centerTitle: true, backgroundColor: primary, title: const Text("Role Screen"), actions: [ + IconButton( + onPressed: () { + showSearch( + context: context, + delegate: SearchPage( + barTheme: ThemeData(cardColor: primary), + builder: (RBAC rbac) { + return ListTile( + title: Text(rbac.name!), + ); + }, + filter: (RBAC rbac) { + return [rbac.name]; + }, + failure: const Center( + child: Text("No Role found :("), + ), + items: roles, + searchLabel: "Search Role", + suggestion: const Center( + child: Text("Search role by name"), + )), + ); + }, + icon: const Icon(Icons.search)), AddLeading(onPressed: () { BuildContext parent = context; showDialog( @@ -174,6 +202,7 @@ class RbacRoleScreen extends StatelessWidget { final parent = context; if (state is RoleLoadedState) { if (state.roles.isNotEmpty) { + roles = state.roles; return ListView.builder( padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), @@ -190,20 +219,24 @@ class RbacRoleScreen extends StatelessWidget { children: [ Expanded( child: Row( - children: [ - CircleAvatar(child: Text('${index+1}'),), - const SizedBox(width: 12,), - Flexible( - child: Text(state.roles[index].name!, - style: Theme.of(context) - .textTheme - .titleMedium! - .copyWith( - fontWeight: FontWeight.w500, - color: primary)), - ), - ], - )), + children: [ + CircleAvatar( + child: Text('${index + 1}'), + ), + const SizedBox( + width: 12, + ), + Flexible( + child: Text(state.roles[index].name!, + style: Theme.of(context) + .textTheme + .titleMedium! + .copyWith( + fontWeight: FontWeight.w500, + color: primary)), + ), + ], + )), AppPopupMenu( offset: const Offset(-10, -10), elevation: 3, @@ -360,7 +393,8 @@ class RbacRoleScreen extends StatelessWidget { } if (state is RoleErrorState) { return SomethingWentWrong( - message: state.message, onpressed: () { + message: state.message, + onpressed: () { context.read().add(GetRoles()); }); } diff --git a/lib/screens/superadmin/role_extend/role_extend_screen.dart b/lib/screens/superadmin/role_extend/role_extend_screen.dart index ffe490c..2640660 100644 --- a/lib/screens/superadmin/role_extend/role_extend_screen.dart +++ b/lib/screens/superadmin/role_extend/role_extend_screen.dart @@ -262,13 +262,13 @@ class RbacRoleExtendScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( rolesExtend.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/superadmin/role_module/role_module_scree.dart b/lib/screens/superadmin/role_module/role_module_scree.dart index 1f3b199..a71ae81 100644 --- a/lib/screens/superadmin/role_module/role_module_scree.dart +++ b/lib/screens/superadmin/role_module/role_module_scree.dart @@ -252,13 +252,13 @@ class RbacRoleModuleScreen extends StatelessWidget { }, groupHeaderBuilder: (BuildContext context, int section) { return ListTile( - tileColor: second, + tileColor: Colors.white, title: Text( roleModules.keys.toList()[section].toUpperCase(), style: Theme.of(context) .textTheme .titleMedium! - .copyWith(color: Colors.white), + .copyWith(color: primary,fontWeight: FontWeight.bold), ), ); }, diff --git a/lib/screens/unit2/basic-info/basic-info.dart b/lib/screens/unit2/basic-info/basic-info.dart index 07539a4..578cc7d 100644 --- a/lib/screens/unit2/basic-info/basic-info.dart +++ b/lib/screens/unit2/basic-info/basic-info.dart @@ -1,3 +1,4 @@ +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_progress_hud/flutter_progress_hud.dart'; @@ -13,6 +14,7 @@ import 'package:unit2/utils/global.dart'; import 'package:unit2/utils/text_container.dart'; import '../../../bloc/user/user_bloc.dart'; import '../../../theme-data.dart/colors.dart'; +import '../../../utils/urls.dart'; import '../../../widgets/splash_screen.dart'; import '../signature/signature_pad.dart'; import './components/cover-image.dart'; @@ -29,7 +31,9 @@ class BasicInfo extends StatelessWidget { child: ProgressHUD( child: BlocBuilder( builder: (context, state) { + if (state is UserLoggedIn) { + String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${ state.userData!.employeeInfo!.profile!.photoPath!}'; state.userData!.employeeInfo!.profile!.sex!.toUpperCase(); return SafeArea( child: Scaffold( @@ -47,17 +51,22 @@ class BasicInfo extends StatelessWidget { child: Stack( alignment: Alignment.center, children: [ - const CircleAvatar( - radius: 72, - backgroundColor: Colors.white, - ), - CircleAvatar( - radius: 69, - backgroundColor: Colors.grey.shade800, - child: SvgPicture.asset( - 'assets/svgs/male.svg', - ), - ), + + CachedNetworkImage( + imageUrl: fileUrl, + imageBuilder: (context, imageProvider) => Container( + width: 160, + height: 160, + decoration: BoxDecoration( + border: Border.all(color: third,width: 3), + shape: BoxShape.circle, + image: DecorationImage( + image: imageProvider, fit: BoxFit.cover), + ), + ), + placeholder: (context, url) => const CircularProgressIndicator(), + errorWidget: (context, url, error) =>const Icon(Icons.error), +), ], ), ), From c4fd2d9bd809180393feed8dcfd427b19679700b Mon Sep 17 00:00:00 2001 From: PGAN-MIS Date: Wed, 6 Sep 2023 08:54:53 +0800 Subject: [PATCH 3/3] commit for release --- lib/screens/unit2/basic-info/basic-info.dart | 52 +++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/lib/screens/unit2/basic-info/basic-info.dart b/lib/screens/unit2/basic-info/basic-info.dart index 578cc7d..9b1544b 100644 --- a/lib/screens/unit2/basic-info/basic-info.dart +++ b/lib/screens/unit2/basic-info/basic-info.dart @@ -31,9 +31,9 @@ class BasicInfo extends StatelessWidget { child: ProgressHUD( child: BlocBuilder( builder: (context, state) { - if (state is UserLoggedIn) { - String fileUrl = '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${ state.userData!.employeeInfo!.profile!.photoPath!}'; + String fileUrl = + '${Url.instance.prefixHost()}://${Url.instance.host()}/media/${state.userData?.employeeInfo?.profile?.photoPath}'; state.userData!.employeeInfo!.profile!.sex!.toUpperCase(); return SafeArea( child: Scaffold( @@ -51,22 +51,38 @@ class BasicInfo extends StatelessWidget { child: Stack( alignment: Alignment.center, children: [ - - CachedNetworkImage( - imageUrl: fileUrl, - imageBuilder: (context, imageProvider) => Container( - width: 160, - height: 160, - decoration: BoxDecoration( - border: Border.all(color: third,width: 3), - shape: BoxShape.circle, - image: DecorationImage( - image: imageProvider, fit: BoxFit.cover), - ), - ), - placeholder: (context, url) => const CircularProgressIndicator(), - errorWidget: (context, url, error) =>const Icon(Icons.error), -), + CachedNetworkImage( + imageUrl: fileUrl, + imageBuilder: (context, imageProvider) => + Container( + width: 160, + height: 160, + decoration: BoxDecoration( + border: + Border.all(color: Colors.black26, width: 3), + shape: BoxShape.circle, + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover), + ), + ), + placeholder: (context, url) => + const CircularProgressIndicator(), + errorWidget: (context, url, error) => + Container( + width: 160, + height: 160, + decoration: BoxDecoration( + border: + Border.all(color: Colors.white, width: 3), + shape: BoxShape.circle, + + ), + child: SvgPicture.asset( + 'assets/svgs/male.svg', + ), + ), + ), ], ), ),