diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 69ce1d3b..c6a249ed 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -4,7 +4,7 @@ class URLs { static const String appReleaseBuildNumber = "40"; // static const host1 = "https://atomsm.hmg.com"; // production url - static const host1 = "https://atomsmdev.hmg.com"; // local DEV urld + static const host1 = "https://atomsmdev.hmg.com"; // local DEV url // static const host1 = "https://atomsmuat.hmg.com"; // local UAT url static final String _baseUrl = "$_host/mobile"; // host local UAT diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index de05fc92..24f62800 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -180,7 +180,7 @@ class AllRequestsProvider extends ChangeNotifier { return list; } - Future getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search}) async { + Future getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search, bool? isAscending}) async { if (isAllLoading == true) return -2; isAllLoading = true; if (_allRequestsAndCount == null) notifyListeners(); @@ -212,6 +212,7 @@ class AllRequestsProvider extends ChangeNotifier { if (search?.manufacture?.value?.isNotEmpty ?? false) "manufacturer": search!.manufacture!.value, if (search?.startDate != null) "from": search!.startDate!.toIso8601String(), if (search?.endDate != null) "to": search!.endDate!.toIso8601String(), + if (isAscending != null) "isAscending": isAscending, }; response = await ApiManager.instance.post(URLs.getAllRequestsAndCount, body: body); diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index 03ca5104..ce78b46f 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -270,7 +270,7 @@ class DashBoardProvider extends ChangeNotifier { } } - Future getRequestDetail({bool showLoader = true, required UsersTypes usersType, int? status, bool isHighPriority = false, bool isOverdue = false, String? date, int? tabId}) async { + Future getRequestDetail({bool showLoader = true, required UsersTypes usersType, int? status, bool isHighPriority = false, bool isOverdue = false, String? date, int? tabId, bool? isAscending}) async { if (showLoader) { isDetailLoading = showLoader; notifyListeners(); @@ -309,6 +309,7 @@ class DashBoardProvider extends ChangeNotifier { } if (isHighPriority) body["isHighPriority"] = true; if (isOverdue) body["isOverdue"] = true; + if (isAscending != null) body["isAscending"] = isAscending; response = await ApiManager.instance.post(url, body: body); stateCode = response.statusCode; diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index 322c4a41..9207a172 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -16,9 +16,35 @@ import 'package:test_sa/new_views/common_widgets/tab_button.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; -class RequestCategoryFragment extends StatelessWidget { +class RequestCategoryFragment extends StatefulWidget { const RequestCategoryFragment({Key? key}) : super(key: key); + @override + State createState() => _RequestCategoryFragmentState(); +} + +class _RequestCategoryFragmentState extends State { + bool isAscending = false; + + void _toggleSort(DashBoardProvider dashboardProvider, UsersTypes? userType) { + setState(() { + isAscending = !isAscending; + }); + + // Get current tab info + List tabs = CategoryTabs.getTabs(userType: userType ?? UsersTypes.normal_user, context: context); + + // Reload data with new sort order + dashboardProvider.resetRequestDataList(); + dashboardProvider.getRequestDetail( + usersType: userType ?? UsersTypes.normal_user, + showLoader: true, + status: tabs[dashboardProvider.currentListIndex].tag, + tabId: tabs[dashboardProvider.currentListIndex].id, + isAscending: isAscending, + ); + } + @override Widget build(BuildContext context) { return Consumer(builder: (context, dashboardProvider, child) { @@ -64,9 +90,9 @@ class RequestCategoryFragment extends StatelessWidget { Navigator.of(context).pushNamed('/cleaner_search'); }), Transform.flip( - flipY: false, + flipY: isAscending, child: 'dashboard/sort_descending'.toSvgAsset(width: 24, height: 24, color: AppColor.headingTextColor(context)).onPress(() { - Navigator.of(context).pushNamed('/cleaner_search'); + _toggleSort(dashboardProvider, user?.type); }), ) ], @@ -120,6 +146,9 @@ class RequestCategoryFragment extends StatelessWidget { isSelected: requestsProvider.currentListIndex == index, count: requestsProvider.requestDetailList != null ? requestsProvider.requestDetailList!.count ?? 0 : 0, onPressed: () async { + setState(() { + isAscending=false; + }); requestsProvider.currentListIndex = index; requestsProvider.resetRequestDataList(); requestsProvider.getRequestDetail(usersType: userType ?? UsersTypes.normal_user, showLoader: true, status: tabs[index].tag, tabId: tabs[index].id); diff --git a/lib/models/search_all_requests_model.dart b/lib/models/search_all_requests_model.dart index 085bef0a..f6d7b585 100644 --- a/lib/models/search_all_requests_model.dart +++ b/lib/models/search_all_requests_model.dart @@ -13,6 +13,7 @@ class SearchAllRequestsModel { List? typeTransaction; // Now nullable DateTime? startDate, endDate; // Now nullable bool isArchived = false; + String? selectedSortOption; SearchAllRequestsModel({ this.requestNumber, @@ -26,6 +27,7 @@ class SearchAllRequestsModel { this.startDate, this.endDate, this.isArchived = false, + this.selectedSortOption, }); //older function diff --git a/lib/modules/asset_delivery_module/pages/asset_delivery_item_view.dart b/lib/modules/asset_delivery_module/pages/asset_delivery_item_view.dart index ff02233c..1fe8dc2b 100644 --- a/lib/modules/asset_delivery_module/pages/asset_delivery_item_view.dart +++ b/lib/modules/asset_delivery_module/pages/asset_delivery_item_view.dart @@ -2,14 +2,16 @@ import 'package:flutter/material.dart'; 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/text_extensions.dart'; +import 'package:test_sa/extensions/string_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/new_models/dashboard_detail.dart'; -import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_page.dart'; import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_page.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; class AssetDeliveryItemView extends StatelessWidget { final Data? requestData; @@ -24,23 +26,10 @@ class AssetDeliveryItemView extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - 8.height, - (requestData?.typeTransaction ?? 'Asset Delivery').heading5(context), - infoWidget(label: 'PO Internal'.addTranslation, value: requestData?.poInternal ?? '-', context: context), - infoWidget(label: 'PO External'.addTranslation, value: requestData?.poExternal ?? '-', context: context), + InfoHeaderWidget(requestData?.typeTransaction ?? 'Asset Delivery'), + InfoTextWidget(label: 'PO Internal'.addTranslation, value: requestData?.poInternal ?? '-'), + InfoTextWidget(label: 'PO External'.addTranslation, value: requestData?.poExternal ?? '-', showArrow: true), // infoWidget(label: 'No of Sites'.addTranslation, value: requestData?.numberOfSites != null ? requestData?.numberOfSites.toString() : '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -53,23 +42,11 @@ class AssetDeliveryItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ - 8.height, - (requestDetails?.nameOfType ?? 'Asset Delivery').heading5(context), - infoWidget(label: 'PO Internal'.addTranslation, value: requestDetails?.poInternal ?? '-', context: context), - infoWidget(label: 'PO External'.addTranslation, value: requestDetails?.poExternal ?? '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), + InfoHeaderWidget(requestDetails?.nameOfType ?? 'Asset Delivery'), + InfoTextWidget(label: 'PO Internal'.addTranslation, value: requestDetails?.poInternal ?? '-'), + InfoTextWidget(label: 'PO External'.addTranslation, value: requestDetails?.poExternal ?? '-', showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -80,11 +57,4 @@ class AssetDeliveryItemView extends StatelessWidget { ))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/asset_inventory_module/pages/inventory_session_item_view.dart b/lib/modules/asset_inventory_module/pages/inventory_session_item_view.dart index 2ad678fe..c0db099e 100644 --- a/lib/modules/asset_inventory_module/pages/inventory_session_item_view.dart +++ b/lib/modules/asset_inventory_module/pages/inventory_session_item_view.dart @@ -2,12 +2,14 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class InventorySessionItemView extends StatelessWidget { @@ -32,30 +34,13 @@ class InventorySessionItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? context.translation.taskRequest).heading5(context), - infoWidget(label: 'Session Type'.addTranslation, value: requestData?.sessionType, context: context), - infoWidget(label: 'No of Assets'.addTranslation, value: requestData?.numberOfAssets != null ? requestData?.numberOfAssets.toString() : '-', context: context), - infoWidget(label: 'No of Sites'.addTranslation, value: requestData?.numberOfSites != null ? requestData?.numberOfSites.toString() : '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.taskRequest), + InfoTextWidget(label: 'Session Type'.addTranslation, value: requestData?.sessionType), + InfoTextWidget(label: 'No of Assets'.addTranslation, value: requestData?.numberOfAssets != null ? requestData?.numberOfAssets.toString() : '-'), + InfoTextWidget(label: 'No of Sites'.addTranslation, value: requestData?.numberOfSites != null ? requestData?.numberOfSites.toString() : '-', showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute(builder: (_) => AssetInventoryPage(sessionId: requestData!.id!, moduleId: requestData!.transactionNo!))); @@ -63,6 +48,7 @@ class InventorySessionItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -73,40 +59,16 @@ class InventorySessionItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? context.translation.taskRequest).heading5(context), - infoWidget(label: 'Session Type'.addTranslation, value: requestDetails?.sessionType, context: context), - infoWidget(label: 'No of Assets'.addTranslation, value: requestDetails?.numberOfAssets != null ? requestDetails?.numberOfAssets.toString() : '-', context: context), - infoWidget(label: 'No of Sites'.addTranslation, value: requestDetails?.numberOfSites != null ? requestDetails?.numberOfSites.toString() : '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.taskRequest), + InfoTextWidget(label: 'Session Type'.addTranslation, value: requestDetails?.sessionType), + InfoTextWidget(label: 'No of Assets'.addTranslation, value: requestDetails?.numberOfAssets != null ? requestDetails?.numberOfAssets.toString() : '-'), + InfoTextWidget(label: 'No of Sites'.addTranslation, value: requestDetails?.numberOfSites != null ? requestDetails?.numberOfSites.toString() : '-', showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute(builder: (_) => AssetInventoryPage(sessionId: requestDetails!.id!, moduleId: requestDetails!.transactionType!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/demo_module/demo_request_item_view.dart b/lib/modules/demo_module/demo_request_item_view.dart index 120722ad..6abc6d58 100644 --- a/lib/modules/demo_module/demo_request_item_view.dart +++ b/lib/modules/demo_module/demo_request_item_view.dart @@ -1,15 +1,14 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; -import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_page.dart'; -import 'package:test_sa/modules/asset_inventory_module/pages/asset_inventory_page.dart'; import 'package:test_sa/modules/demo_module/demo_detail_view_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class DemoRequestItemView extends StatelessWidget { @@ -34,30 +33,14 @@ class DemoRequestItemView extends StatelessWidget { backgroundColor: AppColor.demoRequestStatus(context, requestData?.statusValue ?? 0), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), // 8.height, - (requestData?.typeTransaction ?? 'Demo Request').heading5(context), - infoWidget(label: 'Request No'.addTranslation, value: requestData?.requestNo ?? '-', context: context), - infoWidget(label: context.translation.requestType, value: requestData?.requestTypeName, context: context), + InfoHeaderWidget(requestData?.typeTransaction ?? 'Demo Request'), + InfoTextWidget(label: context.translation.requestNo, value: requestData?.requestNo ?? '-'), + InfoTextWidget(label: context.translation.requestType, value: requestData?.requestTypeName, showArrow: true), // infoWidget(label: 'No of Sites'.addTranslation, value: requestData?.numberOfSites != null ? requestData?.numberOfSites.toString() : '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestData!.id!, moduleId: requestData!.transactionNo!))); @@ -65,6 +48,7 @@ class DemoRequestItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -75,39 +59,17 @@ class DemoRequestItemView extends StatelessWidget { backgroundColor: AppColor.demoRequestStatus(context, requestDetails?.statusValue ?? 0), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestDetails!.date ?? ""), ], ), // 8.height, - (requestDetails?.nameOfType ?? 'Demo Request').heading5(context), + InfoHeaderWidget(requestDetails?.nameOfType ?? 'Demo Request'), // infoWidget(label: context.translation.requestType, value: requestDetails!.requestType, context: context), - infoWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), + InfoTextWidget(label: context.translation.requestNo, value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestDetails!.id!, moduleId: requestDetails!.transactionType!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/incident_module/incident_item_view.dart b/lib/modules/incident_module/incident_item_view.dart index 52838fb3..aa9d0711 100644 --- a/lib/modules/incident_module/incident_item_view.dart +++ b/lib/modules/incident_module/incident_item_view.dart @@ -1,15 +1,13 @@ -import 'dart:developer'; - import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; -import 'package:test_sa/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'incident_detail_page.dart'; @@ -36,30 +34,13 @@ class IncidentItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), - 8.height, - (requestData?.typeTransaction ?? "Loan Request").heading5(context), - infoWidget(label: context.translation.requestType, value: requestData?.requestTypeName, context: context), - infoWidget(label: "Incident No", value: requestData?.requestNo, context: context), + InfoHeaderWidget(requestData?.typeTransaction ?? "Loan Request"), + InfoTextWidget(label: context.translation.requestType, value: requestData?.requestTypeName), + InfoTextWidget(label: "Incident No", value: requestData?.requestNo, showArrow: true), // infoWidget(label: context.translation.site, value: requestData?., context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => IncidentDetailPage(incidentId: requestDetails!.id!))); @@ -67,6 +48,7 @@ class IncidentItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -77,42 +59,17 @@ class IncidentItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? "Loan Request").heading5(context), - 8.height, - infoWidget(label: context.translation.requestType, value: requestDetails!.requestType, context: context), - infoWidget(label: "Incident No", value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.assetName, value: requestDetails!.assetName, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? "Loan Request"), + InfoTextWidget(label: context.translation.requestType, value: requestDetails!.requestType), + InfoTextWidget(label: "Incident No", value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.assetName, value: requestDetails!.assetName), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => IncidentDetailPage(incidentId: requestDetails!.id!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_item_view.dart b/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_item_view.dart index 8aa12b64..5abd28f2 100644 --- a/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_item_view.dart +++ b/lib/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_item_view.dart @@ -3,13 +3,14 @@ import 'dart:developer'; import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class EquipmentInternalAuditItemView extends StatelessWidget { @@ -34,29 +35,12 @@ class EquipmentInternalAuditItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? "Internal Audit Request").heading5(context), - infoWidget(label: context.translation.requestNo, value: requestData!.requestNo, context: context), - infoWidget(label: context.translation.assetNumber, value: requestData!.assetNumber, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? "Internal Audit Request"), + InfoTextWidget(label: context.translation.requestNo, value: requestData!.requestNo), + InfoTextWidget(label: context.translation.assetNumber, value: requestData!.assetNumber, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => EquipmentInternalAuditDetailPage(auditId: requestData!.id!))); @@ -64,6 +48,7 @@ class EquipmentInternalAuditItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -74,43 +59,18 @@ class EquipmentInternalAuditItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? "Internal Audit Request").heading5(context), - 8.height, - infoWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.assetNumber, value: requestDetails!.assetNo, context: context), - infoWidget(label: context.translation.assetSN, value: requestDetails!.assetSN, context: context), - infoWidget(label: context.translation.model, value: requestDetails!.model, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? "Internal Audit Request"), + InfoTextWidget(label: context.translation.requestNo, value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.assetNumber, value: requestDetails!.assetNo), + InfoTextWidget(label: context.translation.assetSN, value: requestDetails!.assetSN), + InfoTextWidget(label: context.translation.model, value: requestDetails!.model), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => EquipmentInternalAuditDetailPage(auditId: requestDetails!.id!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/internal_audit_module/pages/system_internal_audit/system_internal_audit_item_view.dart b/lib/modules/internal_audit_module/pages/system_internal_audit/system_internal_audit_item_view.dart index 91a01b22..b9adcbfc 100644 --- a/lib/modules/internal_audit_module/pages/system_internal_audit/system_internal_audit_item_view.dart +++ b/lib/modules/internal_audit_module/pages/system_internal_audit/system_internal_audit_item_view.dart @@ -1,16 +1,14 @@ -import 'dart:developer'; - import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; -import 'package:test_sa/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_detail_page.dart'; import 'package:test_sa/modules/internal_audit_module/pages/system_internal_audit/system_internal_audit_detail_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class SystemInternalAuditItemView extends StatelessWidget { @@ -36,29 +34,12 @@ class SystemInternalAuditItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? "System Audit Request").heading5(context), - infoWidget(label: context.translation.requestNo, value: requestData!.requestNo, context: context), - infoWidget(label: context.translation.assetNumber, value: requestData?.assetNumber, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? "System Audit Request"), + InfoTextWidget(label: context.translation.requestNo, value: requestData!.requestNo), + InfoTextWidget(label: context.translation.assetNumber, value: requestData?.assetNumber, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => SystemInternalAuditDetailPage(auditId: requestData!.id!))); @@ -66,6 +47,7 @@ class SystemInternalAuditItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -76,45 +58,19 @@ class SystemInternalAuditItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestDetails!.date ?? ""), ], ), - 8.height, - (requestDetails?.nameOfType ?? "Internal Audit Request").heading5(context), - - infoWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.assetNumber, value: requestDetails!.assetNo, context: context), - infoWidget(label: context.translation.assetSN, value: requestDetails!.assetSN, context: context), - infoWidget(label: context.translation.model, value: requestDetails!.model, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, + InfoHeaderWidget(requestDetails?.nameOfType ?? "Internal Audit Request"), + InfoTextWidget(label: context.translation.requestNo, value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.assetNumber, value: requestDetails!.assetNo), + InfoTextWidget(label: context.translation.assetSN, value: requestDetails!.assetSN), + InfoTextWidget(label: context.translation.model, value: requestDetails!.model), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), // infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => SystemInternalAuditDetailPage(auditId: requestDetails!.id!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/medical_gas_inspection/medical_gas_inspection_item_view.dart b/lib/modules/medical_gas_inspection/medical_gas_inspection_item_view.dart index e03fc500..0573c78f 100644 --- a/lib/modules/medical_gas_inspection/medical_gas_inspection_item_view.dart +++ b/lib/modules/medical_gas_inspection/medical_gas_inspection_item_view.dart @@ -4,12 +4,15 @@ import 'package:flutter/material.dart'; 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/text_extensions.dart'; +import 'package:test_sa/extensions/string_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/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/medical_gas_inspection/medical_gas_inspection_detail_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class MedicalGasInspectionItemView extends StatelessWidget { @@ -42,27 +45,14 @@ class MedicalGasInspectionItemView extends StatelessWidget { backgroundColor: AppColor.getHistoryLogStatusColorByName(requestData!.statusName!), ), 1.width.expanded, - Text(requestData!.transactionDate!.toServiceRequestCardFormat, - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), - (requestData?.typeTransaction ?? 'Medical Gas Request').heading5(context), - infoWidget(label: 'Request Number'.addTranslation, value: requestData?.requestNo ?? '-', context: context), - infoWidget(label: 'Request Type'.addTranslation, value: requestData?.requestType ?? '-', context: context), + InfoHeaderWidget(requestData?.typeTransaction ?? 'Medical Gas Request'), + InfoTextWidget(label: 'Request Number'.addTranslation, value: requestData?.requestNo ?? '-'), + InfoTextWidget(label: 'Request Type'.addTranslation, value: requestData?.requestType ?? '-', showArrow: true), // infoWidget(label: 'Site'.addTranslation, value: requestData?.si ?? '-', context: context), // infoWidget(label: 'Gas Type'.addTranslation, value: requestDetails?.gasType ?? '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -74,6 +64,7 @@ class MedicalGasInspectionItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -92,25 +83,13 @@ class MedicalGasInspectionItemView extends StatelessWidget { backgroundColor: AppColor.getHistoryLogStatusColorByName(requestDetails!.status!), ), 1.width.expanded, - Text(requestDetails!.date!.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), - ], - ), - (requestDetails?.nameOfType ?? 'Medical Gas Request').heading5(context), - infoWidget(label: 'Request Number'.addTranslation, value: requestDetails?.requestNo ?? '-', context: context), - infoWidget(label: 'Request Type'.addTranslation, value: requestDetails?.requestType ?? '-', context: context), - infoWidget(label: 'Site'.addTranslation, value: requestDetails?.site ?? '-', context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? 'Medical Gas Request'), + InfoTextWidget(label: 'Request Number'.addTranslation, value: requestDetails?.requestNo ?? '-'), + InfoTextWidget(label: 'Request Type'.addTranslation, value: requestDetails?.requestType ?? '-'), + InfoTextWidget(label: 'Site'.addTranslation, value: requestDetails?.site ?? '-', showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -120,11 +99,4 @@ class MedicalGasInspectionItemView extends StatelessWidget { ))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/tm_module/tasks/task_request_item_view.dart b/lib/modules/tm_module/tasks/task_request_item_view.dart index 2c164df3..402de25c 100644 --- a/lib/modules/tm_module/tasks/task_request_item_view.dart +++ b/lib/modules/tm_module/tasks/task_request_item_view.dart @@ -1,12 +1,13 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'task_request_detail_view.dart'; @@ -39,30 +40,13 @@ class TaskRequestItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? context.translation.taskRequest).heading5(context), - infoWidget(label: context.translation.requestNo, value: requestData?.requestNo, context: context), - infoWidget(label: context.translation.assetName, value: requestData?.assetName, context: context), - infoWidget(label: context.translation.assetNo, value: requestData?.assetNumber, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.taskRequest), + InfoTextWidget(label: context.translation.requestNo, value: requestData?.requestNo), + InfoTextWidget(label: context.translation.assetName, value: requestData?.assetName), + InfoTextWidget(label: context.translation.assetNo, value: requestData?.assetNumber, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -75,6 +59,7 @@ class TaskRequestItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -91,33 +76,15 @@ class TaskRequestItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? context.translation.taskRequest).heading5(context), - 8.height, - infoWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.assetName, value: requestDetails!.assetName, context: context), - infoWidget(label: context.translation.assetNo, value: requestDetails!.assetNo, context: context), - infoWidget(label: context.translation.assetSN, value: requestDetails!.assetSN, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.taskRequest), + InfoTextWidget(label: context.translation.requestNo, value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.assetName, value: requestDetails!.assetName), + InfoTextWidget(label: context.translation.assetNo, value: requestDetails!.assetNo), + InfoTextWidget(label: context.translation.assetSN, value: requestDetails!.assetSN), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.of(context).push(MaterialPageRoute( @@ -128,11 +95,4 @@ class TaskRequestItemView extends StatelessWidget { ))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/modules/traf_module/traf_request_item_view.dart b/lib/modules/traf_module/traf_request_item_view.dart index 1bf03eb5..b9246cfb 100644 --- a/lib/modules/traf_module/traf_request_item_view.dart +++ b/lib/modules/traf_module/traf_request_item_view.dart @@ -1,12 +1,13 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'traf_request_detail_page.dart'; @@ -39,29 +40,12 @@ class TrafRequestItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? "TRAF Request").heading5(context), - infoWidget(label: context.translation.requestType, value: requestData?.requestTypeName, context: context), - infoWidget(label: "TRAF No", value: requestData?.requestNo, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? "TRAF Request"), + InfoTextWidget(label: context.translation.requestType, value: requestData?.requestTypeName), + InfoTextWidget(label: "TRAF No", value: requestData?.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => TrafRequestDetailPage(trafId: requestData!.id!))); @@ -69,6 +53,7 @@ class TrafRequestItemView extends StatelessWidget { } return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -85,41 +70,16 @@ class TrafRequestItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? "TRAF Request").heading5(context), - 8.height, - infoWidget(label: context.translation.requestType, value: requestDetails!.requestType, context: context), - infoWidget(label: "TRAF No", value: requestDetails!.requestNo, context: context), - infoWidget(label: context.translation.site, value: requestDetails!.site, context: context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? "TRAF Request"), + InfoTextWidget(label: context.translation.requestType, value: requestDetails!.requestType), + InfoTextWidget(label: "TRAF No", value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { Navigator.push(context, MaterialPageRoute(builder: (context) => TrafRequestDetailPage(trafId: requestDetails!.id!))); }); } - - Widget infoWidget({required String label, String? value, required BuildContext context}) { - if (value != null && value.isNotEmpty) { - return '$label: $value'.bodyText(context); - } - return const SizedBox(); - } } diff --git a/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart index f4e2f25e..a25c4c81 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart @@ -5,17 +5,34 @@ import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; 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/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import '../../../../models/search_all_requests_model.dart'; import '../../../common_widgets/app_lazy_loading.dart'; import '../../../common_widgets/default_app_bar.dart'; import '../widgets/request_search_buttons.dart'; +enum SortOrder { + ascending, + descending; + + String get label { + switch (this) { + case SortOrder.ascending: + return "Ascending/Oldest"; + case SortOrder.descending: + return "Descending/Newest"; + } + } +} + class AllRequestsSearchPage extends StatefulWidget { static const String id = "all_requests_search_page"; final SearchAllRequestsModel? data; @@ -29,10 +46,25 @@ class AllRequestsSearchPage extends StatefulWidget { class _AllRequestsSearchPageState extends State { SearchAllRequestsModel? search; final GlobalKey _formKey = GlobalKey(); + SortOrder selectedSortOption = SortOrder.ascending; @override void initState() { search = widget.data; + + // Initialize from widget.data if available, otherwise default to Ascending + if (search?.selectedSortOption != null) { + // Match the saved sort option name to our enum + try { + selectedSortOption = SortOrder.values.firstWhere( + (e) => e.name == search!.selectedSortOption, + orElse: () => SortOrder.ascending, + ); + } catch (e) { + selectedSortOption = SortOrder.ascending; + } + } + if (search != null) { search!.requestNumber?.controller?.text = search?.requestNumber?.value ?? ""; search!.assetName?.controller?.text = search?.assetName?.value ?? ""; @@ -81,6 +113,9 @@ class _AllRequestsSearchPageState extends State { setState(() { // search!.resetSearchValues(); search?.resetSearchValuesAndController(except: null); + search!.startDate = null; + search!.endDate = null; + selectedSortOption = SortOrder.ascending; }); }), ], @@ -132,6 +167,79 @@ class _AllRequestsSearchPageState extends State { search!.searchBySelectedValue!.value = value; }, ), + 16.height, + "Sort".heading5(context), + 8.height, + Row( + children: [ + for (var element in SortOrder.values) + Padding( + padding: const EdgeInsets.only(right: 16), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: 24, + height: 24, + child: Radio( + value: element, + activeColor: AppColor.primary10, + fillColor: WidgetStateColor.resolveWith((states) { + if (states.contains(WidgetState.selected)) { + return AppColor.primary10; + } + return Colors.grey; + }), + groupValue: selectedSortOption, + onChanged: (state) { + setState(() { + selectedSortOption = element; + }); + }, + ), + ), + 8.width, + Text( + element.label, + style: AppTextStyles.tinyFont.copyWith(color: AppColor.filterButtonTextColor(context)), + ), + ], + ), + ) + ], + ), + 16.height, + context.translation.pickDate.heading5(context), + 8.height, + Row( + children: [ + ADatePicker( + label: context.translation.from, + from: DateTime(2000), + date: search!.startDate, + onDatePicker: (date) { + setState(() { + search!.startDate = date; + }); + }, + ).expanded, + 8.width, + ADatePicker( + label: context.translation.to, + from: DateTime(2000), + date: search!.endDate, + onDatePicker: (date) { + if (search!.startDate != null && date.isBefore(search!.startDate!)) { + "End Date time must be greater then start date".showToast; + return; + } + setState(() { + search!.endDate = date; + }); + }, + ).expanded, + ], + ), ], ), ).expanded, @@ -145,10 +253,15 @@ class _AllRequestsSearchPageState extends State { void _search() async { if (_formKey.currentState!.validate()) { _formKey.currentState!.save(); + + // Save the enum name (ascending or descending) instead of label + search!.selectedSortOption = selectedSortOption.name; + final requestsProvider = Provider.of(context, listen: false); + if (search?.startDate != null) search?.endDate ??= DateTime.now(); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); requestsProvider.reset(); - await requestsProvider.getAllRequests(context, search: search); + await requestsProvider.getAllRequests(context, search: search, isAscending: selectedSortOption == SortOrder.ascending); Navigator.pop(context); Navigator.of(context).pop(search); } @@ -160,6 +273,9 @@ class _AllRequestsSearchPageState extends State { (search?.assetNo?.controller?.text.isNotEmpty ?? false) || (search?.manufacture?.controller?.text.isNotEmpty ?? false) || (search?.sn?.controller?.text.isNotEmpty ?? false) || - (search?.model?.controller?.text.isNotEmpty ?? false); + (search?.model?.controller?.text.isNotEmpty ?? false) || + (search?.startDate != null) || + (search?.endDate != null) || + selectedSortOption != SortOrder.ascending; } } diff --git a/lib/new_views/pages/land_page/requests/device_item_view.dart b/lib/new_views/pages/land_page/requests/device_item_view.dart index dfb12d40..c6102c15 100644 --- a/lib/new_views/pages/land_page/requests/device_item_view.dart +++ b/lib/new_views/pages/land_page/requests/device_item_view.dart @@ -3,11 +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/text_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/device_transfer.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/tm_module/device_transfer/device_transfer_details.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import '../../../../views/widgets/requests/request_status.dart'; import '../../../app_style/app_color.dart'; @@ -43,38 +47,14 @@ class DeviceItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData?.statusName), ), 1.width.expanded, - Text(requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), - ], - ), - 8.height, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - (requestData?.typeTransaction ?? context.translation.deviceTransferRequest).heading5(context), - // "${context.translation.from} : ${request.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), // todo ask ahmed - // "${context.translation.to} : ${request.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),// todo ask ahmed - // requestData!.statusName!.replaceAll("=", ":").bodyText(context), - '${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context), - ], - ), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon( - Icons.arrow_forward, - color: AppColor.blueStatus(context), - size: 14, - ) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.deviceTransferRequest), + // "${context.translation.from} : ${request.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), // todo ask ahmed + // "${context.translation.to} : ${request.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context),// todo ask ahmed + // requestData!.statusName!.replaceAll("=", ":").bodyText(context), + InfoTextWidget(label: context.translation.requestNo, value: requestData!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: DeviceTransfer(id: requestData!.id!), moduleId: requestData!.transactionNo!))); @@ -85,6 +65,7 @@ class DeviceItemView extends StatelessWidget { return Column( // mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -103,39 +84,14 @@ class DeviceItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails?.status), ), 1.width.expanded, - Text(requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), - ], - ), - 8.height, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - (requestDetails?.nameOfType ?? context.translation.deviceTransferRequest).heading5(context), - 8.height, - '${context.translation.trNumber}: ${requestDetails!.requestNo}'.bodyText(context), - "${context.translation.from} : ${requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), - "${context.translation.to} : ${requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach}".bodyText(context), - // requestDetails!.status!.replaceAll("=", ":").bodyText(context), - ], - ), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon( - Icons.arrow_forward, - color: AppColor.blueStatus(context), - size: 14, - ) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.deviceTransferRequest), + InfoTextWidget(label: context.translation.trNumber, value: requestDetails!.requestNo), + InfoTextWidget(label: context.translation.from, value: requestDetails!.siteTransferFrom?.cleanupWhitespace.capitalizeFirstOfEach), + InfoTextWidget(label: context.translation.to, value: requestDetails!.siteTransferTo?.cleanupWhitespace.capitalizeFirstOfEach, showArrow: true), + // requestDetails!.status!.replaceAll("=", ":").bodyText(context), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push(MaterialPageRoute( diff --git a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart index bd6ac0a7..208fdd84 100644 --- a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart +++ b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart @@ -1,13 +1,15 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/modules/tm_module/gas_refill/gas_refill_details.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import '../../../../views/widgets/requests/request_status.dart'; import '../../../app_style/app_color.dart'; @@ -28,45 +30,17 @@ class GasRefillItemView extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // StatusLabel( - // label: requestData!.priorityName!, - // textColor: AppColor.getRequestStatusTextColorByName(context, requestData!.priorityName!), - // backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.priorityName!), - // ), - // 8.width, StatusLabel( label: requestData!.statusName!, textColor: AppColor.getRequestStatusTextColorByName(context, requestData!.statusName!), backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text(requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), - ], - ), - 8.height, - (requestData?.typeTransaction ?? context.translation.gasRefillRequest).heading5(context), - // '${context.translation.gasType}: ${request.gasType}'.bodyText(context), // todo ask ahmed - // '${context.translation.site}: ${request.site?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),// todo ask ahmed - '${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith( - color: AppColor.blueStatus(context), - ), - ), - 4.width, - Icon( - Icons.arrow_forward, - color: AppColor.blueStatus(context), - size: 14, - ) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.gasRefillRequest), + InfoTextWidget(label: context.translation.requestNo, value: requestData!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push( @@ -85,50 +59,24 @@ class GasRefillItemView extends StatelessWidget { if (requestDetails != null) { return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // StatusLabel( - // label: requestDetails!.priority!, - // textColor: AppColor.getRequestStatusTextColorByName(context, requestDetails!.priority!), - // backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.priority!), - // ), - // 8.width, StatusLabel( label: requestDetails!.status!, textColor: AppColor.getRequestStatusTextColorByName(context, requestDetails!.status!), backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.status!), ), 1.width.expanded, - Text(requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50)), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? context.translation.gasRefillRequest).heading5(context), - 8.height, - '${context.translation.gasType}: ${requestDetails!.gasType}'.bodyText(context), - '${context.translation.site}: ${requestDetails!.site?.cleanupWhitespace?.capitalizeFirstOfEach}'.bodyText(context), - '${context.translation.requestNo}: ${requestDetails!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith( - color: AppColor.blueStatus(context), - ), - ), - 4.width, - Icon( - Icons.arrow_forward, - color: AppColor.blueStatus(context), - size: 14, - ) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.gasRefillRequest), + InfoTextWidget(label: context.translation.gasType, value: requestDetails!.gasType), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site?.cleanupWhitespace.capitalizeFirstOfEach), + InfoTextWidget(label: context.translation.requestNo, value: requestDetails!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push( diff --git a/lib/new_views/pages/land_page/requests/ppm_item_view.dart b/lib/new_views/pages/land_page/requests/ppm_item_view.dart index 7cdbf061..2469f049 100644 --- a/lib/new_views/pages/land_page/requests/ppm_item_view.dart +++ b/lib/new_views/pages/land_page/requests/ppm_item_view.dart @@ -1,13 +1,14 @@ import 'package:flutter/material.dart'; 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/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/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/pm_module/ppm_wo/ppm_details_page.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class PpmItemView extends StatelessWidget { @@ -38,33 +39,15 @@ class PpmItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), - 8.height, - (requestData?.typeTransaction ?? context.translation.ppmRequest).heading5(context), - 8.height, - '${context.translation.assetName}: ${requestData!.assetName}'.bodyText(context), - '${context.translation.assetNumber}: ${requestData!.assetNumber}'.bodyText(context), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.ppmRequest), + InfoTextWidget(label: context.translation.assetName, value: requestData!.assetName), + InfoTextWidget(label: context.translation.assetNumber, value: requestData!.assetNumber), // '${context.translation.assetSN}: ${request.assetSN}'.bodyText(context),//todo ask ahmed // '${context.translation.code}: ${request.code}'.bodyText(context), - 'PM No: ${requestData!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), + InfoTextWidget(label: 'PM No', value: requestData!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(requestId: requestData!.id!))); @@ -73,6 +56,7 @@ class PpmItemView extends StatelessWidget { if (requestDetails != null) { return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -89,33 +73,15 @@ class PpmItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), + InfoDateWidget(requestDetails!.date ?? ""), ], ), - 8.height, - (requestDetails?.nameOfType ?? context.translation.ppmRequest).heading5(context), - 8.height, - '${context.translation.assetName}: ${requestDetails!.assetName}'.bodyText(context), - '${context.translation.assetNumber}: ${requestDetails!.assetNo}'.bodyText(context), - '${context.translation.assetSN}: ${requestDetails!.assetSN}'.bodyText(context), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.ppmRequest), + InfoTextWidget(label: context.translation.assetName, value: requestDetails!.assetName), + InfoTextWidget(label: context.translation.assetNumber, value: requestDetails!.assetNo), + InfoTextWidget(label: context.translation.assetSN, value: requestDetails!.assetSN), // '${context.translation.code}: ${request.code}'.bodyText(context), - 'PM No: ${requestDetails!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), + InfoTextWidget(label: 'PM No', value: requestDetails!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(requestId: requestDetails!.id!))); diff --git a/lib/new_views/pages/land_page/requests/recurrent_wo_item_view.dart b/lib/new_views/pages/land_page/requests/recurrent_wo_item_view.dart index 0f63745e..a0050178 100644 --- a/lib/new_views/pages/land_page/requests/recurrent_wo_item_view.dart +++ b/lib/new_views/pages/land_page/requests/recurrent_wo_item_view.dart @@ -4,16 +4,16 @@ import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; 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/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/enums/user_types.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; -import 'package:test_sa/modules/cleaner_module/models/cleaner_task_search_result.dart'; import 'package:test_sa/modules/cleaner_module/pages/cleaner_search_details_view.dart'; import 'package:test_sa/modules/pm_module/recurrent_wo/recurrent_work_order_view.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; +import 'package:test_sa/views/widgets/item_views/info_text_widget.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class RecurrentWoItemView extends StatelessWidget { @@ -47,32 +47,11 @@ class RecurrentWoItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestData!.statusName!), ), 1.width.expanded, - Text( - requestData!.transactionDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestData?.typeTransaction ?? context.translation.ppmRequest).heading5(context), - 8.height, - // '${context.translation.assetNumber}: ${requestData!.assetNumber}'.bodyText(context), - // '${context.translation.assetSN}: ${request.assetSN}'.bodyText(context),//todo ask ahmed - // '${context.translation.code}: ${request.code}'.bodyText(context), - '${context.translation.taskNo}: ${requestData!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestData!.transactionDate ?? ""), ], ), + InfoHeaderWidget(requestData?.typeTransaction ?? context.translation.ppmRequest), + InfoTextWidget(label: context.translation.taskNo, value: requestData!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() { if (isFMSEngineer && (requestData?.statusValue == 4)) { @@ -93,6 +72,7 @@ class RecurrentWoItemView extends StatelessWidget { if (requestDetails != null) { return Column( crossAxisAlignment: CrossAxisAlignment.start, + spacing: 1, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -109,32 +89,12 @@ class RecurrentWoItemView extends StatelessWidget { backgroundColor: AppColor.getRequestStatusColorByName(context, requestDetails!.status!), ), 1.width.expanded, - Text( - requestDetails!.date?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50), - ), - ], - ), - 8.height, - (requestDetails?.nameOfType ?? context.translation.recurrentWo).heading5(context), - 8.height, - // '${context.translation.taskNo}: ${requestDetails!.id}'.bodyText(context), - '${context.translation.site}: ${requestDetails!.site}'.bodyText(context), - // '${context.translation.code}: ${request.code}'.bodyText(context), - '${context.translation.taskNo}: ${requestDetails!.requestNo}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)), - ), - 4.width, - Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) + InfoDateWidget(requestDetails!.date ?? ""), ], ), + InfoHeaderWidget(requestDetails?.nameOfType ?? context.translation.recurrentWo), + InfoTextWidget(label: context.translation.site, value: requestDetails!.site), + InfoTextWidget(label: context.translation.taskNo, value: requestDetails!.requestNo, showArrow: true), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { if (isFMSEngineer && (requestDetails?.statusValue == 4)) {