diff --git a/lib/config/urls.dart b/lib/config/urls.dart index 4d220dc..28f9751 100644 --- a/lib/config/urls.dart +++ b/lib/config/urls.dart @@ -95,15 +95,33 @@ class Url { return '$baseUrl/transfer-items?page=$id'; } + static String getMyPackages(int id) { + return '$baseUrl/transfer-my-packages?page=$id'; + } + + static String getHospitalPackages(int id) { + return '$baseUrl/transfer-packages?page=$id'; + } + static String getMyItemRequests = '$baseUrl/my-suspended-transfer-items'; static const String getHospitalItemRequests = '$baseUrl/suspended-transfer-items'; + static String getMyPackageRequests = + '$baseUrl/my-suspended-transfer-packages'; + + static const String getHospitalPackageRequests = + '$baseUrl/suspended-transfer-packages'; + static String transferItems(String id) { return '$baseUrl/transfer-items/$id'; } + static String transferPackages(String id) { + return '$baseUrl/transfer-packages/$id'; + } + static String testResultVerification(String id, String value) { return '$baseUrl/TestResults/Verify/$id/$value'; } @@ -112,6 +130,10 @@ class Url { return '$baseUrl/transfer-items/ChangeStatus/$id'; } + static String verifyPackageRequests(String id, String value) { + return '$baseUrl/transfer-packages/ChangeStatus/$id'; + } + static String updateLabelResult(String id) { return '$baseUrl/Labels/$id'; } @@ -160,6 +182,10 @@ class Url { return '$baseUrl/Items/ChangeStatus/$id'; } + static String repairItems(String id) { + return '$baseUrl/transfer-items/ChangeRepair/$id'; + } + static String getUsers(String id) { return '$baseUrl/Users?medicalCenter_id=$id'; } diff --git a/lib/models/my_package_model.dart b/lib/models/my_package_model.dart index f0370d0..2117de1 100644 --- a/lib/models/my_package_model.dart +++ b/lib/models/my_package_model.dart @@ -3,6 +3,7 @@ import 'package:equatable/equatable.dart'; class MyPackageResultObject extends Equatable { final String id; final String name; + final List? items; final String? userName; final String? fromDate; final String? toDate; @@ -13,12 +14,14 @@ class MyPackageResultObject extends Equatable { this.userName, this.fromDate, this.toDate, + this.items, }); @override List get props => [ id, name, + items!, userName!, fromDate!, toDate!, diff --git a/lib/pages/MyItemsPages/Result/my_items_mine_screen.dart b/lib/pages/MyItemsPages/Result/my_items_mine_screen.dart index aab3bf2..dfb569c 100644 --- a/lib/pages/MyItemsPages/Result/my_items_mine_screen.dart +++ b/lib/pages/MyItemsPages/Result/my_items_mine_screen.dart @@ -1,6 +1,5 @@ // ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:cssd/config/routes.dart'; -import 'package:cssd/pages/MyItemsPages/my_items_history_screen.dart'; import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/connectivity.dart'; import 'package:cssd/providers/my_items.dart'; @@ -206,16 +205,10 @@ class _MyItemsMineScreenState extends State { isAdmin: false, items: itemResults.myItems?[index], push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: ((context) => - MyItemsHistoryScreen( - items: itemResults - .myItems?[index], - )), - ), - ); + Navigator.pushNamed(context, + Routes.myItemsHistoryScreen, + arguments: + itemResults.myItems?[index]); }, ); } else { @@ -225,16 +218,10 @@ class _MyItemsMineScreenState extends State { items: itemResults.hospitalItems?[index], push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: ((context) => - MyItemsHistoryScreen( - items: itemResults - .myItems?[index], - )), - ), - ); + Navigator.pushNamed(context, + Routes.myItemsHistoryScreen, + arguments: itemResults + .hospitalItems?[index]); }, ); } diff --git a/lib/pages/MyItemsPages/my_items_detail_screen.dart b/lib/pages/MyItemsPages/my_items_detail_screen.dart index 6968c30..209b9d9 100644 --- a/lib/pages/MyItemsPages/my_items_detail_screen.dart +++ b/lib/pages/MyItemsPages/my_items_detail_screen.dart @@ -1,5 +1,5 @@ +import 'package:cssd/config/routes.dart'; import 'package:cssd/models/item_model.dart'; -import 'package:cssd/pages/MyItemsPages/my_items_transfer_screen.dart'; import 'package:cssd/providers/items.dart'; import 'package:cssd/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart'; import 'package:flutter/material.dart'; @@ -82,14 +82,9 @@ class _MyItemsDetailScreenState extends State { datas: datas!, deviceBlockSize: _deviceBlockSize, push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => ItemsTransferScreen( - items: datas, - ), - ), - ); + Navigator.pushNamed( + context, Routes.itemsTransferScreen, + arguments: datas); }, ) : ConnectionErrorBox(); diff --git a/lib/pages/MyItemsPages/my_items_filter_screen.dart b/lib/pages/MyItemsPages/my_items_filter_screen.dart index f101108..4aab239 100644 --- a/lib/pages/MyItemsPages/my_items_filter_screen.dart +++ b/lib/pages/MyItemsPages/my_items_filter_screen.dart @@ -39,6 +39,14 @@ class _MyItemsFilterScreenState extends State { super.initState(); } + @override + void didChangeDependencies() { + if (isInit) { + isInit = false; + } + super.didChangeDependencies(); + } + @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); diff --git a/lib/pages/MyItemsPages/my_items_history_screen.dart b/lib/pages/MyItemsPages/my_items_history_screen.dart index 59089ed..5068b67 100644 --- a/lib/pages/MyItemsPages/my_items_history_screen.dart +++ b/lib/pages/MyItemsPages/my_items_history_screen.dart @@ -26,6 +26,7 @@ class MyItemsHistoryScreen extends StatefulWidget { class _MyItemsHistoryScreenState extends State { bool _isInit = true; ScrollController? sc; + MyItemResultObject? itemData; @override void initState() { @@ -34,13 +35,15 @@ class _MyItemsHistoryScreenState extends State { } @override - void didChangeDependencies() { + void didChangeDependencies() async { if (_isInit) { + itemData = + ModalRoute.of(context)!.settings.arguments as MyItemResultObject?; var userResults = Provider.of(context); userResults.setLoading(); - userResults - .getUsers(userResults.getUserMedicalCenter() as String) - .then((_) { + String medicalCenterId = + await userResults.getUserMedicalCenter() as String; + userResults.getUsers(medicalCenterId).then((_) { userResults.resetLoading(); sc?.addListener( () { @@ -49,8 +52,7 @@ class _MyItemsHistoryScreenState extends State { context, listen: false, ); - userResults - .getUsers(userResults.getUserMedicalCenter() as String); + userResults.getUsers(medicalCenterId); } }, ); @@ -105,20 +107,13 @@ class _MyItemsHistoryScreenState extends State { MyItemsItemDataBox( deviceBlockSize: _deviceBlockSize, hasHistoryBtn: false, - items: MyItemsHistoryScreen().items!, + items: itemData, isAdmin: userData['roles']?.contains('User') ? false : true, ), SizedBox( - height: 10.0, - ), - Divider( - color: Colors.grey, - height: 2.0, - ), - SizedBox( - height: 10.0, + height: 20.0, ), Expanded( child: Consumer( @@ -136,8 +131,7 @@ class _MyItemsHistoryScreenState extends State { children: [ ItemHistoryDate( deviceBlockSize: _deviceBlockSize, - items: - MyItemsHistoryScreen().items!, + items: itemData!, ), SizedBox( height: 20.0, diff --git a/lib/pages/MyItemsPages/my_items_transfer_screen.dart b/lib/pages/MyItemsPages/my_items_transfer_screen.dart index d66dbc2..46037af 100644 --- a/lib/pages/MyItemsPages/my_items_transfer_screen.dart +++ b/lib/pages/MyItemsPages/my_items_transfer_screen.dart @@ -30,19 +30,26 @@ class _ItemsTransferScreenState extends State { bool _isInit = true; ScrollController? sc; TextEditingController searchCTRL = new TextEditingController(); + ItemDetailObject? itemData; @override void initState() { sc = new ScrollController(); + print(itemData); super.initState(); } @override - void didChangeDependencies() { + void didChangeDependencies() async { if (_isInit) { + itemData = + ModalRoute.of(context)!.settings.arguments as ItemDetailObject?; var userResults = Provider.of(context); userResults.setLoading(); - userResults.getUsers(userResults.getUserMedicalCenter() as String).then( + String medicalCenterId = + await userResults.getUserMedicalCenter() as String; + print(medicalCenterId); + userResults.getUsers(medicalCenterId).then( (_) { userResults.resetLoading(); sc!.addListener( @@ -53,8 +60,7 @@ class _ItemsTransferScreenState extends State { context, listen: false, ); - userResults - .getUsers(userResults.getUserMedicalCenter() as String); + userResults.getUsers(medicalCenterId); } }, ); @@ -113,7 +119,7 @@ class _ItemsTransferScreenState extends State { ResultSearchBox( searchCTRL: searchCTRL, text: 'user', - text2: 'name', + text2: 'name or ID', deviceBlockSize: _deviceBlockSize, onChanged: (value) { Provider.of(context, listen: false) @@ -138,6 +144,7 @@ class _ItemsTransferScreenState extends State { return TransferDataBox( deviceBlockSize: _deviceBlockSize, user: userResults.usersBox?[index], + clickColor: kDarkBlue, isClicked: userResults.selectedUserIndex == index, @@ -148,8 +155,14 @@ class _ItemsTransferScreenState extends State { ).selectUser(index); print(userId); Provider.of( - context) + context, + listen: false) .saveUserId = userId; + Provider.of( + context, + listen: false) + .selectedUserForItems = + userResults.usersBox?[index]; }, ); }, @@ -176,7 +189,7 @@ class _ItemsTransferScreenState extends State { ), content: SizedBox( width: _deviceBlockSize, - height: 280, + height: 300, child: Column( children: [ Text( @@ -188,7 +201,7 @@ class _ItemsTransferScreenState extends State { SizedBox( height: 10.0, ), - ItemCard(_deviceBlockSize), + ItemCard(_deviceBlockSize, itemData!), SizedBox( height: 5.0, ), @@ -199,7 +212,14 @@ class _ItemsTransferScreenState extends State { SizedBox( width: 5.0, ), - ItemCard(_deviceBlockSize), + TransferDataBox( + deviceBlockSize: + _deviceBlockSize, + user: + Provider.of( + context) + .selectedUserForItems, + ) ], ), SizedBox( @@ -214,11 +234,16 @@ class _ItemsTransferScreenState extends State { context, listen: false, ).transferItems( - ItemsTransferScreen().items!.id, + itemData!.id, Provider.of( - context, - ).saveUserId!, + context, + listen: false) + .saveUserId!, ); + Navigator.of(context).pop(); + Navigator.of(context) + .popAndPushNamed(Routes + .myItemsResultScreen); }, text: 'Transfer', ), @@ -252,7 +277,7 @@ class _ItemsTransferScreenState extends State { ); } - Container ItemCard(double _deviceBlockSize) { + Container ItemCard(double _deviceBlockSize, ItemDetailObject item) { return Container( decoration: BoxDecoration( border: Border.all(color: Colors.grey), @@ -262,9 +287,9 @@ class _ItemsTransferScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - padding: const EdgeInsets.all(6.0), + padding: const EdgeInsets.all(10.0), child: Text( - ItemsTransferScreen().items!.id, + item.id, style: TextStyle( fontWeight: FontWeight.w700, fontSize: 5 * _deviceBlockSize, @@ -281,7 +306,7 @@ class _ItemsTransferScreenState extends State { Container( width: 40 * _deviceBlockSize, child: Text( - ItemsTransferScreen().items!.name, + item.name, style: TextStyle( fontSize: 3 * _deviceBlockSize, fontWeight: FontWeight.w700, @@ -301,7 +326,7 @@ class _ItemsTransferScreenState extends State { ), ), Text( - ItemsTransferScreen().items!.size, + item.size, overflow: TextOverflow.ellipsis, style: TextStyle( fontWeight: FontWeight.w700, @@ -323,7 +348,7 @@ class _ItemsTransferScreenState extends State { ), ), Text( - ItemsTransferScreen().items!.userName, + item.userName, style: TextStyle( fontSize: 3 * _deviceBlockSize, fontWeight: FontWeight.w700, diff --git a/lib/pages/MyPackagesPages/Result/my_packages_mine_screen.dart b/lib/pages/MyPackagesPages/Result/my_packages_mine_screen.dart index 7353d21..de4c524 100644 --- a/lib/pages/MyPackagesPages/Result/my_packages_mine_screen.dart +++ b/lib/pages/MyPackagesPages/Result/my_packages_mine_screen.dart @@ -1,6 +1,5 @@ // ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:cssd/config/routes.dart'; -import 'package:cssd/pages/MyPackagesPages/my_packages_history_screen.dart'; import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/connectivity.dart'; import 'package:cssd/providers/my_packages.dart'; @@ -49,11 +48,11 @@ class _MyPackagesMineScreenState extends State { () { if (sc!.position.pixels == sc!.position.maxScrollExtent && searchCTRL.text == '') { - var myItemResults = Provider.of( + var myPackageResults = Provider.of( context, listen: false, ); - myItemResults.getMyPackages(); + myPackageResults.getMyPackages(); } }, ); @@ -181,16 +180,10 @@ class _MyPackagesMineScreenState extends State { packages: packageResults.myPackages?[index], push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: ((context) => - MyPackagesHistoryScreen( - packages: packageResults - .myPackages?[index], - )), - ), - ); + Navigator.pushNamed(context, + Routes.myItemsHistoryScreen, + arguments: packageResults + .myPackages?[index]); }, ); } else { @@ -200,16 +193,10 @@ class _MyPackagesMineScreenState extends State { packages: packageResults .hospitalPackages?[index], push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: ((context) => - MyPackagesHistoryScreen( - packages: packageResults - .myPackages?[index], - )), - ), - ); + Navigator.pushNamed(context, + Routes.myItemsHistoryScreen, + arguments: packageResults + .hospitalPackages?[index]); }, ); } diff --git a/lib/pages/MyPackagesPages/my_packages_detail_screen.dart b/lib/pages/MyPackagesPages/my_packages_detail_screen.dart index 34f32b9..cd03ca0 100644 --- a/lib/pages/MyPackagesPages/my_packages_detail_screen.dart +++ b/lib/pages/MyPackagesPages/my_packages_detail_screen.dart @@ -1,5 +1,5 @@ +import 'package:cssd/config/routes.dart'; import 'package:cssd/models/package_model.dart'; -import 'package:cssd/pages/MyPackagesPages/my_packages_transfer_screen.dart'; import 'package:cssd/providers/packages.dart'; import 'package:cssd/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart'; import 'package:flutter/material.dart'; @@ -82,14 +82,9 @@ class _MyPackagesDetailScreenState extends State { datas: datas!, deviceBlockSize: _deviceBlockSize, push: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => PackageTransferScreen( - packages: datas, - ), - ), - ); + Navigator.pushNamed( + context, Routes.packagesTransferScreen, + arguments: datas); }, ) : ConnectionErrorBox(); diff --git a/lib/pages/MyPackagesPages/my_packages_filter_screen.dart b/lib/pages/MyPackagesPages/my_packages_filter_screen.dart index f194cec..5a44f57 100644 --- a/lib/pages/MyPackagesPages/my_packages_filter_screen.dart +++ b/lib/pages/MyPackagesPages/my_packages_filter_screen.dart @@ -36,6 +36,14 @@ class _MyPackageFilterScreenState extends State { super.initState(); } + @override + void didChangeDependencies() { + if (isInit) { + isInit = false; + } + super.didChangeDependencies(); + } + @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); @@ -198,31 +206,71 @@ class _MyPackageFilterScreenState extends State { SizedBox( height: 30, ), - TextFormField( - controller: udiCTRL, - decoration: InputDecoration( - icon: Icon( - FontAwesomeIcons.alignLeft, - size: 6 * _deviceBlockSize, + Row( + children: [ + Flexible( + flex: 8, + child: TextFormField( + controller: udiCTRL, + decoration: InputDecoration( + icon: Icon( + FontAwesomeIcons.alignLeft, + size: 6 * _deviceBlockSize, + ), + labelStyle: TextStyle( + fontWeight: FontWeight.w100, + fontSize: 4 * _deviceBlockSize, + ), + labelText: 'UDI', + isDense: true, + contentPadding: EdgeInsets.symmetric( + vertical: 2, + horizontal: 3, + ), + ), + style: TextStyle( + fontWeight: FontWeight.w700, + fontSize: 5 * _deviceBlockSize, + ), + focusNode: _udiFocusNode, + keyboardType: TextInputType.text, + textInputAction: TextInputAction.next, + ), ), - labelStyle: TextStyle( - fontWeight: FontWeight.w100, - fontSize: 4 * _deviceBlockSize, - ), - labelText: 'UDI', - isDense: true, - contentPadding: EdgeInsets.symmetric( - vertical: 2, - horizontal: 3, - ), - ), - style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 5 * _deviceBlockSize, - ), - focusNode: _udiFocusNode, - keyboardType: TextInputType.text, - textInputAction: TextInputAction.next, + Flexible( + flex: 1, + child: InkWell( + onTap: () { + scan().then( + (String result) { + if (result == 'cancel') { + print('cancel'); + } else if (result == 'error') { + print('error'); + } else if (result == 'access') { + print('access'); + } else { + print(result); + idCTRL.text = result; + } + }, + ); + }, + child: Container( + padding: EdgeInsets.all(8), + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.black, + ), + child: Icon( + Icons.qr_code_scanner, + size: 5 * _deviceBlockSize, + color: Colors.white, + ), + ), + ), + ) + ], ), SizedBox( height: 90, diff --git a/lib/pages/MyPackagesPages/my_packages_history_screen.dart b/lib/pages/MyPackagesPages/my_packages_history_screen.dart index a425f55..670a810 100644 --- a/lib/pages/MyPackagesPages/my_packages_history_screen.dart +++ b/lib/pages/MyPackagesPages/my_packages_history_screen.dart @@ -15,9 +15,9 @@ import 'package:provider/provider.dart'; class MyPackagesHistoryScreen extends StatefulWidget { final bool? isAdmin; - final MyPackageResultObject? packages; + final MyPackageResultObject? items; - MyPackagesHistoryScreen({this.isAdmin, this.packages}); + MyPackagesHistoryScreen({this.isAdmin, this.items}); @override _MyPackagesHistoryScreenState createState() => @@ -27,6 +27,7 @@ class MyPackagesHistoryScreen extends StatefulWidget { class _MyPackagesHistoryScreenState extends State { bool _isInit = true; ScrollController? sc; + MyPackageResultObject? packageData; @override void initState() { @@ -35,13 +36,15 @@ class _MyPackagesHistoryScreenState extends State { } @override - void didChangeDependencies() { + void didChangeDependencies() async { if (_isInit) { + packageData = + ModalRoute.of(context)!.settings.arguments as MyPackageResultObject?; var userResults = Provider.of(context); userResults.setLoading(); - userResults - .getUsers(userResults.getUserMedicalCenter() as String) - .then((_) { + String medicalCenterId = + await userResults.getUserMedicalCenter() as String; + userResults.getUsers(medicalCenterId).then((_) { userResults.resetLoading(); sc?.addListener( () { @@ -50,8 +53,7 @@ class _MyPackagesHistoryScreenState extends State { context, listen: false, ); - userResults - .getUsers(userResults.getUserMedicalCenter() as String); + userResults.getUsers(medicalCenterId); } }, ); @@ -106,20 +108,13 @@ class _MyPackagesHistoryScreenState extends State { MyPackagesItemDataBox( deviceBlockSize: _deviceBlockSize, hasHistoryBtn: false, - packages: MyPackagesHistoryScreen().packages!, + packages: packageData, isAdmin: userData['roles']?.contains('User') ? false : true, ), SizedBox( - height: 10.0, - ), - Divider( - color: Colors.grey, - height: 2.0, - ), - SizedBox( - height: 10.0, + height: 20.0, ), Expanded( child: Consumer( @@ -137,9 +132,7 @@ class _MyPackagesHistoryScreenState extends State { children: [ PackageHistoryDate( deviceBlockSize: _deviceBlockSize, - packages: - MyPackagesHistoryScreen() - .packages!, + packages: packageData!, ), SizedBox( height: 20.0, diff --git a/lib/pages/MyPackagesPages/my_packages_transfer_screen.dart b/lib/pages/MyPackagesPages/my_packages_transfer_screen.dart index 79fc5b3..553629e 100644 --- a/lib/pages/MyPackagesPages/my_packages_transfer_screen.dart +++ b/lib/pages/MyPackagesPages/my_packages_transfer_screen.dart @@ -30,6 +30,7 @@ class _PackageTransferScreenState extends State { bool _isInit = true; ScrollController? sc; TextEditingController searchCTRL = new TextEditingController(); + PackageDetailObject? packageData; @override void initState() { @@ -38,13 +39,15 @@ class _PackageTransferScreenState extends State { } @override - void didChangeDependencies() { + void didChangeDependencies() async { if (_isInit) { + packageData = + ModalRoute.of(context)!.settings.arguments as PackageDetailObject?; var userResults = Provider.of(context); userResults.setLoading(); - userResults - .getUsers(userResults.getUserMedicalCenter() as String) - .then((_) { + String medicalCenterId = + await userResults.getUserMedicalCenter() as String; + userResults.getUsers(medicalCenterId).then((_) { userResults.resetLoading(); sc!.addListener( () { @@ -54,8 +57,7 @@ class _PackageTransferScreenState extends State { context, listen: false, ); - userResults - .getUsers(userResults.getUserMedicalCenter() as String); + userResults.getUsers(medicalCenterId); } }, ); @@ -138,6 +140,7 @@ class _PackageTransferScreenState extends State { return TransferDataBox( deviceBlockSize: _deviceBlockSize, user: userResults.usersBox?[index], + clickColor: kDarkPurple, isClicked: userResults.selectedUserIndex == index, @@ -148,8 +151,14 @@ class _PackageTransferScreenState extends State { ).selectUser(index); print(userId); Provider.of( - context) + context, + listen: false) .saveUserId = userId; + Provider.of( + context, + listen: false) + .selectedUserForPackages = + userResults.usersBox?[index]; }, ); }, @@ -188,7 +197,8 @@ class _PackageTransferScreenState extends State { SizedBox( height: 10.0, ), - PackageCard(_deviceBlockSize), + PackageCard( + _deviceBlockSize, packageData!), SizedBox( height: 5.0, ), @@ -199,7 +209,13 @@ class _PackageTransferScreenState extends State { SizedBox( width: 5.0, ), - PackageCard(_deviceBlockSize), + TransferDataBox( + deviceBlockSize: + _deviceBlockSize, + user: Provider.of< + UsersProvider>(context) + .selectedUserForPackages, + ) ], ), SizedBox( @@ -207,20 +223,23 @@ class _PackageTransferScreenState extends State { ), TransferDestroyButton( deviceBlockSize: _deviceBlockSize, - firstColor: kDarkBlue, - secondColor: kDarkBlueSub, + firstColor: kDarkPurple, + secondColor: kDarkPurpleSub, onTap: () { Provider.of( context, listen: false, ).transferPackage( - PackageTransferScreen() - .packages! - .id, + packageData!.id, Provider.of( - context, - ).saveUserId!, + context, + listen: false) + .saveUserId!, ); + Navigator.of(context).pop(); + Navigator.of(context) + .popAndPushNamed(Routes + .myPackagesResultScreen); }, text: 'Transfer', ), @@ -254,7 +273,7 @@ class _PackageTransferScreenState extends State { ); } - Container PackageCard(double _deviceBlockSize) { + Container PackageCard(double _deviceBlockSize, PackageDetailObject package) { return Container( decoration: BoxDecoration( border: Border.all(color: Colors.grey), @@ -266,7 +285,7 @@ class _PackageTransferScreenState extends State { Container( padding: const EdgeInsets.all(6.0), child: Text( - PackageTransferScreen().packages!.id, + package.id, style: TextStyle( fontWeight: FontWeight.w700, fontSize: 5 * _deviceBlockSize, @@ -283,7 +302,7 @@ class _PackageTransferScreenState extends State { Container( width: 40 * _deviceBlockSize, child: Text( - PackageTransferScreen().packages!.name, + package.name, style: TextStyle( fontSize: 3 * _deviceBlockSize, fontWeight: FontWeight.w700, diff --git a/lib/providers/my_items.dart b/lib/providers/my_items.dart index 5ffb834..6c5253d 100644 --- a/lib/providers/my_items.dart +++ b/lib/providers/my_items.dart @@ -92,6 +92,7 @@ class MyItemProvider extends ChangeNotifier { String url = Url.getMyItems(pageNumber); if (filterOn) { if (filters!.id != '') { + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Modify this. Filter Items by ID dos'nt work!!!! url += '&item_id=${filters!.id}'; } if (filters!.name != '') { @@ -124,8 +125,12 @@ class MyItemProvider extends ChangeNotifier { name: item['name'], id: item['id'].toString(), size: item['size'].toString(), - fromDate: item['transfers']['from_date'], - toDate: item['transfers']['to_date'], + fromDate: item['transfers'].isNotEmpty + ? item['transfers']['from_date'].toString() + : '', + toDate: item['transfers'].isNotEmpty + ? item['transfers']['to_date'].toString() + : '', ), ); } @@ -137,6 +142,7 @@ class MyItemProvider extends ChangeNotifier { String url = Url.getHospitalItems(pageNumber); if (filterOn) { if (filters!.id != '') { + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Modify this. Filter Items by ID dos'nt work!!!! url += '&item_id=${filters!.id}'; } if (filters!.name != '') { @@ -158,7 +164,6 @@ class MyItemProvider extends ChangeNotifier { ); print(response.body); - print(response.statusCode); var itemsData = json.decode(response.body); @@ -173,8 +178,12 @@ class MyItemProvider extends ChangeNotifier { id: item['id'].toString(), size: item['size'].toString(), userName: item['user'] != null ? item['user']['name'] : '', - // fromDate: item['transfers']['from_date'], - // toDate: item['transfers']['to_date'], + fromDate: item['transfers'].isNotEmpty + ? item['transfers']['from_date'].toString() + : '', + toDate: item['transfers'].isNotEmpty + ? item['transfers']['to_date'].toString() + : '', ), ); } @@ -196,9 +205,9 @@ class MyItemProvider extends ChangeNotifier { for (var item in itemsData['data']) { originalMyItemsRequests!.add( MyItemResultObject( - name: item['name'], - id: item['id'].toString(), - size: item['size'].toString(), + name: item['transferable']['name'], + id: item['transferable']['id'].toString(), + size: item['transferable']['size'].toString(), ), ); } @@ -212,15 +221,16 @@ class MyItemProvider extends ChangeNotifier { ); var itemsData = json.decode(response.body); + print(itemsData); originalHospitalItemsRequests = []; for (var item in itemsData['data']) { originalHospitalItemsRequests!.add( MyItemResultObject( - name: item['name'], - id: item['id'].toString(), - size: item['size'].toString(), + name: item['transferable']['name'].toString(), + id: item['transferable']['id'].toString(), + size: item['transferable']['size'].toString(), userName: item['user'] != null ? item['user']['name'] : '', ), ); @@ -247,6 +257,24 @@ class MyItemProvider extends ChangeNotifier { print(itemData); } + Future repairItems(String itemId, String value) async { + var response = await http.post( + Uri.parse(Url.repairItems(itemId)), + body: json.encode( + { + 'status': value, + }, + ), + headers: { + 'Authorization': User.token, + 'X-Requested-With': 'XMLHttpRequest', + "Content-Type": "application/json", + "Accept": "application/json" + }, + ); + print(response.statusCode); + } + Future verifyItemRequests(String id, String value) async { var response = await http.post( Uri.parse(Url.verifyItemRequests(id, value)), @@ -260,6 +288,8 @@ class MyItemProvider extends ChangeNotifier { ); var itemData = json.decode(response.body); + print(response.statusCode); + print(itemData); try { if (itemData['data']['transfers']['status'] == 'approved') { @@ -268,6 +298,7 @@ class MyItemProvider extends ChangeNotifier { return false; } } catch (e) { + print(e); return false; } } diff --git a/lib/providers/my_packages.dart b/lib/providers/my_packages.dart index d83c007..6a5e200 100644 --- a/lib/providers/my_packages.dart +++ b/lib/providers/my_packages.dart @@ -79,7 +79,7 @@ class MyPackageProvider extends ChangeNotifier { } Future getMyPackages() async { - String url = Url.getMyItems(pageNumber); + String url = Url.getMyPackages(pageNumber); if (filterOn) { if (filters!.id != '') { url += '&package_id=${filters!.id}'; @@ -107,8 +107,12 @@ class MyPackageProvider extends ChangeNotifier { MyPackageResultObject( name: package['name'], id: package['id'].toString(), - fromDate: package['transfers']['from_date'], - toDate: package['transfers']['to_date'], + // fromDate: package['transfers'].isNotEmpty + // ? package['transfers']['from_date'].toString() + // : '', + // toDate: package['transfers'].isNotEmpty + // ? package['transfers']['to_date'].toString() + // : '', ), ); } @@ -117,7 +121,7 @@ class MyPackageProvider extends ChangeNotifier { } Future getHospitalPackages() async { - String url = Url.getHospitalItems(pageNumber); + String url = Url.getHospitalPackages(pageNumber); if (filterOn) { if (filters!.id != '') { url += '&package_id=${filters!.id}'; @@ -146,8 +150,12 @@ class MyPackageProvider extends ChangeNotifier { name: package['name'], id: package['id'].toString(), userName: package['user'] != null ? package['user']['name'] : '', - fromDate: package['transfers']['from_date'], - toDate: package['transfers']['to_date'], + // fromDate: package['transfers'].isNotEmpty + // ? package['transfers']['from_date'].toString() + // : '', + // toDate: package['transfers'].isNotEmpty + // ? package['transfers']['to_date'].toString() + // : '', ), ); } @@ -156,7 +164,7 @@ class MyPackageProvider extends ChangeNotifier { } Future getMyPackageRequests() async { - String url = Url.getMyItemRequests; + String url = Url.getMyPackageRequests; var response = await http.get( Uri.parse(url), headers: {'Authorization': User.token, "Accept": "application/json"}, @@ -169,15 +177,15 @@ class MyPackageProvider extends ChangeNotifier { for (var package in packagesData['data']) { originalMyPackagesRequests!.add( MyPackageResultObject( - name: package['name'], - id: package['id'].toString(), + name: package['transferable']['name'], + id: package['transferable']['id'].toString(), ), ); } } Future getHospitalPackageRequests() async { - String url = Url.getHospitalItemRequests; + String url = Url.getHospitalPackageRequests; var response = await http.get( Uri.parse(url), headers: {'Authorization': User.token, "Accept": "application/json"}, @@ -190,8 +198,8 @@ class MyPackageProvider extends ChangeNotifier { for (var package in packagesData['data']) { originalHospitalPackagesRequests!.add( MyPackageResultObject( - name: package['name'], - id: package['id'].toString(), + name: package['transferable']['name'], + id: package['transferable']['id'].toString(), userName: package['user'] != null ? package['user']['name'] : '', ), ); @@ -200,7 +208,7 @@ class MyPackageProvider extends ChangeNotifier { Future transferPackage(String packageId, String userId) async { var response = await http.post( - Uri.parse(Url.transferItems(packageId)), + Uri.parse(Url.transferPackages(packageId)), body: json.encode( { 'user_id': userId, @@ -220,7 +228,7 @@ class MyPackageProvider extends ChangeNotifier { Future verifyPackageRequests(String id, String value) async { var response = await http.post( - Uri.parse(Url.verifyItemRequests(id, value)), + Uri.parse(Url.verifyPackageRequests(id, value)), body: json.encode({'status': value}), headers: { 'Authorization': User.token, diff --git a/lib/providers/users.dart b/lib/providers/users.dart index b459f0c..aa7a696 100644 --- a/lib/providers/users.dart +++ b/lib/providers/users.dart @@ -16,6 +16,8 @@ class UsersProvider extends ChangeNotifier { String? medicalCenterId; int? selectedUserIndex; + Users? selectedUserForItems; + Users? selectedUserForPackages; String? saveUserId; @@ -66,6 +68,7 @@ class UsersProvider extends ChangeNotifier { ), ); } + searchUsers(''); } Future getUserMedicalCenter() async { diff --git a/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart b/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart index 026df36..1d7a45f 100644 --- a/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart +++ b/lib/widgets/MyItemsScreens/Detail/my_items_detail_box_widget.dart @@ -3,6 +3,7 @@ import 'package:cssd/config/routes.dart'; import 'package:cssd/models/item_model.dart'; import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/items.dart'; +import 'package:cssd/providers/my_items.dart'; import 'package:cssd/widgets/MyItemsScreens/Detail/cancel_transfer_button.dart'; import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart'; import 'package:flutter/material.dart'; @@ -417,6 +418,83 @@ class MyItemsDetailsDataBox extends StatelessWidget { ); }, ), + SizedBox( + height: 10.0, + ), + userData['roles']?.contains('User') ?? false + ? Container() + : TransferDestroyButton( + deviceBlockSize: _deviceBlockSize, + firstColor: Colors.black, + secondColor: Colors.black87, + text: 'Repair', + onTap: () { + showDialog( + context: context, + builder: (context) { + return AlertDialog( + title: Text( + 'Are you sure to repair this Item?', + style: TextStyle( + fontSize: 4 * _deviceBlockSize, + ), + ), + content: SizedBox( + width: _deviceBlockSize, + height: 220, + child: Column( + children: [ + Text( + 'By approving, your item will be set in repair mode and it can be use anymore unless you disable repair mode.', + style: TextStyle( + fontSize: 3 * _deviceBlockSize, + ), + ), + SizedBox( + height: 10.0, + ), + ItemCard(_deviceBlockSize), + SizedBox( + height: 20.0, + ), + TransferDestroyButton( + deviceBlockSize: _deviceBlockSize, + firstColor: Colors.black, + secondColor: Colors.black87, + onTap: () { + Provider.of(context, + listen: false) + .repairItems(datas.id, 'approved') + .then( + (value) { + Navigator.of(context).pop(); + Navigator.pushReplacementNamed( + context, + Routes.myItemsResultScreen, + ); + }, + ); + }, + text: 'Repair', + ), + SizedBox( + height: 5.0, + ), + CancelTransferButton( + deviceBlockSize: _deviceBlockSize, + color: kDarkBlue, + onTap: () { + Navigator.pop(context); + }, + ), + ], + ), + ), + ); + }, + ); + }, + ), SizedBox( height: 20.0, ), diff --git a/lib/widgets/MyItemsScreens/Detail/transfer_data_box.dart b/lib/widgets/MyItemsScreens/Detail/transfer_data_box.dart index fe6440b..5a40732 100644 --- a/lib/widgets/MyItemsScreens/Detail/transfer_data_box.dart +++ b/lib/widgets/MyItemsScreens/Detail/transfer_data_box.dart @@ -1,4 +1,3 @@ -import 'package:cssd/config/colors.dart'; import 'package:cssd/models/users_model.dart'; import 'package:flutter/material.dart'; @@ -6,12 +5,14 @@ class TransferDataBox extends StatelessWidget { final Users? user; final Function(String)? onTap; final bool isClicked; + final Color? clickColor; const TransferDataBox({ Key? key, required double deviceBlockSize, this.user, this.onTap, + this.clickColor, this.isClicked = false, }) : _deviceBlockSize = deviceBlockSize, super(key: key); @@ -32,7 +33,7 @@ class TransferDataBox extends StatelessWidget { borderRadius: BorderRadius.all( Radius.circular(10), ), - border: Border.all(color: kDarkBlue, width: 2.0), + border: Border.all(color: clickColor!, width: 2.0), ) : BoxDecoration(), padding: EdgeInsets.all(8), diff --git a/lib/widgets/MyItemsScreens/Filter/my_items_chip_widget.dart b/lib/widgets/MyItemsScreens/Filter/my_items_chip_widget.dart index f52a7c9..7d5c904 100644 --- a/lib/widgets/MyItemsScreens/Filter/my_items_chip_widget.dart +++ b/lib/widgets/MyItemsScreens/Filter/my_items_chip_widget.dart @@ -1,3 +1,4 @@ +import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/my_items.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -31,6 +32,7 @@ class MyItemFilterChip extends StatelessWidget { @override Widget build(BuildContext context) { + final userData = Provider.of(context, listen: false).user; return Row( children: [ SizedBox( @@ -59,11 +61,19 @@ class MyItemFilterChip extends StatelessWidget { _specific, ); itemProvider.setLoading(); - itemProvider.getMyItems().then( - (_) { - itemProvider.resetLoading(); - }, - ); + if (userData['roles']?.contains('User')) { + itemProvider.getMyItems().then( + (_) { + itemProvider.resetLoading(); + }, + ); + } else { + itemProvider.getHospitalItems().then( + (_) { + itemProvider.resetLoading(); + }, + ); + } }, ), ], diff --git a/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart b/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart index 5a979de..54f21f6 100644 --- a/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart +++ b/lib/widgets/MyPackagesScreens/Detail/my_packages_detail_box_widget.dart @@ -1,13 +1,8 @@ import 'package:cssd/config/colors.dart'; -import 'package:cssd/config/routes.dart'; import 'package:cssd/models/package_model.dart'; -import 'package:cssd/providers/auth.dart'; -import 'package:cssd/providers/packages.dart'; -import 'package:cssd/widgets/MyItemsScreens/Detail/cancel_transfer_button.dart'; import 'package:cssd/widgets/MyItemsScreens/Detail/transfer_destroy_button.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class MyPackageDetailsDataBox extends StatelessWidget { @@ -25,7 +20,7 @@ class MyPackageDetailsDataBox extends StatelessWidget { @override Widget build(BuildContext context) { - final userData = Provider.of(context, listen: false).user; + // final userData = Provider.of(context, listen: false).user; return Padding( padding: EdgeInsets.all(20), child: ListView( @@ -276,83 +271,83 @@ class MyPackageDetailsDataBox extends StatelessWidget { push(); }, ), - SizedBox( - height: 10.0, - ), - userData['roles']?.contains('User') ?? false - ? Container() - : TransferDestroyButton( - deviceBlockSize: _deviceBlockSize, - firstColor: kPink, - secondColor: kPinkSub, - text: 'Destroy', - onTap: () { - showDialog( - context: context, - builder: (context) { - return AlertDialog( - title: Text( - 'Are you sure to destroy this Package?', - style: TextStyle( - fontSize: 4 * _deviceBlockSize, - ), - ), - content: SizedBox( - width: _deviceBlockSize, - height: 220, - child: Column( - children: [ - Text( - 'By approving, your package will be removed and it can not be used any more.', - style: TextStyle( - fontSize: 3 * _deviceBlockSize, - ), - ), - SizedBox( - height: 10.0, - ), - PackageCard(_deviceBlockSize), - SizedBox( - height: 20.0, - ), - TransferDestroyButton( - deviceBlockSize: _deviceBlockSize, - firstColor: kPink, - secondColor: kPinkSub, - onTap: () { - Provider.of(context, - listen: false) - .removePackages(datas.id) - .then( - (value) { - Navigator.of(context).pop(); - Navigator.pushReplacementNamed( - context, - Routes.myPackagesResultScreen, - ); - }, - ); - }, - text: 'Destroy', - ), - SizedBox( - height: 5.0, - ), - CancelTransferButton( - deviceBlockSize: _deviceBlockSize, - color: kDarkPurple, - onTap: () { - Navigator.pop(context); - }, - ), - ], - ), - ), - ); - }, - ); - }, - ), + // SizedBox( + // height: 10.0, + // ), + // userData['roles']?.contains('User') ?? false + // ? Container() + // : TransferDestroyButton( + // deviceBlockSize: _deviceBlockSize, + // firstColor: kPink, + // secondColor: kPinkSub, + // text: 'Destroy', + // onTap: () { + // showDialog( + // context: context, + // builder: (context) { + // return AlertDialog( + // title: Text( + // 'Are you sure to destroy this Package?', + // style: TextStyle( + // fontSize: 4 * _deviceBlockSize, + // ), + // ), + // content: SizedBox( + // width: _deviceBlockSize, + // height: 220, + // child: Column( + // children: [ + // Text( + // 'By approving, your package will be removed and it can not be used any more.', + // style: TextStyle( + // fontSize: 3 * _deviceBlockSize, + // ), + // ), + // SizedBox( + // height: 10.0, + // ), + // PackageCard(_deviceBlockSize), + // SizedBox( + // height: 20.0, + // ), + // TransferDestroyButton( + // deviceBlockSize: _deviceBlockSize, + // firstColor: kPink, + // secondColor: kPinkSub, + // onTap: () { + // Provider.of(context, + // listen: false) + // .removePackages(datas.id) + // .then( + // (value) { + // Navigator.of(context).pop(); + // Navigator.pushReplacementNamed( + // context, + // Routes.myPackagesResultScreen, + // ); + // }, + // ); + // }, + // text: 'Destroy', + // ), + // SizedBox( + // height: 5.0, + // ), + // CancelTransferButton( + // deviceBlockSize: _deviceBlockSize, + // color: kDarkPurple, + // onTap: () { + // Navigator.pop(context); + // }, + // ), + // ], + // ), + // ), + // ); + // }, + // ); + // }, + // ), SizedBox( height: 20, ), diff --git a/lib/widgets/MyPackagesScreens/Filter/my_packages_chip_widget.dart b/lib/widgets/MyPackagesScreens/Filter/my_packages_chip_widget.dart index af655af..6788e34 100644 --- a/lib/widgets/MyPackagesScreens/Filter/my_packages_chip_widget.dart +++ b/lib/widgets/MyPackagesScreens/Filter/my_packages_chip_widget.dart @@ -1,3 +1,4 @@ +import 'package:cssd/providers/auth.dart'; import 'package:cssd/providers/my_packages.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -25,6 +26,7 @@ class MyPackageFilterChip extends StatelessWidget { @override Widget build(BuildContext context) { + final userData = Provider.of(context, listen: false).user; return Row( children: [ SizedBox( @@ -51,11 +53,19 @@ class MyPackageFilterChip extends StatelessWidget { _udi, ); packageProvider.setLoading(); - packageProvider.getMyPackages().then( - (_) { - packageProvider.resetLoading(); - }, - ); + if (userData['roles']?.contains('User')) { + packageProvider.getMyPackages().then( + (_) { + packageProvider.resetLoading(); + }, + ); + } else { + packageProvider.getHospitalPackages().then( + (_) { + packageProvider.resetLoading(); + }, + ); + } }, ), ], diff --git a/lib/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart b/lib/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart index 082675b..5a34e67 100644 --- a/lib/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart +++ b/lib/widgets/MyPackagesScreens/Result/my_packages_data_box_widget.dart @@ -106,7 +106,7 @@ class MyPackagesItemDataBox extends StatelessWidget { width: 9 * _deviceBlockSize, decoration: BoxDecoration( shape: BoxShape.circle, - color: kDarkBlue, + color: kDarkPurple, ), child: Icon( FontAwesomeIcons.history, diff --git a/lib/widgets/MyPackagesScreens/Result/package_requests_data_box.dart b/lib/widgets/MyPackagesScreens/Result/package_requests_data_box.dart index 58278f2..3b65e27 100644 --- a/lib/widgets/MyPackagesScreens/Result/package_requests_data_box.dart +++ b/lib/widgets/MyPackagesScreens/Result/package_requests_data_box.dart @@ -1,6 +1,6 @@ import 'package:cssd/config/colors.dart'; import 'package:cssd/models/my_package_model.dart'; -import 'package:cssd/providers/my_items.dart'; +import 'package:cssd/providers/my_packages.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -104,9 +104,9 @@ class PackageRequestsDataBox extends StatelessWidget { actions: [ TextButton( onPressed: () async { - Provider.of(context, + Provider.of(context, listen: false) - .verifyItemRequests( + .verifyPackageRequests( package!.id, 'approved') .then((result) { if (result) { @@ -114,7 +114,7 @@ class PackageRequestsDataBox extends StatelessWidget { } Navigator.of(ctx).pop(); Navigator.of(context).popAndPushNamed( - Routes.myItemsResultScreen); + Routes.myPackagesResultScreen); }); }, child: Text('Yes'), @@ -158,9 +158,9 @@ class PackageRequestsDataBox extends StatelessWidget { actions: [ TextButton( onPressed: () async { - Provider.of(context, + Provider.of(context, listen: false) - .verifyItemRequests( + .verifyPackageRequests( package!.id, 'rejected') .then((result) { if (result) { @@ -168,7 +168,7 @@ class PackageRequestsDataBox extends StatelessWidget { } Navigator.of(ctx).pop(); Navigator.of(context).popAndPushNamed( - Routes.myItemsResultScreen); + Routes.myPackagesResultScreen); }); }, child: Text('Yes'),