diff --git a/lib/controllers/api_routes/api_manager.dart b/lib/controllers/api_routes/api_manager.dart index cefbbe9f..4e3dba5e 100644 --- a/lib/controllers/api_routes/api_manager.dart +++ b/lib/controllers/api_routes/api_manager.dart @@ -117,37 +117,37 @@ class ApiManager { return response; } - Future postWithOutBody(String url, {Map? headers,bool showLoading = true}) async { - headers ??= {}; - - headers.addAll(_headers); - - Uri _url = Uri.parse(url); - if (!kReleaseMode) { - print("URL:$_url"); - print("Headers:$headers"); - } - - var request = http.Request('POST', _url); - request.headers.addAll(headers); - - http.StreamedResponse _streamedResponse = await request.send(); - http.Response response = await http.Response.fromStream(_streamedResponse); - try { - if (response.statusCode == 401) { - showLoginDialog(); - } else { - if (jsonDecode(response.body) is Map) { - final message = jsonDecode(response.body)["message"]; - if (message != null && message.toString().isNotEmpty&&showLoading) { - Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG); - } - } - } - } catch (ex) {} - - return response; - } + // Future postWithOutBody(String url, {Map? headers,bool showLoading = true}) async { + // headers ??= {}; + // + // headers.addAll(_headers); + // + // Uri _url = Uri.parse(url); + // if (!kReleaseMode) { + // print("URL:$_url"); + // print("Headers:$headers"); + // } + // + // var request = http.Request('POST', _url); + // request.headers.addAll(headers); + // + // http.StreamedResponse _streamedResponse = await request.send(); + // http.Response response = await http.Response.fromStream(_streamedResponse); + // try { + // if (response.statusCode == 401) { + // showLoginDialog(); + // } else { + // if (jsonDecode(response.body) is Map) { + // final message = jsonDecode(response.body)["message"]; + // if (message != null && message.toString().isNotEmpty&&showLoading) { + // Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG); + // } + // } + // } + // } catch (ex) {} + // + // return response; + // } Future put(String url, {Map? headers, required Map body}) async { headers ??= {}; diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 850a2851..2d575b30 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:google_api_availability/google_api_availability.dart'; import 'package:huawei_push/huawei_push.dart' as h_push; import 'package:test_sa/controllers/notification/notification_manger.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/service_request_latest/views/service_request_detail_main_view.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; @@ -88,7 +88,7 @@ class FirebaseNotificationManger { model: GasRefillModel(id: int.parse(messageData["requestNumber"].toString())), ); } else if (messageData["requestType"] == "Asset Transfer") { - serviceClass = DeviceTransferDetails(model: AssetTransfer(id: int.parse(messageData["requestNumber"].toString()))); + serviceClass = DeviceTransferDetails(model: DeviceTransfer(id: int.parse(messageData["requestNumber"].toString()))); } else if (messageData["requestType"] == "PPM") { serviceClass = PpmDetailsPage(requestId: int.parse(messageData["requestNumber"].toString())); } diff --git a/lib/controllers/providers/api/asset_transfer_provider.dart b/lib/controllers/providers/api/asset_transfer_provider.dart index b4cad354..713ca6fd 100644 --- a/lib/controllers/providers/api/asset_transfer_provider.dart +++ b/lib/controllers/providers/api/asset_transfer_provider.dart @@ -8,7 +8,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart'; import 'package:test_sa/models/user.dart'; @@ -19,7 +19,7 @@ class AssetTransferProvider extends ChangeNotifier { // number of items call in each request final pageItemNumber = 12; - AssetTransfer transferModel = AssetTransfer(); + DeviceTransfer transferModel = DeviceTransfer(); //reset provider data void reset() { @@ -44,7 +44,7 @@ class AssetTransferProvider extends ChangeNotifier { bool nextPage = true; // list of user requests - List? items; + List? items; // when requests in-process _loading = true // done _loading = true @@ -84,7 +84,7 @@ class AssetTransferProvider extends ChangeNotifier { if (stateCode! >= 200 && stateCode! < 300) { // client's request was successfully received List listJson = json.decode(response.body)["data"]; - List itemsPage = listJson.map((request) => AssetTransfer.fromJson(request)).toList(); + List itemsPage = listJson.map((request) => DeviceTransfer.fromJson(request)).toList(); items ??= []; items!.addAll(itemsPage.toSet().toList()); notifyListeners(); @@ -105,7 +105,7 @@ class AssetTransferProvider extends ChangeNotifier { } } - Future getRequestById({int? assetTransferId}) async { + Future getRequestById({int? assetTransferId}) async { Response response; try { response = await ApiManager.instance.get( @@ -113,7 +113,7 @@ class AssetTransferProvider extends ChangeNotifier { enableToastMessage: false, ); if (response.statusCode >= 200 && response.statusCode < 300) { - return AssetTransfer.fromJson(json.decode(response.body)["data"]); + return DeviceTransfer.fromJson(json.decode(response.body)["data"]); } return null; } catch (error) { @@ -137,7 +137,7 @@ class AssetTransferProvider extends ChangeNotifier { Future createRequest({ required BuildContext context, - required AssetTransfer model, + required DeviceTransfer model, }) async { Response response; try { @@ -146,7 +146,7 @@ class AssetTransferProvider extends ChangeNotifier { stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { if (items != null) { - items!.insert(0, AssetTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0])); + items!.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0])); reset(); notifyListeners(); } @@ -158,11 +158,13 @@ class AssetTransferProvider extends ChangeNotifier { Navigator.pop(context); } catch (error) { Navigator.pop(context); + stateCode = -1; + notifyListeners(); print(error); } } - Future updateRequest(BuildContext context, {required AssetTransfer model}) async { + Future updateRequest(BuildContext context, {required DeviceTransfer model}) async { Response response; try { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); diff --git a/lib/controllers/providers/api/devices_provider.dart b/lib/controllers/providers/api/devices_provider.dart index 28f4c88e..3d031a61 100644 --- a/lib/controllers/providers/api/devices_provider.dart +++ b/lib/controllers/providers/api/devices_provider.dart @@ -59,7 +59,7 @@ class AssetProvider extends ChangeNotifier { notifyListeners(); } - Future getAssets({AssetSearch? search, bool isQr = false, bool isSearchBy = false}) async { + Future getAssets({DeviceSearch? search, bool isQr = false, bool isSearchBy = false}) async { if (_loading == true) return -2; _loading = true; notifyListeners(); @@ -124,7 +124,7 @@ class AssetProvider extends ChangeNotifier { // String serialNumber, // String number, bool addPagination = true, - AssetSearch? search, + DeviceSearch? search, }) async { late Response response; try { diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index 84c967b7..f6c94914 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -132,6 +132,8 @@ class GasRefillProvider extends ChangeNotifier { } Navigator.pop(context); } catch (error) { + stateCode = -1; + notifyListeners(); Navigator.pop(context); print(error); } diff --git a/lib/controllers/providers/api/notifications_provider.dart b/lib/controllers/providers/api/notifications_provider.dart index e82a3694..2fc424d3 100644 --- a/lib/controllers/providers/api/notifications_provider.dart +++ b/lib/controllers/providers/api/notifications_provider.dart @@ -52,7 +52,7 @@ class NotificationsProvider extends ChangeNotifier { response = await ApiManager.instance.post(URLs.getSystemNotifications, body: body); stateCode = response.statusCode; - print('notifaction response is $response'); + print('notifaction response is ${response.body}'); if (response.statusCode >= 200 && response.statusCode < 300) { // client's request was successfully received List requestsListJson = json.decode(response.body)["data"]; diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index f5ae0bbf..0f897892 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -31,7 +31,7 @@ class UserProvider extends ChangeNotifier { File? profileImage; - VerifyOtpModel _verifyOtpModel= VerifyOtpModel(); + VerifyOtpModel _verifyOtpModel = VerifyOtpModel(); SwipeTransaction _swipeTransactionModel = SwipeTransaction(); List _swipeHistory = []; @@ -87,7 +87,7 @@ class UserProvider extends ChangeNotifier { notifyListeners(); Response response; try { - showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); + showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); response = await ApiManager.instance.post(URLs.login, body: await user.toLoginJson()); _loading = false; if (response.statusCode >= 200 && response.statusCode < 300) { @@ -155,7 +155,7 @@ class UserProvider extends ChangeNotifier { Response response; try { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - response = await ApiManager.instance.postWithOutBody(URLs.sendForgetPasswordOtp + '?employeeId=$employeeId', showLoading: false); + response = await ApiManager.instance.post(URLs.sendForgetPasswordOtp + '?employeeId=$employeeId', showToast: false, body: {}); generalResponseModel = GeneralResponseModel.fromJson(json.decode(response.body)); _loading = false; if (response.statusCode >= 200 && response.statusCode < 300) { @@ -183,9 +183,7 @@ class UserProvider extends ChangeNotifier { Response response; try { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - response = await ApiManager.instance.postWithOutBody( - URLs.sendForgetPasswordValidateOtp + '?employeeId=$employeeId&otp=$otp', - ); + response = await ApiManager.instance.post(URLs.sendForgetPasswordValidateOtp + '?employeeId=$employeeId&otp=$otp', body: {}); generalResponseModel = GeneralResponseModel.fromJson(json.decode(response.body)); _loading = false; if (response.statusCode >= 200 && response.statusCode < 300) { @@ -208,7 +206,7 @@ class UserProvider extends ChangeNotifier { } } - Future updateNewPassword({required BuildContext context, required UpdatePasswordModel updatePasswordModel}) async { + Future updateNewPassword({required BuildContext context, required UpdatePasswordModel updatePasswordModel}) async { GeneralResponseModel generalResponseModel = GeneralResponseModel(responseCode: -1); if (_loading == true) return generalResponseModel; _loading = true; @@ -235,6 +233,7 @@ class UserProvider extends ChangeNotifier { return generalResponseModel; } } + Future uploadProfileImage(String userId, File image) async { if (_loading == true) return -2; _loading = true; @@ -261,23 +260,24 @@ class UserProvider extends ChangeNotifier { return -1; } } + Future makeSwipe({required Swipe model}) async { isLoading = true; SwipeModel swipeResponse = SwipeModel(data: false, message: '', responseCode: 0, isSuccess: false); notifyListeners(); Response response; // try { - response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(), showToast: false); - swipeResponse = SwipeModel.fromJson(json.decode(response.body)); - - if (response.statusCode >= 200 && response.statusCode < 300) { - isUserConfirmSwipe = true; - await getSwipeLastTransaction(userId: user!.userID!); - notifyListeners(); - } + response = await ApiManager.instance.post(URLs.swipeUrl, body: model.toJson(), showToast: false); + swipeResponse = SwipeModel.fromJson(json.decode(response.body)); + if (response.statusCode >= 200 && response.statusCode < 300) { + isUserConfirmSwipe = true; + await getSwipeLastTransaction(userId: user!.userID!); notifyListeners(); - return swipeResponse; + } + + notifyListeners(); + return swipeResponse; // } catch (error) { // notifyListeners(); // return swipeResponse; @@ -305,7 +305,7 @@ class UserProvider extends ChangeNotifier { } } - Future getSwipeTransactionHistory({required String userId, required DateTime dateFrom,required DateTime dateTo}) async { + Future getSwipeTransactionHistory({required String userId, required DateTime dateFrom, required DateTime dateTo}) async { isLoading = true; notifyListeners(); Response response; @@ -313,7 +313,7 @@ class UserProvider extends ChangeNotifier { "userId": userId, "dateFrom": dateFrom.toIso8601String(), "dateTo": dateTo.toIso8601String(), - "IsSucces":true, + "IsSucces": true, }; try { response = await ApiManager.instance.post(URLs.getSwipeTransactionHistoryUrl, body: body); diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index db07f571..61298f75 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -113,7 +113,7 @@ class DashBoardProvider extends ChangeNotifier { } Response response; try { - response = await ApiManager.instance.postWithOutBody(url); + response = await ApiManager.instance.post(url,body: {}); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { dashboardCount = DashboardCount.fromJson(json.decode(response.body)); @@ -244,8 +244,6 @@ class DashBoardProvider extends ChangeNotifier { if (usersType == UsersTypes.engineer) { //need to check pagination for not assigned task @waseem. - print('status i got is $status'); - print('id i got is $tabId'); //these checks are to call different apis for dashboard for engineer... if (status == 0) { url = URLs.engineerDashboardUpcoming; diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index e4861640..8a9d604b 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -83,7 +83,7 @@ class RequestCategoryFragment extends StatelessWidget { label: tabs[index].label, loading: requestsProvider.isDetailLoading, isSelected: requestsProvider.currentListIndex == index, - count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.totalRows ?? 0 : 0, + count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.count ?? 0 : 0, onPressed: () async { requestsProvider.currentListIndex = index; requestsProvider.resetRequestDataList(); diff --git a/lib/dashboard_latest/widgets/request_category_list.dart b/lib/dashboard_latest/widgets/request_category_list.dart index 6999fb78..0f686fa7 100644 --- a/lib/dashboard_latest/widgets/request_category_list.dart +++ b/lib/dashboard_latest/widgets/request_category_list.dart @@ -3,7 +3,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart'; @@ -46,7 +46,7 @@ class RequestCategoryList extends StatelessWidget { case 2: return GasRefillItemView(requestData: request); case 3: - return AssetItemView(requestData: request); + return DeviceItemView(requestData: request); case 4: return PpmItemView(requestData: request); case 5: diff --git a/lib/main.dart b/lib/main.dart index 1629a3c4..5960c8f1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -68,9 +68,9 @@ import 'package:test_sa/providers/work_order/supplier_engineer_provider.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart'; import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart'; -import 'package:test_sa/views/pages/device_transfer/asset_filter_screen.dart'; -import 'package:test_sa/views/pages/device_transfer/asset_search_screen.dart'; -import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart'; +import 'package:test_sa/views/pages/device_transfer/device_filter_screen.dart'; +import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart'; +import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart'; import 'package:test_sa/views/pages/user/gas_refill/gas_refill_form.dart'; @@ -320,7 +320,7 @@ class MyApp extends StatelessWidget { // PreventiveMaintenanceVisitsPage.id: (_) => PreventiveMaintenanceVisitsPage(), PpmPage.id: (_) => const PpmPage(), TrackGasRefillPage.id: (_) => const TrackGasRefillPage(), - CreateAssetTransferRequest.id: (_) => const CreateAssetTransferRequest(), + CreateDeviceTransferRequest.id: (_) => const CreateDeviceTransferRequest(), TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(), // todo remove this class after work @@ -328,8 +328,8 @@ class MyApp extends StatelessWidget { CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(), WorkOrderListPage.id: (_) => WorkOrderListPage(), AssetDetailPage.id: (_) => const AssetDetailPage(), - AssetSearchScreen.id: (_) => const AssetSearchScreen(), - AssetFilterScreen.id: (_) => const AssetFilterScreen(), + DeviceSearchScreen.id: (_) => const DeviceSearchScreen(), + DeviceFilterScreen.id: (_) => const DeviceFilterScreen(), WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(), UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(), SettingsPage.id: (_) => const SettingsPage(), diff --git a/lib/models/device/asset_search.dart b/lib/models/device/asset_search.dart index d186c6f9..f311b208 100644 --- a/lib/models/device/asset_search.dart +++ b/lib/models/device/asset_search.dart @@ -1,7 +1,7 @@ import 'package:test_sa/models/lookup.dart'; -class AssetSearch { - AssetSearch( +class DeviceSearch { + DeviceSearch( {this.code, this.assetSerialNumber, this.assetName, @@ -31,7 +31,7 @@ class AssetSearch { this.oracleCodeTypeId, this.oracleCodeValue}); - AssetSearch.fromJson(dynamic json) { + DeviceSearch.fromJson(dynamic json) { code = json['code']; assetSerialNumber = json['assetSerialNumber']; assetName = json['assetName']; @@ -91,7 +91,7 @@ class AssetSearch { String? oracleCodeValue; // Now nullable int? oracleCodeTypeId; - AssetSearch copyWith( + DeviceSearch copyWith( {String? code, String? assetSerialNumber, String? assetName, @@ -120,7 +120,7 @@ class AssetSearch { Lookup? assetGroup, String? oracleCodeValue, int? oracleCodeTypeId}) => - AssetSearch( + DeviceSearch( code: code ?? this.code, assetSerialNumber: assetSerialNumber ?? this.assetSerialNumber, assetName: assetName ?? this.assetName, diff --git a/lib/models/device/asset_transfer.dart b/lib/models/device/device_transfer.dart similarity index 99% rename from lib/models/device/asset_transfer.dart rename to lib/models/device/device_transfer.dart index 56918b2a..ce8ed217 100644 --- a/lib/models/device/asset_transfer.dart +++ b/lib/models/device/device_transfer.dart @@ -9,8 +9,8 @@ import 'package:test_sa/models/timer_model.dart'; import 'asset_transfer_attachment.dart'; -class AssetTransfer { - AssetTransfer({ +class DeviceTransfer { + DeviceTransfer({ this.id, this.transferNo, this.transferType, @@ -92,7 +92,7 @@ class AssetTransfer { this.statusValue, }); - AssetTransfer.fromJson(dynamic json) { + DeviceTransfer.fromJson(dynamic json) { id = json['id']; transferNo = json['transferNo']; transferCode = json['transferCode']; @@ -299,7 +299,7 @@ class AssetTransfer { AssetTransferAssistantEmployees? modelAssistantEmployees; TimerModel? tbsTimer = TimerModel(); - AssetTransfer copyWith( + DeviceTransfer copyWith( {num? id, num? transferNo, String? transferCode, @@ -370,7 +370,7 @@ class AssetTransfer { List? senderVisitTimers, List? receiverVisitTimers, TimerModel? tbsTimer}) => - AssetTransfer( + DeviceTransfer( id: id ?? this.id, transferNo: transferNo ?? this.transferNo, transferCode: transferCode ?? this.transferCode, @@ -613,7 +613,7 @@ class AssetTransfer { return map; } - fromDetails(AssetTransfer? assetTransfer) { + fromDetails(DeviceTransfer? assetTransfer) { if (assetTransfer == null) return; id = assetTransfer.id; transferNo = assetTransfer.transferNo; diff --git a/lib/models/new_models/dashboard_detail.dart b/lib/models/new_models/dashboard_detail.dart index d71932a5..6dd72924 100644 --- a/lib/models/new_models/dashboard_detail.dart +++ b/lib/models/new_models/dashboard_detail.dart @@ -1,6 +1,7 @@ class DashboardDetail { List? data; int? totalRows; + int? count; String? message; String? title; String? innerMessage; @@ -11,6 +12,7 @@ class DashboardDetail { DashboardDetail.fromJson(Map json) { totalRows = json['totalRows']; + count = json['count']; if (json['data'] != null) { data = []; json['data'].forEach((v) { diff --git a/lib/new_views/common_widgets/app_floating_action_button.dart b/lib/new_views/common_widgets/app_floating_action_button.dart index 53c6595a..73f6d38d 100644 --- a/lib/new_views/common_widgets/app_floating_action_button.dart +++ b/lib/new_views/common_widgets/app_floating_action_button.dart @@ -9,7 +9,7 @@ // import 'package:test_sa/models/enums/user_types.dart'; // import 'package:test_sa/models/user.dart'; // import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; -// import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart'; +// import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; // import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; // // todo @delete file // import '../app_style/app_color.dart'; diff --git a/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart b/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart index 806bc833..14b00184 100644 --- a/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart +++ b/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart @@ -5,7 +5,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart'; -import 'package:test_sa/views/pages/device_transfer/create__asset_transfer_request.dart'; +import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; import 'package:test_sa/views/pages/user/tasks_request/create_task_view.dart'; class CreateRequestTypeBottomSheet extends StatelessWidget { @@ -64,7 +64,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget { icon: 'add_icon', label: context.translation.deviceTransfer, onTap: () async { - Navigator.pushReplacementNamed(context, CreateAssetTransferRequest.id); + Navigator.pushReplacementNamed(context, CreateDeviceTransferRequest.id); }, ), listCard( diff --git a/lib/new_views/pages/land_page/requests/asset_item_view.dart b/lib/new_views/pages/land_page/requests/device_item_view.dart similarity index 94% rename from lib/new_views/pages/land_page/requests/asset_item_view.dart rename to lib/new_views/pages/land_page/requests/device_item_view.dart index d78238f6..f9c0fd98 100644 --- a/lib/new_views/pages/land_page/requests/asset_item_view.dart +++ b/lib/new_views/pages/land_page/requests/device_item_view.dart @@ -5,19 +5,19 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import '../../../../views/widgets/requests/request_status.dart'; import '../../../app_style/app_color.dart'; -class AssetItemView extends StatelessWidget { +class DeviceItemView extends StatelessWidget { final Data? requestData; final RequestsDetails? requestDetails; final bool showShadow; - const AssetItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key); + const DeviceItemView({Key? key, this.requestData, this.requestDetails, this.showShadow = true}) : super(key: key); @override Widget build(BuildContext context) { @@ -76,7 +76,7 @@ class AssetItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestData!.id!)))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestData!.id!)))); }); } @@ -111,11 +111,12 @@ class AssetItemView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ + '${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context), (requestDetails?.nameOfType ?? context.translation.deviceTransferRequest).heading5(context), "${context.translation.from} : ${requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), "${context.translation.to} : ${requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), requestDetails!.status!.replaceAll("=", ":").bodyText(context), - '${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context), + ], ), Row( @@ -135,7 +136,7 @@ class AssetItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: AssetTransfer(id: requestDetails!.id!)))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestDetails!.id!)))); }); } diff --git a/lib/new_views/pages/land_page/requests/request_paginated_listview.dart b/lib/new_views/pages/land_page/requests/request_paginated_listview.dart index 2a61d46a..6b757e25 100644 --- a/lib/new_views/pages/land_page/requests/request_paginated_listview.dart +++ b/lib/new_views/pages/land_page/requests/request_paginated_listview.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart'; @@ -61,7 +61,7 @@ class RequestPaginatedListview extends StatelessWidget { } else if (isPPMs) { return PpmItemView(requestData: request); } else if (isAssetTransfer) { - return AssetItemView(requestData: request); + return DeviceItemView(requestData: request); } else if (isRecurrentTask) { return RecurrentWoItemView(requestData: request); } else { diff --git a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart index 355f572e..0e4a6d88 100644 --- a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart +++ b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart @@ -4,7 +4,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; -import 'package:test_sa/new_views/pages/land_page/requests/asset_item_view.dart'; +import 'package:test_sa/new_views/pages/land_page/requests/device_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/gas_refill_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/ppm_item_view.dart'; import 'package:test_sa/new_views/pages/land_page/requests/recurrent_wo_item_view.dart'; @@ -33,7 +33,7 @@ class RequestItemViewList extends StatelessWidget { case 2: return GasRefillItemView(requestDetails: list[index]); case 3: - return AssetItemView(requestDetails: list[index]); + return DeviceItemView(requestDetails: list[index]); case 4: return PpmItemView(requestDetails: list[index]); case 5: diff --git a/lib/new_views/pages/new_gas_refill_request_page.dart b/lib/new_views/pages/new_gas_refill_request_page.dart index e1fb13cf..b6e00f74 100644 --- a/lib/new_views/pages/new_gas_refill_request_page.dart +++ b/lib/new_views/pages/new_gas_refill_request_page.dart @@ -5,10 +5,12 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/department.dart'; @@ -251,6 +253,10 @@ class _NewGasRefillRequestPageState extends State { context: context, model: _gasModel, ); + if(_gasRefillProvider?.stateCode==200){ + DashBoardProvider dashBoardProvider = Provider.of(context,listen: false); + dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse); + } } void _add() async { diff --git a/lib/providers/task_request_provider/task_request_provider.dart b/lib/providers/task_request_provider/task_request_provider.dart index bc5fe032..5ad0e2f6 100644 --- a/lib/providers/task_request_provider/task_request_provider.dart +++ b/lib/providers/task_request_provider/task_request_provider.dart @@ -63,6 +63,8 @@ class TaskRequestProvider extends ChangeNotifier { Navigator.pop(context); } catch (error) { print(error); + stateCode = -1; + notifyListeners(); Navigator.pop(context); } } diff --git a/lib/service_request_latest/service_request_detail_provider.dart b/lib/service_request_latest/service_request_detail_provider.dart index 2902002b..8e724ae8 100644 --- a/lib/service_request_latest/service_request_detail_provider.dart +++ b/lib/service_request_latest/service_request_detail_provider.dart @@ -923,8 +923,9 @@ class ServiceRequestDetailProvider extends ChangeNotifier { isLoading = true; notifyListeners(); try { - final response = await ApiManager.instance.postWithOutBody( + final response = await ApiManager.instance.post( URLs.sendOtpUrl + "$workOrderId", + body: {} ); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) {} @@ -943,7 +944,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier { isLoading = true; notifyListeners(); try { - final response = await ApiManager.instance.postWithOutBody(URLs.verifyOtpUrl + '$workOrderId&$otpCode'); + final response = await ApiManager.instance.post(URLs.verifyOtpUrl + '$workOrderId&$otpCode',body: {}); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) {} diff --git a/lib/service_request_latest/views/nurse/create_new_request_view.dart b/lib/service_request_latest/views/nurse/create_new_request_view.dart index 1015199d..f0761905 100644 --- a/lib/service_request_latest/views/nurse/create_new_request_view.dart +++ b/lib/service_request_latest/views/nurse/create_new_request_view.dart @@ -152,7 +152,7 @@ class _CreateNewRequestState extends State with TickerProvider label: context.translation.attachImage, files: _deviceImages, buttonColor: AppColor.black10, - onlyImages: true, + onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), ), ], diff --git a/lib/views/pages/device_transfer/create__asset_transfer_request.dart b/lib/views/pages/device_transfer/create__device_transfer_request.dart similarity index 94% rename from lib/views/pages/device_transfer/create__asset_transfer_request.dart rename to lib/views/pages/device_transfer/create__device_transfer_request.dart index 0ffd8dfe..b7d2efcb 100644 --- a/lib/views/pages/device_transfer/create__asset_transfer_request.dart +++ b/lib/views/pages/device_transfer/create__device_transfer_request.dart @@ -3,13 +3,15 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; +import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/asset_transfer_attachment.dart'; +import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart'; @@ -29,19 +31,19 @@ import '../../../new_views/common_widgets/single_item_drop_down_menu.dart'; import '../../../providers/gas_request_providers/site_provider.dart'; import '../../../providers/loading_list_notifier.dart'; -class CreateAssetTransferRequest extends StatefulWidget { +class CreateDeviceTransferRequest extends StatefulWidget { static const String id = "/request-device-transfer"; - const CreateAssetTransferRequest({Key? key}) : super(key: key); + const CreateDeviceTransferRequest({Key? key}) : super(key: key); @override - State createState() => _CreateAssetTransferRequestState(); + State createState() => _CreateDeviceTransferRequestState(); } -class _CreateAssetTransferRequestState extends State { +class _CreateDeviceTransferRequestState extends State { late AssetTransferProvider _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); - final AssetTransfer _transferModel = AssetTransfer(id: 0); + final DeviceTransfer _transferModel = DeviceTransfer(id: 0); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); final TextEditingController _receiverNameController = TextEditingController(), _commentsController = TextEditingController(); @@ -79,11 +81,14 @@ class _CreateAssetTransferRequestState extends State } _transferModel.attachments = attachement; - await _deviceTransferProvider.createRequest( context: context, model: _transferModel, ); + if(_deviceTransferProvider.stateCode==200){ + DashBoardProvider dashBoardProvider = Provider.of(context,listen: false); + dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse); + } } @override @@ -246,7 +251,7 @@ class _CreateAssetTransferRequestState extends State label: context.translation.attachImage, files: _deviceImages, buttonColor: AppColor.black10, - onlyImages: true, + onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), ), // 100.height, diff --git a/lib/views/pages/device_transfer/asset_filter_screen.dart b/lib/views/pages/device_transfer/device_filter_screen.dart similarity index 94% rename from lib/views/pages/device_transfer/asset_filter_screen.dart rename to lib/views/pages/device_transfer/device_filter_screen.dart index 392189c4..68c067af 100644 --- a/lib/views/pages/device_transfer/asset_filter_screen.dart +++ b/lib/views/pages/device_transfer/device_filter_screen.dart @@ -19,18 +19,18 @@ import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/default_app_bar.dart'; import '../../widgets/equipment/commissioning_status_buttons.dart'; -class AssetFilterScreen extends StatefulWidget { +class DeviceFilterScreen extends StatefulWidget { static const String id = "asset_filter_screen"; - final AssetSearch? data; + final DeviceSearch? data; - const AssetFilterScreen({Key? key, this.data}) : super(key: key); + const DeviceFilterScreen({Key? key, this.data}) : super(key: key); @override - State createState() => _AssetFilterScreenState(); + State createState() => _DeviceFilterScreenState(); } -class _AssetFilterScreenState extends State { - late AssetSearch filter; +class _DeviceFilterScreenState extends State { + late DeviceSearch filter; Lookup? _commissioningStatus; Site? _site; Lookup? _department; @@ -39,7 +39,7 @@ class _AssetFilterScreenState extends State { @override void initState() { - filter = widget.data ?? AssetSearch(); + filter = widget.data ?? DeviceSearch(); WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { loading = true; setState(() {}); diff --git a/lib/views/pages/device_transfer/asset_search_screen.dart b/lib/views/pages/device_transfer/device_search_screen.dart similarity index 96% rename from lib/views/pages/device_transfer/asset_search_screen.dart rename to lib/views/pages/device_transfer/device_search_screen.dart index 117af7d7..56768834 100644 --- a/lib/views/pages/device_transfer/asset_search_screen.dart +++ b/lib/views/pages/device_transfer/device_search_screen.dart @@ -12,24 +12,24 @@ import '../../../models/device/asset_search.dart'; import '../../../new_views/common_widgets/app_lazy_loading.dart'; import '../../../new_views/common_widgets/default_app_bar.dart'; -class AssetSearchScreen extends StatefulWidget { +class DeviceSearchScreen extends StatefulWidget { static const String id = "asset_search_screen"; - final AssetSearch? data; + final DeviceSearch? data; - const AssetSearchScreen({Key? key, this.data}) : super(key: key); + const DeviceSearchScreen({Key? key, this.data}) : super(key: key); @override - State createState() => _AssetSearchScreenState(); + State createState() => _DeviceSearchScreenState(); } -class _AssetSearchScreenState extends State { - late AssetSearch search; +class _DeviceSearchScreenState extends State { + late DeviceSearch search; final GlobalKey _formKey = GlobalKey(); late TextEditingController _assetNameController, _assetNumberController, _snController, _modelController, _supplierController, _siteController, _manufactureController, _mdController; @override void initState() { - search = widget.data ?? AssetSearch(); + search = widget.data ?? DeviceSearch(); _assetNameController = TextEditingController(text: search.assetName); _assetNumberController = TextEditingController(text: search.assetNo); _snController = TextEditingController(text: search.assetSerialNumber); diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 4e72a38f..19e5ac74 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -8,7 +8,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; @@ -21,7 +21,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart'; import '../../widgets/requests/request_status.dart'; class DeviceTransferDetails extends StatefulWidget { - final AssetTransfer model; + final DeviceTransfer model; const DeviceTransferDetails({Key? key, required this.model}) : super(key: key); @@ -31,7 +31,7 @@ class DeviceTransferDetails extends StatefulWidget { class _DeviceTransferDetailsState extends State { UserProvider? _userProvider; - AssetTransfer? _model; + DeviceTransfer? _model; final bool _isLoading = false; final GlobalKey _formKey = GlobalKey(); List _attachments = []; @@ -56,7 +56,7 @@ class _DeviceTransferDetailsState extends State { if (snapshot.connectionState == ConnectionState.waiting) { return const ALoading(); } else { - _model = snapshot.data as AssetTransfer?; + _model = snapshot.data as DeviceTransfer?; _attachments = _model?.assetTransferAttachments?.map((e) => File(e.attachmentName ?? '')).toList() ?? []; return Form( key: _formKey, @@ -65,89 +65,91 @@ class _DeviceTransferDetailsState extends State { isFailedLoading: false, stateCode: 200, onRefresh: () async {}, - child: Column( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - context.translation.transferDetails.heading5(context), - 8.height, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'), - _buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'), - _buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'), - _buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'), - _buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'), - if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'), - _buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'), - infoText(label: context.translation.employeeId, value: _model?.employeeId), - infoText(label: context.translation.name, value: _model?.name), - infoText(label: context.translation.createdDate, value: _model?.createdDate?.toInitialVisitCardFormat), - if ((_model?.comment ?? "").isNotEmpty) ...[ - 8.height, - const Divider().defaultStyle(context), - 8.height, - _buildTextWidget(_model!.comment!), + child: SingleChildScrollView( + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + context.translation.transferDetails.heading5(context), + 8.height, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'), + _buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'), + _buildTextWidget('${context.translation.assetName} : ${_model?.assetName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'), + _buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'), + _buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'), + _buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'), + if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'), + infoText(label: context.translation.employeeId, value: _model?.employeeId), + infoText(label: context.translation.name, value: _model?.name), + infoText(label: context.translation.createdDate, value: _model?.createdDate?.toInitialVisitCardFormat), + if ((_model?.comment ?? "").isNotEmpty) ...[ + 8.height, + const Divider().defaultStyle(context), + 8.height, + _buildTextWidget(_model!.comment!), + ], + if (_attachments.isNotEmpty) ...[ + attachmentWidget(), + ] ], - if (_attachments.isNotEmpty) ...[ - attachmentWidget(), - ] - ], - ), - 8.height, - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - 1.width, - Text( - _model?.createdOn != null ? _model!.createdOn!.toServiceRequestCardFormat : "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - ], - ), - ], - ).toShadowContainer(context), - 8.height, - // sender card - _buildCard( - isSender: true, - site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - comment: _model?.senderComment ?? "", - statusLabel: _model?.senderMachineStatusName != null - ? StatusLabel( - label: _model!.senderMachineStatusName!, - id: _model!.senderMachineStatusId!.toInt(), - textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), - ) - : null, - ), - 8.height, - // receiver card - _buildCard( - isSender: false, - site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - comment: _model?.receiverComment ?? "", - statusLabel: _model?.receiverMachineStatusName != null - ? StatusLabel( - label: _model!.receiverMachineStatusName ?? "", - id: _model!.receiverMachineStatusId!.toInt(), - textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!)) - : null, - ), - ], - ).paddingAll(16), + ), + 8.height, + ], + ).expanded, + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + 1.width, + Text( + _model?.createdOn != null ? _model!.createdOn!.toServiceRequestCardFormat : "", + textAlign: TextAlign.end, + style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), + ), + ], + ), + ], + ).toShadowContainer(context), + 8.height, + // sender card + _buildCard( + isSender: true, + site: _model?.senderSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + unit: _model?.senderDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + comment: _model?.senderComment ?? "", + statusLabel: _model?.senderMachineStatusName != null + ? StatusLabel( + label: _model!.senderMachineStatusName!, + id: _model!.senderMachineStatusId!.toInt(), + textColor: AppColor.getRequestStatusTextColorByName(context, _model!.senderMachineStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.senderMachineStatusName!), + ) + : null, + ), + 8.height, + // receiver card + _buildCard( + isSender: false, + site: _model?.destSiteName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + unit: _model?.destDepartmentName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", + comment: _model?.receiverComment ?? "", + statusLabel: _model?.receiverMachineStatusName != null + ? StatusLabel( + label: _model!.receiverMachineStatusName ?? "", + id: _model!.receiverMachineStatusId!.toInt(), + textColor: AppColor.getRequestStatusTextColorByName(context, _model!.receiverMachineStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, _model!.receiverMachineStatusName!)) + : null, + ), + ], + ).paddingAll(16), + ), ), ); } diff --git a/lib/views/pages/device_transfer/search_asset_page.dart b/lib/views/pages/device_transfer/search_device_page.dart similarity index 96% rename from lib/views/pages/device_transfer/search_asset_page.dart rename to lib/views/pages/device_transfer/search_device_page.dart index 7b46abb9..93c87714 100644 --- a/lib/views/pages/device_transfer/search_asset_page.dart +++ b/lib/views/pages/device_transfer/search_device_page.dart @@ -18,20 +18,20 @@ import '../../widgets/horizontal_list_widget.dart'; import '../../widgets/loaders/lazy_loading.dart'; import '../../widgets/loaders/no_data_found.dart'; -class SearchAssetPage extends StatefulWidget { +class SearchDevicePage extends StatefulWidget { /// add on route static const String id = "asset_search_page"; final bool multiSelection; - const SearchAssetPage({Key? key, this.multiSelection = false}) : super(key: key); + const SearchDevicePage({Key? key, this.multiSelection = false}) : super(key: key); @override - State createState() => _SearchAssetPageState(); + State createState() => _SearchDevicePageState(); } -class _SearchAssetPageState extends State { +class _SearchDevicePageState extends State { int _selectedIndex = 0; - AssetSearch? search; + DeviceSearch? search; late TextEditingController _searchController; late AssetProvider _deviceProvider; final List _searchableList = []; @@ -111,7 +111,7 @@ class _SearchAssetPageState extends State { }, onSaved: (value) { setState(() { - search = AssetSearch(); + search = DeviceSearch(); }); _setValue(value); }, diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 7721a406..8158aee5 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -13,7 +13,7 @@ // import 'package:test_sa/extensions/int_extensions.dart'; // import 'package:test_sa/extensions/string_extensions.dart'; // import 'package:test_sa/extensions/widget_extensions.dart'; -// import 'package:test_sa/models/device/asset_transfer.dart'; +// import 'package:test_sa/models/device/device_transfer.dart'; // import 'package:test_sa/models/device/asset_transfer_attachment.dart'; // import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; // import 'package:test_sa/providers/asset_transfer/asset_transfer_status_provider.dart'; @@ -342,7 +342,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/asset_transfer_attachment.dart'; import 'package:test_sa/models/new_models/assigned_employee.dart'; import 'package:test_sa/models/new_models/assistant_employee.dart'; @@ -364,7 +364,7 @@ import '../../../new_views/common_widgets/default_app_bar.dart'; import '../../widgets/timer/app_timer.dart'; class UpdateDeviceTransfer extends StatefulWidget { - final AssetTransfer model; + final DeviceTransfer model; final bool isSender; const UpdateDeviceTransfer({Key? key, required this.model, required this.isSender}) : super(key: key); @@ -378,7 +378,7 @@ class _UpdateDeviceTransferState extends State { late AssetTransferProvider _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); - final AssetTransfer _formModel = AssetTransfer(); + final DeviceTransfer _formModel = DeviceTransfer(); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -608,7 +608,7 @@ class _UpdateDeviceTransferState extends State { class AssistantEmployeeCard extends StatefulWidget { bool? isSender = false; - AssetTransfer? formModel; + DeviceTransfer? formModel; AssistantEmployeeCard({super.key, this.isSender, this.formModel}); diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index fd4b49c2..bd894483 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -38,9 +38,7 @@ class _GasRefillDetailsPageState extends State { GasRefillModel _model = GasRefillModel(gasRefillDetails: []); late UserProvider _userProvider; late GasRefillProvider gasRefillProvider; - final bool _isLoading = false; - final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); List _attachments = []; @@ -76,7 +74,7 @@ class _GasRefillDetailsPageState extends State { padding: const EdgeInsets.all(16), child: informationCard(_model), ).expanded, - if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2))//TODO need to ask backend for status of complete and cancelled request. + if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2)) AppFilledButton( onPressed: () async { await Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillForm(gasRefillModel: _model))); @@ -122,31 +120,53 @@ class _GasRefillDetailsPageState extends State { ], ), 8.height, - context.translation.gasRefillRequest.heading5(context), - 8.height, - - '${context.translation.gasType}: ${gasRefillModel.gasRefillDetails![0].gasType?.name}'.bodyText(context), - '${context.translation.cylinderType}: ${gasRefillModel.gasRefillDetails![0].cylinderType?.name}'.bodyText(context), - '${context.translation.cylinderSize}: ${gasRefillModel.gasRefillDetails![0].cylinderSize?.name}'.bodyText(context), - '${context.translation.site}: ${gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), - '${context.translation.department}: ${gasRefillModel.department?.name?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), - '${context.translation.requestNo}: ${gasRefillModel.gasRefillNo}'.bodyText(context), + // context.translation.gasRefillRequest.heading5(context), + Text( + "Request Details".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), + infoText(label: context.translation.requestNo, value:gasRefillModel.gasRefillNo), + infoText(label: context.translation.gasType, value:gasRefillModel.gasRefillDetails?[0].gasType?.name), + infoText(label: context.translation.cylinderType, value:gasRefillModel.gasRefillDetails?[0].cylinderType?.name), + infoText(label: context.translation.cylinderSize, value:gasRefillModel.gasRefillDetails?[0].cylinderSize?.name), + infoText(label: context.translation.site, value:gasRefillModel.site?.name?.cleanupWhitespace.capitalizeFirstOfEach), + infoText(label: context.translation.building, value:gasRefillModel.building?.name), + infoText(label: context.translation.floor, value:gasRefillModel.floor?.name), + infoText(label: context.translation.department, value:gasRefillModel.department?.name), + infoText(label: context.translation.requestedQuantity, value:gasRefillModel.gasRefillDetails?[0].requestedQty.toString()), + infoText(label: context.translation.deliveredQuantity, value:gasRefillModel.gasRefillDetails![0].deliverdQty.toString()), + const Divider().defaultStyle(context), + Text( + "Created By".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), infoText(label: context.translation.employeeId, value: gasRefillModel.employeeId), infoText(label: context.translation.name, value: gasRefillModel.name), - infoText(label: context.translation.createdDate, value: gasRefillModel.createdDate?.toInitialVisitCardFormat), - - const Divider().defaultStyle(context), - '${context.translation.requestedQuantity}: ${gasRefillModel.gasRefillDetails![0].requestedQty ?? 0}'.bodyText(context), - '${context.translation.deliveredQuantity}: ${gasRefillModel.gasRefillDetails![0].deliverdQty ?? 0}'.bodyText(context), 8.height, if (gasRefillModel.comment?.isNotEmpty ?? false) ...[ const Divider().defaultStyle(context), + Text( + "Comments".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), gasRefillModel.comment!.bodyText(context), 8.height, ], + if (gasRefillModel.techComment?.isNotEmpty ?? false) ...[ + const Divider().defaultStyle(context), + Text( + "Technical Comments".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), + gasRefillModel.techComment!.bodyText(context), + 8.height, + ], if (_attachments.isNotEmpty) ...[ const Divider().defaultStyle(context), - context.translation.attachments.bodyText(context), + Text( + "Attachments".addTranslation, + style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + ), 8.height, MultiFilesPicker( label: context.translation.attachments, @@ -168,67 +188,7 @@ class _GasRefillDetailsPageState extends State { ).paddingOnly(top: 16, start: 16, end: 16), - /// TBD - // (_userProvider.user!.type == UsersTypes.normal_user - // ? Container( - // height: 50, - // padding: const EdgeInsets.only(left: 16, right: 16), - // alignment: Alignment.center, - // width: double.infinity, - // decoration: ShapeDecoration( - // color: context.isDark ? AppColor.neutral50 : AppColor.neutral30, - // shape: const RoundedRectangleBorder( - // borderRadius: BorderRadius.only( - // bottomLeft: Radius.circular(14), - // bottomRight: Radius.circular(14), - // ), - // ), - // ), - // child: Row( - // children: [ - // Text( - // '${context.translation.commentHere}...', - // style: AppTextStyles.heading6.copyWith( - // color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6), - // ), - // ).expanded, - // "comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70), - // ], - // ), - // ) - // : Column( - // mainAxisSize: MainAxisSize.min, - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // const Divider().defaultStyle(context), - // 8.height, - // Row( - // mainAxisSize: MainAxisSize.min, - // children: [ - // Text( - // context.translation.viewComments, - // style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - // ), - // 4.width, - // Icon( - // Icons.arrow_forward, - // color: AppColor.blueStatus(context), - // size: 14, - // ) - // ], - // ), - // ], - // ).paddingOnly(bottom: 16, start: 16, end: 16)) - // .onPress(() { - // showModalBottomSheet( - // context: context, - // useSafeArea: true, - // isScrollControlled: true, - // useRootNavigator: true, - // backgroundColor: Colors.transparent, - // builder: (context) => GasRefillCommentsBottomSheet(requestId: gasRefillModel.id.toString()), - // ); - // }), + ], ).toShadowContainer(context, padding: 0); } @@ -237,7 +197,7 @@ class _GasRefillDetailsPageState extends State { String? label, String? value, }) { - if (value == null || value.isEmpty) { + if (value == null || value.isEmpty||value.toLowerCase()=='null') { return const SizedBox(); } else { return '$label: $value'.bodyText(context); diff --git a/lib/views/pages/user/land_page.dart b/lib/views/pages/user/land_page.dart index da3c34ce..a425bfec 100644 --- a/lib/views/pages/user/land_page.dart +++ b/lib/views/pages/user/land_page.dart @@ -19,7 +19,7 @@ // // import '../../../models/enums/user_types.dart'; // import '../../widgets/land_page/land_page_item.dart'; -// import '../device_transfer/create__asset_transfer_request.dart'; +// import '../device_transfer/create__device_transfer_request.dart'; // import 'requests/requests_page.dart'; // // @Deprecated("Use the page which is inside the [new_views/pages/land_page] folder") diff --git a/lib/views/pages/user/tasks_request/create_task_view.dart b/lib/views/pages/user/tasks_request/create_task_view.dart index 3afa0227..29723bfc 100644 --- a/lib/views/pages/user/tasks_request/create_task_view.dart +++ b/lib/views/pages/user/tasks_request/create_task_view.dart @@ -3,11 +3,13 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; +import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/floor.dart'; @@ -109,7 +111,7 @@ class _CreateTaskViewState extends State with TickerProviderStat label: context.translation.attachImage, files: _deviceImages, buttonColor: AppColor.black10, - onlyImages: true, + onlyImages: false, buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), ), ], @@ -443,7 +445,11 @@ class _CreateTaskViewState extends State with TickerProviderStat _addTaskModel?.attachments?.add(TaskJobAttachment(id: 0, name: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}")); } TaskRequestProvider taskRequestProvider = Provider.of(context, listen: false); - taskRequestProvider.addTask(context: context, task: _addTaskModel!); + await taskRequestProvider.addTask(context: context, task: _addTaskModel!); + if (taskRequestProvider.stateCode == 200) { + DashBoardProvider dashBoardProvider = Provider.of(context, listen: false); + dashBoardProvider.refreshDashboard(context: context, userType: UsersTypes.nurse); + } } } } diff --git a/lib/views/pages/user/tasks_request/task_request_item_view.dart b/lib/views/pages/user/tasks_request/task_request_item_view.dart index 35cfe864..6fa8c38f 100644 --- a/lib/views/pages/user/tasks_request/task_request_item_view.dart +++ b/lib/views/pages/user/tasks_request/task_request_item_view.dart @@ -5,7 +5,7 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart'; diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index 38dd7a44..27e4700b 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -3,15 +3,15 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import '../../../extensions/text_extensions.dart'; class DeviceTransferItem extends StatelessWidget { final int index; - final AssetTransfer item; - final Function(AssetTransfer) onPressed; + final DeviceTransfer item; + final Function(DeviceTransfer) onPressed; const DeviceTransferItem({Key? key,required this.item,required this.onPressed,required this.index}) : super(key: key); diff --git a/lib/views/widgets/device_trancfer/device_transfer_list.dart b/lib/views/widgets/device_trancfer/device_transfer_list.dart index 8f6d061f..d6f08899 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:test_sa/extensions/context_extension.dart'; -import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_item.dart'; import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class DeviceTransferList extends StatelessWidget { - final List items; + final List items; final bool nextPage; final Future Function() onLazyLoad; diff --git a/lib/views/widgets/equipment/single_device_picker.dart b/lib/views/widgets/equipment/single_device_picker.dart index 3abe8522..ee519455 100644 --- a/lib/views/widgets/equipment/single_device_picker.dart +++ b/lib/views/widgets/equipment/single_device_picker.dart @@ -7,7 +7,7 @@ import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/views/pages/device_transfer/asset_search_screen.dart'; +import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart'; import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart'; import 'package:test_sa/views/widgets/equipment/asset_item_gridview.dart'; import 'package:test_sa/views/widgets/equipment/asset_item_listview.dart'; @@ -19,7 +19,7 @@ import 'package:test_sa/views/widgets/qr/scan_qr.dart'; import '../../../models/device/asset.dart'; import '../../../models/device/asset_search.dart'; import '../../../new_views/app_style/app_color.dart'; -import '../../pages/device_transfer/asset_filter_screen.dart'; +import '../../pages/device_transfer/device_filter_screen.dart'; class MyAssetsPage extends StatefulWidget { static const String id = "/single-device-Picker"; @@ -38,7 +38,7 @@ class _MyAssetsPageState extends State { final List _searchableList = []; final List _initList = []; final bool _firstTime = true; - AssetSearch? _searchAsset; + DeviceSearch? _searchAsset; bool showListView = true; @@ -48,7 +48,7 @@ class _MyAssetsPageState extends State { _getDevice(String result, {bool isQr = false}) async { _devicesProvider.reset(); await _devicesProvider.getAssets( - search: AssetSearch(assetNo: result, assetSerialNumber: ""), + search: DeviceSearch(assetNo: result, assetSerialNumber: ""), isQr: isQr, ); _searchableList.clear(); @@ -113,7 +113,7 @@ class _MyAssetsPageState extends State { ], ), ).onPress(() async { - final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => const AssetSearchScreen())); + final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => const DeviceSearchScreen())); if (result != null) { _searchAsset = result; } @@ -132,7 +132,7 @@ class _MyAssetsPageState extends State { context.translation.filter, style: AppTextStyles.bodyText2.copyWith(color: AppColor.blueStatus(context)), ).onPress(() async { - final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => AssetFilterScreen(data: _searchAsset))); + final result = await Navigator.push(context, MaterialPageRoute(builder: (context) => DeviceFilterScreen(data: _searchAsset))); if (result != null) { _searchAsset = result; } diff --git a/lib/views/widgets/qr/asset_scan_qr.dart b/lib/views/widgets/qr/asset_scan_qr.dart index 889932ab..d3367615 100644 --- a/lib/views/widgets/qr/asset_scan_qr.dart +++ b/lib/views/widgets/qr/asset_scan_qr.dart @@ -12,7 +12,7 @@ import '../../../controllers/providers/api/devices_provider.dart'; import '../../../models/device/asset_search.dart'; import '../../../new_views/common_widgets/app_filled_button.dart'; import '../../../new_views/common_widgets/custom_app_bar.dart'; -import '../../pages/device_transfer/search_asset_page.dart'; +import '../../pages/device_transfer/search_device_page.dart'; class AssetScanQr extends StatefulWidget { static const String id = "/asset-scan-qr"; @@ -53,13 +53,13 @@ class _AssetScanQrState extends State { _pickManually() async { _controller?.pauseCamera(); - await Navigator.push(context, MaterialPageRoute(builder: (context) => SearchAssetPage(multiSelection: widget.multiSelection))).then((value) => _controller?.resumeCamera()); + await Navigator.push(context, MaterialPageRoute(builder: (context) => SearchDevicePage(multiSelection: widget.multiSelection))).then((value) => _controller?.resumeCamera()); } _getDevice(String result, {bool isQr = false}) async { _devicesProvider.reset(); await _devicesProvider.getAssets( - search: AssetSearch(assetNo: result, assetSerialNumber: ""), + search: DeviceSearch(assetNo: result, assetSerialNumber: ""), isQr: isQr, ); return _devicesProvider.devices;