diff --git a/lib/cm_module/views/components/activity_card_view.dart b/lib/cm_module/views/components/activity_card_view.dart deleted file mode 100644 index 75fc9dba..00000000 --- a/lib/cm_module/views/components/activity_card_view.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; -import 'package:test_sa/models/service_request/search_work_order.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; - -import '../../../../views/widgets/requests/request_status.dart'; - -class ActivityCardView extends StatelessWidget { - final SearchWorkOrder workOrder; - final ServiceRequest serviceRequest; - final bool showShadow; - - const ActivityCardView(this.workOrder, this.serviceRequest, {Key? key, this.showShadow = true}) : super(key: key); - - @override - Widget build(BuildContext context) { - UserProvider userProvider = Provider.of(context, listen: false); - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: workOrder.currentSituation!.name, - textColor: AppColor.getRequestStatusTextColorByName(context, workOrder.currentSituation!.name!), - backgroundColor: AppColor.getRequestStatusColorByName(context, workOrder.currentSituation!.name!), - ), - 8.height, - Text(serviceRequest.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), - Text( - '${context.translation.assetName}: ${workOrder.callRequest!.asset!.modelDefinition!.assetName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.currentSituation}: ${workOrder.currentSituation!.name}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - 16.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.readCompleteThread, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context), decoration: TextDecoration.underline), - ), - // 4.width, - // Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), - ], - ).onPress(() { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrder, serviceRequest: serviceRequest)), - ); - }).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) - "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { - Navigator.of(context).push( - MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)), - ); - }), - if (userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, - Text(workOrder.visitDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), - ], - ) - ], - ).toShadowContainer(context); - } -} diff --git a/lib/cm_module/views/components/timer_widget.dart b/lib/cm_module/views/components/timer_widget.dart deleted file mode 100644 index 08ebba6e..00000000 --- a/lib/cm_module/views/components/timer_widget.dart +++ /dev/null @@ -1,183 +0,0 @@ - -import 'package:flutter/material.dart'; -import 'package:provider/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/models/size_config.dart'; -import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/extensions/string_extensions.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; - -class TimerWidget extends StatefulWidget { - const TimerWidget({Key? key}) : super(key: key); - - @override - _TimerWidgetState createState() => _TimerWidgetState(); -} - - -class _TimerWidgetState extends State { - Offset position = Offset(SizeConfig.screenWidth! - 100, SizeConfig.screenHeight! / 2 - 50); - @override - void initState() { - super.initState(); - } - @override - void dispose() { - // TODO: implement dispose - //dispose the timer... - super.dispose(); - } - - @override - Widget build(BuildContext context) { - return Consumer( - builder: (context, provider, child) { - return Positioned( - left: position.dx, - top: position.dy, - child: GestureDetector( - onPanEnd: (details){}, - onPanUpdate: (details) { - setState(() { - if (position.dy + details.delta.dy > 0 && position.dy + details.delta.dy < 560) { - position = Offset( - position.dx + details.delta.dx, // Update the X position - position.dy + details.delta.dy, // Update the Y position - ); - } - }); - }, - child: buildTimerWidget(provider), - ), - ); - }, - ); - } - - Widget buildTimerWidget(ServiceRequestDetailProvider provider) { - return Container( - padding: EdgeInsets.all(8.toScreenHeight), - width: 80.toScreenWidth, - decoration: BoxDecoration( - color: AppColor.black10, - borderRadius: BorderRadius.circular(10), - ), - child: - Column( - children: [ - 'drag_icon'.toSvgAsset(), - 12.height, - provider.currentTime.toString().toDragAbleTimerFormat.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), - 2.height, - context.translation.hours.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), - ], - ), - ); - } -} - - //older code... - // DateTime startTime = DateTime(0, 0, 0, 0, 0, 0); // Start from 00:00:00 - // Timer timer; - // bool isRunning = false; - // - // @override - // void initState() { - // super.initState(); - // startTimer(); - // } - // - // void startTimer() { - // if (isRunning) return; - // timer = Timer.periodic(const Duration(seconds: 1), (Timer t) { - // setState(() { - // startTime = startTime.add(const Duration(seconds: 1)); - // }); - // }); - // setState(() { - // isRunning = true; - // }); - // } - // - // void stopTimer() { - // timer?.cancel(); - // setState(() { - // isRunning = false; - // }); - // } - // @override - // void dispose() { - // timer?.cancel(); - // super.dispose(); - // } - // - // @override - // Widget build(BuildContext context) { - // return Positioned( - // left: position.dx, - // top: position.dy, - // child: GestureDetector( - // onPanUpdate: (details) { - // setState(() { - // //calculate the exact bonds to be restrict the drag.. - // if(position.dy + details.delta.dy>0&&position.dy + details.delta.dy<560){ - // position = Offset( - // position.dx + details.delta.dx, // Update the X position - // position.dy + details.delta.dy, // Update the Y position - // ); - // } - // }); - // }, - // child: buildTimerWidget(), - // ), - // ); - // // return Positioned( - // // left: position.dx, - // // top: position.dy, - // // child: Draggable( - // // feedback: buildTimerWidget(), - // // childWhenDragging: Container(), - // // onDragEnd: (dragDetails) { - // // setState(() { - // // // Get the RenderBox of the parent widget (Stack) - // // final renderBox = context.findRenderObject() as RenderBox; - // // - // // // Convert the global position to a local position inside the Stack - // // position = dragDetails.offset; - // // }); - // // }, - // // child: buildTimerWidget(), - // // ), - // // ); - // } - // - // Widget buildTimerWidget() { - // return GestureDetector( - // onTap: (){ - // if(isRunning){ - // stopTimer(); - // }else{ - // startTimer(); - // } - // }, - // child: Container( - // padding: EdgeInsets.all(8.toScreenHeight), - // width: 80.toScreenWidth, - // decoration: BoxDecoration( - // color: AppColor.black10, - // borderRadius: BorderRadius.circular(10), - // ), - // child: Column( - // children: [ - // 'drag_icon'.toSvgAsset(), - // 12.height, - // startTime.toString().toDragAbleTimerFormat.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), - // 2.height, - // context.translation.hours.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), - // ], - // ), - // ), - // ); - // } diff --git a/lib/cm_module/views/components/work_order_card_view.dart b/lib/cm_module/views/components/work_order_card_view.dart deleted file mode 100644 index a803e5ef..00000000 --- a/lib/cm_module/views/components/work_order_card_view.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; -import 'package:test_sa/models/service_request/search_work_order.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; - -import '../../../../views/widgets/requests/request_status.dart'; - -class WorkOrderCardView extends StatelessWidget { - final SearchWorkOrder workOrder; - final ServiceRequest serviceRequest; - final bool showShadow; - - WorkOrderCardView(this.workOrder, this.serviceRequest, {Key? key, this.showShadow = true}) : super(key: key); - - @override - Widget build(BuildContext context) { - UserProvider _userProvider = Provider.of(context, listen: false); - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: workOrder.currentSituation!.name, - textColor: AppColor.getRequestStatusTextColorByName(context, workOrder.currentSituation?.name), - backgroundColor: AppColor.getRequestStatusColorByName(context, workOrder.currentSituation?.name), - ), - 8.height, - Text(serviceRequest.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), - Text( - '${context.translation.assetName}: ${workOrder.callRequest?.asset?.modelDefinition?.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.currentSituation}: ${workOrder.currentSituation?.name}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - 16.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.readCompleteThread, - style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context), decoration: TextDecoration.underline), - ), - // 4.width, - // Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) - ], - ), - ], - ).onPress(() { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrder, serviceRequest: serviceRequest)), - ); - }).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - if (_userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) - "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { - Navigator.of(context).push( - MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)), - ); - }), - if (_userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, - Text(workOrder.visitDate?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), - ], - ) - ], - ).toShadowContainer(context); - } -} diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 3641f615..0f026c62 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -8,10 +8,10 @@ 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/device_transfer.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart'; -import 'package:test_sa/cm_module/views/service_request_detail_main_view.dart'; +import 'package:test_sa/modules/cm_module/views/service_request_detail_main_view.dart'; +import 'package:test_sa/modules/pm_module/ppm_wo/ppm_details_page.dart'; import 'package:test_sa/views/pages/device_transfer/device_transfer_details.dart'; import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_details_page.dart'; @pragma('vm:entry-point') Future firebaseMessagingBackgroundHandler(RemoteMessage message) async {} diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index 076fb2b9..dfc3fb35 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -10,8 +10,8 @@ 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/new_models/dashboard_detail.dart'; +import 'package:test_sa/modules/cm_module/views/components/weekly_calendar_fragment.dart'; import 'package:test_sa/new_views/common_widgets/tab_button.dart'; -import 'package:test_sa/cm_module/views/components/weekly_calendar_fragment.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class RequestCategoryFragment extends StatelessWidget { @@ -63,7 +63,7 @@ class RequestCategoryFragment extends StatelessWidget { child: const SizedBox().toRequestShimmer(context, dashboardProvider.isDetailLoading), ); })).paddingOnly(start: 16, end: 16, top: 16) - : (dashboardProvider.requestDetailList==null||dashboardProvider.requestDetailList?.data?.isEmpty==true) + : (dashboardProvider.requestDetailList == null || dashboardProvider.requestDetailList?.data?.isEmpty == true) ? const NoDataFound().paddingOnly(top: 80).center : RequestCategoryList(dashboardProvider.requestDetailList?.data ?? [], dashboardProvider.isDetailLoading, dashboardProvider.requestDetailList?.totalRows ?? 0), ]); diff --git a/lib/dashboard_latest/widgets/request_category_list.dart b/lib/dashboard_latest/widgets/request_category_list.dart index 0f686fa7..5c6fe481 100644 --- a/lib/dashboard_latest/widgets/request_category_list.dart +++ b/lib/dashboard_latest/widgets/request_category_list.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; 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/modules/tm_module/tasks_wo/task_request_item_view.dart'; import 'package:test_sa/new_views/app_style/app_color.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'; import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/task_request_item_view.dart'; class RequestCategoryList extends StatelessWidget { final List list; @@ -35,12 +35,7 @@ class RequestCategoryList extends StatelessWidget { } Widget _buildRequestItem(Data request) { - // bool isServiceRequest = request.transactionNo == 1; - // bool isGasRefill = request.transactionNo == 2; - // bool isAssetTransfer = request.transactionNo == 3; - // bool isPPMs = request.transactionNo == 4; - // bool isRecurrentTask = request.transactionNo == 5; - switch(request.transactionNo){ + switch (request.transactionNo) { case 1: return ServiceRequestItemView(requestData: request); case 2: @@ -48,36 +43,17 @@ class RequestCategoryList extends StatelessWidget { case 3: return DeviceItemView(requestData: request); case 4: - return PpmItemView(requestData: request); + return PpmItemView(requestData: request); case 5: return RecurrentWoItemView(requestData: request); case 6: - return TaskRequestItemView(requestData: request,); + return TaskRequestItemView(requestData: request); default: return Container( height: 100, width: double.infinity, color: Colors.grey, ); - } - - // if (isServiceRequest) { - // return ServiceRequestItemView(requestData: request); - // } else if (isGasRefill) { - // return GasRefillItemView(requestData: request); - // } else if (isPPMs) { - // return PpmItemView(requestData: request); - // } else if (isAssetTransfer) { - // return AssetItemView(requestData: request); - // } else if (isRecurrentTask) { - // return RecurrentWoItemView(requestData: request); - // } else { - // return Container( - // height: 100, - // width: double.infinity, - // color: Colors.grey, - // ); - // } } } diff --git a/lib/main.dart b/lib/main.dart index 4aec276a..a9f0bf84 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,15 +1,17 @@ import 'dart:io'; + import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_timezone/flutter_timezone.dart'; import 'package:localization/localization.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/comments_provider.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart'; +import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; import 'package:test_sa/controllers/providers/api/hospitals_provider.dart'; @@ -23,6 +25,9 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/report/servic import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_provider.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/nurse/create_new_request_view.dart'; +import 'package:test_sa/modules/tm_module/tasks_wo/create_task_view.dart'; import 'package:test_sa/new_views/app_style/app_themes.dart'; import 'package:test_sa/new_views/pages/help_center_page.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart'; @@ -66,48 +71,36 @@ import 'package:test_sa/providers/work_order/retirement_type_provider.dart'; import 'package:test_sa/providers/work_order/service_type_provider.dart'; 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/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/nurse/create_new_request_view.dart'; +import 'package:test_sa/views/pages/device_transfer/create__device_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/update_gas_refill_request.dart'; import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart'; -import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; +import 'package:test_sa/views/pages/user/gas_refill/update_gas_refill_request.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_page.dart'; + import 'package:test_sa/views/pages/user/profile_page.dart'; import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; -import 'package:test_sa/views/pages/user/requests/requests_page.dart'; -import 'package:test_sa/views/pages/user/requests/update_service_request_page.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/work_orders_list_page.dart'; +import 'package:test_sa/views/update_available_screen.dart'; import 'package:test_sa/views/widgets/departments/single_department_picker.dart'; import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart'; import 'package:test_sa/views/widgets/equipment/single_device_picker.dart'; +import 'package:timezone/data/latest_all.dart' as tz; +import 'package:timezone/timezone.dart' as tz; + import 'controllers/notification/notification_manger.dart'; import 'controllers/providers/api/gas_refill_comments.dart'; import 'controllers/providers/api/user_provider.dart'; import 'controllers/providers/settings/setting_provider.dart'; import 'dashboard_latest/dashboard_provider.dart'; + import 'new_views/pages/gas_refill_request_form.dart'; import 'providers/service_request_providers/loan_availability_provider.dart'; import 'providers/service_request_providers/reject_reason_provider.dart'; -import 'package:flutter_timezone/flutter_timezone.dart'; -import 'package:timezone/data/latest_all.dart' as tz; -import 'package:timezone/timezone.dart' as tz; -import 'package:test_sa/views/update_available_screen.dart'; - -import 'views/pages/user/tasks_request/create_task_view.dart'; - void main() async { WidgetsFlutterBinding.ensureInitialized(); _configureLocalTimeZone(); - NotificationManger.initialisation((notificationDetails) { - }, (id, title, body, payload) async {}); + NotificationManger.initialisation((notificationDetails) {}, (id, title, body, payload) async {}); if (Platform.isIOS) { await Firebase.initializeApp( @@ -131,19 +124,19 @@ void main() async { runApp(ChangeNotifierProvider(create: (_) => SettingProvider(), child: const MyApp())); } + //this function is used for schedule notifications Future _configureLocalTimeZone() async { - try{ + try { if (kIsWeb || Platform.isLinux) { return; } tz.initializeTimeZones(); final String timeZoneName = await FlutterTimezone.getLocalTimezone(); tz.setLocalLocation(tz.getLocation(timeZoneName)); - }catch(e){ - return ; + } catch (e) { + return; } - } final navigatorKey = GlobalKey(); @@ -272,7 +265,6 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => CommentsProvider()), ChangeNotifierProvider(create: (_) => GasRefillCommentsProvider()), - ///todo deleted //ChangeNotifierProvider(create: (_) => RequestStatusProvider()), ChangeNotifierProvider(create: (_) => VendorProvider()), @@ -299,14 +291,15 @@ class MyApp extends StatelessWidget { LoginPage.routeName: (_) => const LoginPage(), UnsafeDeviceScreen.routeName: (_) => const UnsafeDeviceScreen(), SwipeSuccessView.routeName: (_) => const SwipeSuccessView(), - SwipeHistoryView.routeName: (_) => SwipeHistoryView(), + SwipeHistoryView.routeName: (_) => const SwipeHistoryView(), SwipeView.routeName: (_) => const SwipeView(), UpdateAvailableScreen.routeName: (_) => UpdateAvailableScreen(), + ///todo deleted //old.LandPage.id: (_) => const old.LandPage(), LandPage.routeName: (_) => const LandPage(), GasRefillRequestForm.routeName: (_) => const GasRefillRequestForm(), - ServiceRequestsPage.id: (_) => const ServiceRequestsPage(), + // ServiceRequestsPage.id: (_) => const ServiceRequestsPage(), CreateTaskView.id: (_) => const CreateTaskView(), //ReportIssuesPage.id: (_) => ReportIssuesPage(), RequestGasRefill.id: (_) => const RequestGasRefill(), @@ -319,26 +312,26 @@ class MyApp extends StatelessWidget { NotificationsPage.id: (_) => const NotificationsPage(), // FutureRequestServiceDetails.id: (_) => FutureRequestServiceDetails(), // PreventiveMaintenanceVisitsPage.id: (_) => PreventiveMaintenanceVisitsPage(), - PpmPage.id: (_) => const PpmPage(), - TrackGasRefillPage.id: (_) => const TrackGasRefillPage(), + // PpmPage.id: (_) => const PpmPage(), + // TrackGasRefillPage.id: (_) => const TrackGasRefillPage(), CreateDeviceTransferRequest.id: (_) => const CreateDeviceTransferRequest(), - TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(), + // TrackDeviceTransferPage.id: (_) => const TrackDeviceTransferPage(), - // todo remove this class after work // SearchSubWorkOrderPage.id: (_) => const SearchSubWorkOrderPage(), - CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(), - WorkOrderListPage.id: (_) => WorkOrderListPage(), + // CreateSubWorkOrderPage.id: (_) => const CreateSubWorkOrderPage(), + // WorkOrderListPage.id: (_) => WorkOrderListPage(), AssetDetailPage.id: (_) => const AssetDetailPage(), DeviceSearchScreen.id: (_) => const DeviceSearchScreen(), DeviceFilterScreen.id: (_) => const DeviceFilterScreen(), - WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(), - UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(), + // WorkOrderDetailsPage.id: (_) => const WorkOrderDetailsPage(), + // UpdateServiceRequestPage.id: (_) => const UpdateServiceRequestPage(), + SettingsPage.id: (_) => const SettingsPage(), ProfilePage.id: (_) => const ProfilePage(), ReportBugPage.id: (_) => const ReportBugPage(), HelpCenterPage.id: (_) => const HelpCenterPage(), - SwipeSuccessView.routeName: (_) => const SwipeSuccessView(), - SwipeHistoryView.routeName: (_) => const SwipeHistoryView(), + // SwipeSuccessView.routeName: (_) => const SwipeSuccessView(), + // SwipeHistoryView.routeName: (_) => const SwipeHistoryView(), }, ), ), diff --git a/lib/cm_module/service_request_detail_provider.dart b/lib/modules/cm_module/service_request_detail_provider.dart similarity index 99% rename from lib/cm_module/service_request_detail_provider.dart rename to lib/modules/cm_module/service_request_detail_provider.dart index d74b8867..15f2644f 100644 --- a/lib/cm_module/service_request_detail_provider.dart +++ b/lib/modules/cm_module/service_request_detail_provider.dart @@ -5,7 +5,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:http/src/response.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/models/helper_data_models/asset_retired/asset_retired_model.dart'; @@ -18,6 +17,8 @@ import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/models/service_request/spare_parts.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; +import 'utilities/service_request_utils.dart'; + class ServiceRequestDetailProvider extends ChangeNotifier { final pageItemNumber = 10; diff --git a/lib/cm_module/utilities/service_request_utils.dart b/lib/modules/cm_module/utilities/service_request_utils.dart similarity index 95% rename from lib/cm_module/utilities/service_request_utils.dart rename to lib/modules/cm_module/utilities/service_request_utils.dart index d3c5c8cb..117d9160 100644 --- a/lib/cm_module/utilities/service_request_utils.dart +++ b/lib/modules/cm_module/utilities/service_request_utils.dart @@ -1,24 +1,24 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:developer'; import 'dart:io'; -import 'dart:async'; + import 'package:device_calendar/device_calendar.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_timezone/flutter_timezone.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:google_api_availability/google_api_availability.dart'; +import 'package:huawei_push/huawei_push.dart' as h_push; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/extensions/context_extension.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/new_views/common_widgets/app_lazy_loading.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:huawei_push/huawei_push.dart' as h_push; + +import '../service_request_detail_provider.dart'; class ServiceRequestUtils { static double calculateAndAssignWorkingHours({ @@ -37,7 +37,8 @@ class ServiceRequestUtils { return -1; // Indicating invalid input } } - static bool isLocalUrl(String url) { + + static bool isLocalUrl(String url) { if (url.isEmpty != false) return false; return url.startsWith("/") || url.startsWith("file://") || url.substring(1).startsWith(':\\'); } @@ -113,10 +114,10 @@ class ServiceRequestUtils { } } - static void scheduleOrUpdateNotification({required BuildContext context, required DateTime scheduleDateTime, required String workOrderId}) async{ + static void scheduleOrUpdateNotification({required BuildContext context, required DateTime scheduleDateTime, required String workOrderId}) async { DateTime scheduleTime = scheduleDateTime; - await NotificationManger.cancelNotificationById(workOrderId.hashCode); - NotificationManger.scheduleNotification(id: workOrderId.hashCode,title: 'Scheduled Notification', body: '$scheduleTime', scheduledNotificationDateTime: scheduleTime); + await NotificationManger.cancelNotificationById(workOrderId.hashCode); + NotificationManger.scheduleNotification(id: workOrderId.hashCode, title: 'Scheduled Notification', body: '$scheduleTime', scheduledNotificationDateTime: scheduleTime); } //steps: @@ -145,30 +146,29 @@ class ServiceRequestUtils { // Select a write able calendar final writableCalendar = calendarsResult.data?.firstWhere( - (calendar) => calendar.isReadOnly == false, + (calendar) => calendar.isReadOnly == false, orElse: () => Calendar(id: '', name: 'Default', isReadOnly: true), ); - if (writableCalendar == null || writableCalendar.isReadOnly==true) { + if (writableCalendar == null || writableCalendar.isReadOnly == true) { log('No writable calendar found.'); 'No writable calendar found.'.showToast; return; // Handle the case where no writable calendar exists } - final eventsResult = await deviceCalendarPlugin.retrieveEvents( writableCalendar.id!, RetrieveEventsParams(startDate: start.subtract(Duration(days: 7)), endDate: end.add(Duration(days: 30))), ); if (!(eventsResult.isSuccess && eventsResult.data != null)) { - "Failed to retrieve reminders.".showToast; + "Failed to retrieve reminders.".showToast; return; } // Find an event with the matching workOrderNumber in the description final matchingEvent = eventsResult.data!.firstWhere( - (event) => event.description?.contains('$workOrderNumber') ?? false, - orElse: () => Event('0',eventId: null), + (event) => event.description?.contains('$workOrderNumber') ?? false, + orElse: () => Event('0', eventId: null), ); if (matchingEvent.eventId != null) { @@ -210,7 +210,6 @@ class ServiceRequestUtils { } } - // static void addEventToCalendar({ // required BuildContext context, // required DateTime start, @@ -327,7 +326,6 @@ class ServiceRequestUtils { // } // } - // static void addEventToCalendar({required BuildContext context, required DateTime start, required DateTime end,required String title,required int ? requestId}) async { // // diff --git a/lib/cm_module/views/components/action_button/footer_action_button.dart b/lib/modules/cm_module/views/components/action_button/footer_action_button.dart similarity index 92% rename from lib/cm_module/views/components/action_button/footer_action_button.dart rename to lib/modules/cm_module/views/components/action_button/footer_action_button.dart index 24c1516a..d44e7de4 100644 --- a/lib/cm_module/views/components/action_button/footer_action_button.dart +++ b/lib/modules/cm_module/views/components/action_button/footer_action_button.dart @@ -10,14 +10,14 @@ import 'package:test_sa/models/enums/work_order_next_step.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/components/activities_list_view.dart'; +import 'package:test_sa/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; +import 'package:test_sa/modules/cm_module/views/components/verify_arrival_view.dart'; +import 'package:test_sa/modules/cm_module/views/forms/asset_retired/verify_asset_detail.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/providers/service_request_providers/reject_reason_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/activities_list_view.dart'; -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; -import 'package:test_sa/cm_module/views/components/verify_arrival_view.dart'; -import 'package:test_sa/cm_module/views/forms/asset_retired/verify_asset_detail.dart'; class FooterActionButton { static Widget footerContainer({required Widget child}) { @@ -71,13 +71,13 @@ class FooterActionButton { } return footerContainer( child: AppFilledButton( - label: context.translation.close, - // maxWidth: true, - buttonColor: AppColor.primary10, - onPressed: () async { - Navigator.pop(context); - }, - )); + label: context.translation.close, + // maxWidth: true, + buttonColor: AppColor.primary10, + onPressed: () async { + Navigator.pop(context); + }, + )); case WorkOrderNextStepEnum.nTakeAction: if (requestDetailProvider.isReadOnlyRequest) { return footerContainer( @@ -181,12 +181,7 @@ class FooterActionButton { // maxWidth: true, buttonColor: AppColor.primary10, onPressed: () async { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => VerifyAssetDetails( - isEdit: false, - ))); + Navigator.push(context, MaterialPageRoute(builder: (context) => VerifyAssetDetails(isEdit: false))); }, )); case WorkOrderNextStepEnum.activity: diff --git a/lib/cm_module/views/components/activities_list_view.dart b/lib/modules/cm_module/views/components/activities_list_view.dart similarity index 96% rename from lib/cm_module/views/components/activities_list_view.dart rename to lib/modules/cm_module/views/components/activities_list_view.dart index d2f3ef75..c7fc7701 100644 --- a/lib/cm_module/views/components/activities_list_view.dart +++ b/lib/modules/cm_module/views/components/activities_list_view.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -15,20 +14,21 @@ import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/models/service_request/spare_parts.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; +import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; +import 'package:test_sa/modules/cm_module/views/forms/maintenance_request/maintenance_request_main.dart'; +import 'package:test_sa/modules/cm_module/views/forms/spare_part/spare_part_request.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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; - -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; -import 'package:test_sa/cm_module/views/forms/maintenance_request/maintenance_request_main.dart'; -import 'package:test_sa/cm_module/views/forms/spare_part/spare_part_request.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; +import 'bottom_sheets/service_request_bottomsheet.dart'; + class ActivitiesListView extends StatefulWidget { static const String id = "/activities-list"; @@ -289,8 +289,8 @@ class _ActivitiesListViewState extends State { StatusLabel( label: activity.activityMaintenance?.activityType, // textColor: AppColor.white10, - textColor: AppColor.getActivityTypeTextColor(activity.activityMaintenance?.activityType??''), - backgroundColor: AppColor.getActivityTypeBgColor(activity.activityMaintenance?.activityType??''), + textColor: AppColor.getActivityTypeTextColor(activity.activityMaintenance?.activityType ?? ''), + backgroundColor: AppColor.getActivityTypeBgColor(activity.activityMaintenance?.activityType ?? ''), // backgroundColor: AppColor.primary10, ), ], @@ -365,7 +365,7 @@ class _ActivitiesListViewState extends State { ], ).toShadowContainer(context, padding: 12, showShadow: false).onPress(() { if (requestDetailProvider.isReadOnlyRequest) { - onEditMaintenanceRequestPress(context: context, requestDetailProvider: requestDetailProvider, activity: activity); + onEditMaintenanceRequestPress(context: context, requestDetailProvider: requestDetailProvider, activity: activity); } }); } @@ -426,10 +426,7 @@ class _ActivitiesListViewState extends State { } catch (e) { print("Edit error $e"); } - - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => MaintenanceRequestForm(), - )); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => MaintenanceRequestForm())); } } @@ -447,6 +444,7 @@ class ReorderWidget extends StatelessWidget { ); } } + class DummyClass extends StatelessWidget { const DummyClass({super.key}); @@ -455,6 +453,3 @@ class DummyClass extends StatelessWidget { return const Placeholder(); } } - - - diff --git a/lib/modules/cm_module/views/components/activity_card_view.dart b/lib/modules/cm_module/views/components/activity_card_view.dart new file mode 100644 index 00000000..0678bd9f --- /dev/null +++ b/lib/modules/cm_module/views/components/activity_card_view.dart @@ -0,0 +1,87 @@ +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; +// import 'package:test_sa/models/service_request/search_work_order.dart'; +// import 'package:test_sa/models/service_request/service_request.dart'; +// import 'package:test_sa/new_views/app_style/app_color.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; +// +// import '../../../../views/widgets/requests/request_status.dart'; +//// //todo @delete +// class ActivityCardView extends StatelessWidget { +// final SearchWorkOrder workOrder; +// final ServiceRequest serviceRequest; +// final bool showShadow; +// +// const ActivityCardView(this.workOrder, this.serviceRequest, {Key? key, this.showShadow = true}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// UserProvider userProvider = Provider.of(context, listen: false); +// return Row( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// mainAxisSize: MainAxisSize.min, +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// StatusLabel( +// label: workOrder.currentSituation!.name, +// textColor: AppColor.getRequestStatusTextColorByName(context, workOrder.currentSituation!.name!), +// backgroundColor: AppColor.getRequestStatusColorByName(context, workOrder.currentSituation!.name!), +// ), +// 8.height, +// Text(serviceRequest.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), +// Text( +// '${context.translation.assetName}: ${workOrder.callRequest!.asset!.modelDefinition!.assetName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.currentSituation}: ${workOrder.currentSituation!.name}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// 16.height, +// Row( +// mainAxisSize: MainAxisSize.min, +// children: [ +// Text( +// context.translation.readCompleteThread, +// style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context), decoration: TextDecoration.underline), +// ), +// // 4.width, +// // Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) +// ], +// ), +// ], +// ).onPress(() { +// Navigator.push( +// context, +// MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrder, serviceRequest: serviceRequest)), +// ); +// }).expanded, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// mainAxisAlignment: MainAxisAlignment.start, +// children: [ +// if (userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) +// "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { +// Navigator.of(context).push( +// MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)), +// ); +// }), +// if (userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, +// Text(workOrder.visitDate?.toServiceRequestCardFormat ?? "", +// textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), +// ], +// ) +// ], +// ).toShadowContainer(context); +// } +// } diff --git a/lib/cm_module/views/components/asset_detail_card.dart b/lib/modules/cm_module/views/components/asset_detail_card.dart similarity index 96% rename from lib/cm_module/views/components/asset_detail_card.dart rename to lib/modules/cm_module/views/components/asset_detail_card.dart index db6b425f..4f377e61 100644 --- a/lib/cm_module/views/components/asset_detail_card.dart +++ b/lib/modules/cm_module/views/components/asset_detail_card.dart @@ -3,13 +3,13 @@ import 'package:provider/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/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/forms/asset_retired/verify_asset_detail.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; class AssetDetailCard extends StatelessWidget { const AssetDetailCard({Key? key}) : super(key: key); diff --git a/lib/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart similarity index 98% rename from lib/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart rename to lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart index 93106c61..2875e1b1 100644 --- a/lib/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart +++ b/lib/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart @@ -6,7 +6,8 @@ import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/app_strings/app_asset.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; +import 'package:test_sa/controllers/providers/api/service_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'; @@ -18,23 +19,22 @@ import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; +import 'package:test_sa/modules/cm_module/views/forms/maintenance_request/maintenance_request_main.dart'; +import 'package:test_sa/modules/cm_module/views/forms/spare_part/spare_part_request.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_lazy_loading.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart'; import 'package:test_sa/providers/work_order/need_visit_reminder_time_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/forms/maintenance_request/maintenance_request_main.dart'; -import 'package:test_sa/cm_module/views/forms/spare_part/spare_part_request.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import '../../../../controllers/providers/api/service_requests_provider.dart'; -import '../../../../new_views/app_style/app_color.dart'; -import '../../../../new_views/common_widgets/app_filled_button.dart'; -import '../../../../new_views/common_widgets/app_text_form_field.dart'; - class ServiceRequestBottomSheet { static buildBottomSheetParent({required BuildContext context, required Widget childWidget, bool? isDismissible}) { return showModalBottomSheet( diff --git a/lib/cm_module/views/components/history_log_view.dart b/lib/modules/cm_module/views/components/history_log_view.dart similarity index 97% rename from lib/cm_module/views/components/history_log_view.dart rename to lib/modules/cm_module/views/components/history_log_view.dart index 994dd7ad..4d1073be 100644 --- a/lib/cm_module/views/components/history_log_view.dart +++ b/lib/modules/cm_module/views/components/history_log_view.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; + import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -10,8 +10,10 @@ 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/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; + import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; diff --git a/lib/cm_module/views/components/initial_visit_card.dart b/lib/modules/cm_module/views/components/initial_visit_card.dart similarity index 94% rename from lib/cm_module/views/components/initial_visit_card.dart rename to lib/modules/cm_module/views/components/initial_visit_card.dart index d2c13fe5..898e44a9 100644 --- a/lib/cm_module/views/components/initial_visit_card.dart +++ b/lib/modules/cm_module/views/components/initial_visit_card.dart @@ -7,9 +7,10 @@ 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/service_request_detail_provider.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; + +import 'bottom_sheets/service_request_bottomsheet.dart'; class InitialVisitCard extends StatefulWidget { const InitialVisitCard({Key? key}) : super(key: key); diff --git a/lib/cm_module/views/components/scan_qr_view.dart b/lib/modules/cm_module/views/components/scan_qr_view.dart similarity index 100% rename from lib/cm_module/views/components/scan_qr_view.dart rename to lib/modules/cm_module/views/components/scan_qr_view.dart diff --git a/lib/cm_module/views/components/service_request_detail_view.dart b/lib/modules/cm_module/views/components/service_request_detail_view.dart similarity index 98% rename from lib/cm_module/views/components/service_request_detail_view.dart rename to lib/modules/cm_module/views/components/service_request_detail_view.dart index a9201819..16fbca98 100644 --- a/lib/cm_module/views/components/service_request_detail_view.dart +++ b/lib/modules/cm_module/views/components/service_request_detail_view.dart @@ -2,12 +2,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; -import 'package:test_sa/cm_module/views/components/asset_detail_card.dart'; -import 'package:test_sa/cm_module/views/components/initial_visit_card.dart'; -import 'package:test_sa/cm_module/views/forms/asset_retired/asset_retired.dart'; -import 'package:test_sa/cm_module/views/forms/cost/cost_detail_form_screen.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -20,6 +14,9 @@ import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/work_order_next_step.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/forms/asset_retired/asset_retired.dart'; +import 'package:test_sa/modules/cm_module/views/forms/cost/cost_detail_form_screen.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/views/widgets/images/multi_image_picker.dart'; @@ -27,6 +24,10 @@ import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/sound/sound_player.dart'; +import 'action_button/footer_action_button.dart'; +import 'asset_detail_card.dart'; +import 'initial_visit_card.dart'; + class ServiceRequestDetailView extends StatefulWidget { ServiceRequestDetailView({Key? key}) : super(key: key); diff --git a/lib/modules/cm_module/views/components/timer_widget.dart b/lib/modules/cm_module/views/components/timer_widget.dart new file mode 100644 index 00000000..ad1404e5 --- /dev/null +++ b/lib/modules/cm_module/views/components/timer_widget.dart @@ -0,0 +1,66 @@ +import 'package:flutter/material.dart'; +import 'package:provider/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/models/size_config.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; + +class TimerWidget extends StatefulWidget { + const TimerWidget({Key? key}) : super(key: key); + + @override + _TimerWidgetState createState() => _TimerWidgetState(); +} + +class _TimerWidgetState extends State { + Offset position = Offset(SizeConfig.screenWidth! - 100, SizeConfig.screenHeight! / 2 - 50); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, provider, child) { + return Positioned( + left: position.dx, + top: position.dy, + child: GestureDetector( + onPanEnd: (details) {}, + onPanUpdate: (details) { + setState(() { + if (position.dy + details.delta.dy > 0 && position.dy + details.delta.dy < 560) { + position = Offset( + position.dx + details.delta.dx, // Update the X position + position.dy + details.delta.dy, // Update the Y position + ); + } + }); + }, + child: buildTimerWidget(provider), + ), + ); + }, + ); + } + + Widget buildTimerWidget(ServiceRequestDetailProvider provider) { + return Container( + padding: EdgeInsets.all(8.toScreenHeight), + width: 80.toScreenWidth, + decoration: BoxDecoration( + color: AppColor.black10, + borderRadius: BorderRadius.circular(10), + ), + child: Column( + children: [ + 'drag_icon'.toSvgAsset(), + 12.height, + provider.currentTime.toString().toDragAbleTimerFormat.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), + 2.height, + context.translation.hours.tinyFont(context).custom(color: AppColor.white10, fontWeight: FontWeight.w600), + ], + ), + ); + } +} diff --git a/lib/cm_module/views/components/verify_arrival_view.dart b/lib/modules/cm_module/views/components/verify_arrival_view.dart similarity index 91% rename from lib/cm_module/views/components/verify_arrival_view.dart rename to lib/modules/cm_module/views/components/verify_arrival_view.dart index 2fe50d29..942949ed 100644 --- a/lib/cm_module/views/components/verify_arrival_view.dart +++ b/lib/modules/cm_module/views/components/verify_arrival_view.dart @@ -5,22 +5,22 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.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/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; - -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; -import 'package:test_sa/cm_module/views/components/verify_otp_view.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/qr/scan_qr.dart'; +import 'bottom_sheets/service_request_bottomsheet.dart'; +import 'verify_otp_view.dart'; + class VerifyArrivalView extends StatefulWidget { const VerifyArrivalView({Key? key}) : super(key: key); @@ -211,7 +211,6 @@ class _VerifyArrivalViewState extends State { Future onFilePicker() async { File? fileImage; final pickedFile = await ImagePicker().pickImage(source: ImageSource.camera, imageQuality: 70, maxWidth: 800, maxHeight: 800); - if (pickedFile != null) { fileImage = File(pickedFile.path); } @@ -219,30 +218,28 @@ class _VerifyArrivalViewState extends State { } void showWaitingBottomSheet({required ServiceRequestDetailProvider requestDetailProvider, int? verificationTypeId}) async { - await requestDetailProvider.engineerConfirmArrival( - workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, verificationTypeId: verificationTypeId ?? 2, photoInfo: '', otp: ''); + await requestDetailProvider.engineerConfirmArrival(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, verificationTypeId: verificationTypeId ?? 2, photoInfo: '', otp: ''); requestDetailProvider.isVerifyArrivalBottomSheetOpen = true; - ServiceRequestBottomSheet.waitingForApprovalBottomSheet(context: context).then((value){ - requestDetailProvider.isVerifyArrivalBottomSheetOpen=false; + ServiceRequestBottomSheet.waitingForApprovalBottomSheet(context: context).then((value) { + requestDetailProvider.isVerifyArrivalBottomSheetOpen = false; }); - bool? isArrived = await ServiceRequestUtils.listenForApproval(); + bool? isArrived = await ServiceRequestUtils.listenForApproval(); if (requestDetailProvider.isVerifyArrivalBottomSheetOpen) { if (isArrived == null) { "Requester not confirmed you arrival".showToast; Navigator.pop(context); } else if (isArrived) { - requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); - Navigator.pop(context); - Navigator.pop(context); - requestDetailProvider.startTimer(); + requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); + Navigator.pop(context); + Navigator.pop(context); + requestDetailProvider.startTimer(); } else { requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); "Requester not confirmed you arrival".showToast; Navigator.pop(context); Navigator.pop(context); } - } - else{ + } else { log('bottomsheet closed ...'); } } diff --git a/lib/cm_module/views/components/verify_otp_view.dart b/lib/modules/cm_module/views/components/verify_otp_view.dart similarity index 93% rename from lib/cm_module/views/components/verify_otp_view.dart rename to lib/modules/cm_module/views/components/verify_otp_view.dart index fd04b118..c54c66fa 100644 --- a/lib/cm_module/views/components/verify_otp_view.dart +++ b/lib/modules/cm_module/views/components/verify_otp_view.dart @@ -5,10 +5,10 @@ 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/modules/cm_module/service_request_detail_provider.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; class VerifyOtpView extends StatelessWidget { const VerifyOtpView({Key? key}) : super(key: key); @@ -50,21 +50,18 @@ class VerifyOtpView extends StatelessWidget { ), ), onCompleted: (pin) async { - debugPrint('pin i got is $pin'); ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); int? status; - //TODO add loader.. - showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); + showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); status = await requestDetailProvider.verifyOtp(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, otpCode: pin); if (status == 200) { await requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); await requestDetailProvider.engineerConfirmArrival( workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, verificationTypeId: 3, photoInfo: '', otp: pin, assetNo: ''); - Navigator.pop(context); + Navigator.pop(context); requestDetailProvider.startTimer(); Navigator.pop(context); - } - else{ + } else { Navigator.pop(context); } }, diff --git a/lib/cm_module/views/components/weekly_calendar_fragment.dart b/lib/modules/cm_module/views/components/weekly_calendar_fragment.dart similarity index 100% rename from lib/cm_module/views/components/weekly_calendar_fragment.dart rename to lib/modules/cm_module/views/components/weekly_calendar_fragment.dart diff --git a/lib/modules/cm_module/views/components/work_order_card_view.dart b/lib/modules/cm_module/views/components/work_order_card_view.dart new file mode 100644 index 00000000..6c8c04a5 --- /dev/null +++ b/lib/modules/cm_module/views/components/work_order_card_view.dart @@ -0,0 +1,87 @@ +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; +// import 'package:test_sa/models/service_request/search_work_order.dart'; +// import 'package:test_sa/models/service_request/service_request.dart'; +// import 'package:test_sa/new_views/app_style/app_color.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart'; +// +// import '../../../../views/widgets/requests/request_status.dart'; +//// //todo @delete +// class WorkOrderCardView extends StatelessWidget { +// final SearchWorkOrder workOrder; +// final ServiceRequest serviceRequest; +// final bool showShadow; +// +// WorkOrderCardView(this.workOrder, this.serviceRequest, {Key? key, this.showShadow = true}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// UserProvider _userProvider = Provider.of(context, listen: false); +// return Row( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// mainAxisSize: MainAxisSize.min, +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// StatusLabel( +// label: workOrder.currentSituation!.name, +// textColor: AppColor.getRequestStatusTextColorByName(context, workOrder.currentSituation?.name), +// backgroundColor: AppColor.getRequestStatusColorByName(context, workOrder.currentSituation?.name), +// ), +// 8.height, +// Text(serviceRequest.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), +// Text( +// '${context.translation.assetName}: ${workOrder.callRequest?.asset?.modelDefinition?.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.currentSituation}: ${workOrder.currentSituation?.name}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// 16.height, +// Row( +// mainAxisSize: MainAxisSize.min, +// children: [ +// Text( +// context.translation.readCompleteThread, +// style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context), decoration: TextDecoration.underline), +// ), +// // 4.width, +// // Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14) +// ], +// ), +// ], +// ).onPress(() { +// Navigator.push( +// context, +// MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrder, serviceRequest: serviceRequest)), +// ); +// }).expanded, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// mainAxisAlignment: MainAxisAlignment.start, +// children: [ +// if (_userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) +// "edit_icon".toSvgAsset(height: 21, width: 21).onPress(() { +// Navigator.of(context).push( +// MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrder)), +// ); +// }), +// if (_userProvider.user!.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, +// Text(workOrder.visitDate?.toServiceRequestCardFormat ?? "", +// textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), +// ], +// ) +// ], +// ).toShadowContainer(context); +// } +// } diff --git a/lib/cm_module/views/forms/asset_retired/asset_retired.dart b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart similarity index 94% rename from lib/cm_module/views/forms/asset_retired/asset_retired.dart rename to lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart index 23cb091c..af051bbe 100644 --- a/lib/cm_module/views/forms/asset_retired/asset_retired.dart +++ b/lib/modules/cm_module/views/forms/asset_retired/asset_retired.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -7,17 +8,17 @@ 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/helper_data_models/asset_retired/asset_retired_model.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.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/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/work_order/retirement_type_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import '../../../../../../models/lookup.dart'; -import '../../../../../../new_views/common_widgets/default_app_bar.dart'; class AssetRetired extends StatefulWidget { static const String id = "/asset-tobe-retired"; @@ -83,9 +84,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix onSelect: (value) { if (value != null) { requestDetailProvider.assetRetiredHelperModel?.retirmentReason = value; - setState(() { - - }); + setState(() {}); } }, ), diff --git a/lib/cm_module/views/forms/asset_retired/verify_asset_detail.dart b/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart similarity index 98% rename from lib/cm_module/views/forms/asset_retired/verify_asset_detail.dart rename to lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart index 6047f4c7..5a8fa9a7 100644 --- a/lib/cm_module/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart @@ -10,24 +10,23 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/fault_description.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; +import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart'; import 'package:test_sa/providers/work_order/fault_description_provider.dart'; import 'package:test_sa/providers/work_order/reason_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; -import '../../../../../../models/lookup.dart'; -import '../../../../../../new_views/common_widgets/default_app_bar.dart'; - class VerifyAssetDetails extends StatefulWidget { static const String id = "/verify-asset-detail"; bool isEdit = false; diff --git a/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart b/lib/modules/cm_module/views/forms/cost/cost_detail_form_screen.dart similarity index 99% rename from lib/cm_module/views/forms/cost/cost_detail_form_screen.dart rename to lib/modules/cm_module/views/forms/cost/cost_detail_form_screen.dart index 347d9682..8b00b8ac 100644 --- a/lib/cm_module/views/forms/cost/cost_detail_form_screen.dart +++ b/lib/modules/cm_module/views/forms/cost/cost_detail_form_screen.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_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/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.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_lazy_loading.dart'; diff --git a/lib/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart b/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart similarity index 98% rename from lib/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart rename to lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart index 570c0ee9..a999addc 100644 --- a/lib/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; @@ -9,6 +7,8 @@ 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/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.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'; diff --git a/lib/cm_module/views/forms/maintenance_request/components/external_request.dart b/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart similarity index 97% rename from lib/cm_module/views/forms/maintenance_request/components/external_request.dart rename to lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart index d8269d15..625d12b7 100644 --- a/lib/cm_module/views/forms/maintenance_request/components/external_request.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.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'; @@ -9,15 +8,15 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; - import 'package:test_sa/views/pages/user/requests/add_supplier_engineer_bottom_sheet.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; -import '../../../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; class ExternalMaintenanceRequest extends StatefulWidget { static const String id = "/add-external-activity"; diff --git a/lib/cm_module/views/forms/maintenance_request/components/internal_request.dart b/lib/modules/cm_module/views/forms/maintenance_request/components/internal_request.dart similarity index 97% rename from lib/cm_module/views/forms/maintenance_request/components/internal_request.dart rename to lib/modules/cm_module/views/forms/maintenance_request/components/internal_request.dart index d6c45371..c0ff8a50 100644 --- a/lib/cm_module/views/forms/maintenance_request/components/internal_request.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/components/internal_request.dart @@ -2,22 +2,23 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; + import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_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/lookup.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/service_request_providers/last_situation_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; - -import 'package:test_sa/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart'; -import '../../../../../models/lookup.dart'; -import '../../../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; +import 'assistant_employee_card.dart'; + class InternalMaintenanceRequest extends StatefulWidget { static const String id = "/add-internal-activity"; diff --git a/lib/cm_module/views/forms/maintenance_request/maintenance_request_main.dart b/lib/modules/cm_module/views/forms/maintenance_request/maintenance_request_main.dart similarity index 95% rename from lib/cm_module/views/forms/maintenance_request/maintenance_request_main.dart rename to lib/modules/cm_module/views/forms/maintenance_request/maintenance_request_main.dart index b06b2aa4..6f8518d0 100644 --- a/lib/cm_module/views/forms/maintenance_request/maintenance_request_main.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/maintenance_request_main.dart @@ -8,14 +8,14 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; -import 'package:test_sa/cm_module/views/forms/maintenance_request/components/external_request.dart'; -import 'package:test_sa/cm_module/views/forms/maintenance_request/components/internal_request.dart'; +import 'components/external_request.dart'; +import 'components/internal_request.dart'; class MaintenanceRequestForm extends StatefulWidget { MaintenanceRequestForm({Key? key}) : super(key: key); diff --git a/lib/cm_module/views/forms/spare_part/spare_part_request.dart b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart similarity index 96% rename from lib/cm_module/views/forms/spare_part/spare_part_request.dart rename to lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart index 28578589..1517b341 100644 --- a/lib/cm_module/views/forms/spare_part/spare_part_request.dart +++ b/lib/modules/cm_module/views/forms/spare_part/spare_part_request.dart @@ -4,30 +4,29 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/parts_provider.dart'; +import 'package:test_sa/controllers/validator/validator.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/helper_data_models/spare_part/activity_spare_part_model.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/service_request/spare_parts.dart'; import 'package:test_sa/models/size_config.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; +import 'package:test_sa/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.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_lazy_loading.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; import 'package:test_sa/views/widgets/images/new_multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; -import '../../../../../../models/service_request/spare_parts.dart'; -import '../../../../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../../../../new_views/common_widgets/default_app_bar.dart'; -import '../../../../controllers/validator/validator.dart'; -import '../../../../new_views/common_widgets/app_lazy_loading.dart'; class SparePartRequest extends StatefulWidget { static const String id = "/spare-part-request"; @@ -122,7 +121,6 @@ class _SparePartRequestState extends State with TickerProvider key: _scaffoldKey, appBar: DefaultAppBar(title: context.translation.sparePartRequest), body: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { - print('data i got is ${requestDetailProvider.sparePartHelperModel?.sparePart?.toJson()}'); return SafeArea( child: Form( key: _formKey, diff --git a/lib/cm_module/views/forms/work_order/components/asset_conditon_view.dart b/lib/modules/cm_module/views/forms/work_order/components/asset_conditon_view.dart similarity index 100% rename from lib/cm_module/views/forms/work_order/components/asset_conditon_view.dart rename to lib/modules/cm_module/views/forms/work_order/components/asset_conditon_view.dart diff --git a/lib/cm_module/views/forms/work_order/components/attachments_view.dart b/lib/modules/cm_module/views/forms/work_order/components/attachments_view.dart similarity index 100% rename from lib/cm_module/views/forms/work_order/components/attachments_view.dart rename to lib/modules/cm_module/views/forms/work_order/components/attachments_view.dart diff --git a/lib/cm_module/views/forms/work_order/components/time_duration_view.dart b/lib/modules/cm_module/views/forms/work_order/components/time_duration_view.dart similarity index 100% rename from lib/cm_module/views/forms/work_order/components/time_duration_view.dart rename to lib/modules/cm_module/views/forms/work_order/components/time_duration_view.dart diff --git a/lib/cm_module/views/forms/work_order/work_order_form_view.dart b/lib/modules/cm_module/views/forms/work_order/work_order_form_view.dart similarity index 63% rename from lib/cm_module/views/forms/work_order/work_order_form_view.dart rename to lib/modules/cm_module/views/forms/work_order/work_order_form_view.dart index aa905e78..e66501d2 100644 --- a/lib/cm_module/views/forms/work_order/work_order_form_view.dart +++ b/lib/modules/cm_module/views/forms/work_order/work_order_form_view.dart @@ -10,12 +10,12 @@ import 'package:test_sa/extensions/widget_extensions.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/default_app_bar.dart'; -import 'package:test_sa/cm_module/views/forms/work_order/components/asset_conditon_view.dart'; -import 'package:test_sa/cm_module/views/forms/work_order/components/attachments_view.dart'; -import 'package:test_sa/cm_module/views/forms/work_order/components/time_duration_view.dart'; -class WorkOrderFormView extends StatefulWidget { +import 'components/asset_conditon_view.dart'; +import 'components/attachments_view.dart'; +import 'components/time_duration_view.dart'; +class WorkOrderFormView extends StatefulWidget { const WorkOrderFormView({Key? key}) : super(key: key); @override @@ -31,71 +31,9 @@ class _WorkOrderFormViewState extends State { @override void initState() { - WidgetsBinding.instance.addPostFrameCallback((_) { - getInitialData(); - }); super.initState(); } - Future getInitialData() async { - // ListingVm listingVm = Provider.of(context, listen: false); - // listingVm.listingPropertyType = widget.arguments['listingType']; - // if (widget.arguments['formType'] == AppConstants.addListing) { - // listingVm.landLordModel = LandLordModel(); - // listingVm.listing['propertyType'] = widget.arguments['listingType']; - // if (listingVm.listing['propertyType'] == AppConstants.sell) { - // listingVm.listingParameter = 'sellParameter'; - // listingVm.listing[listingVm.listingParameter] = - // SellParameter().toJson(); - // listingVm.listing[listingVm.listingParameter]?['ownerDocs'] = []; - // } - // if (listingVm.listing['propertyType'] == AppConstants.rent) { - // listingVm.listingParameter = 'rentParameter'; - // listingVm.listing[listingVm.listingParameter] = - // RentParameter().toJson(); - // listingVm.listing[listingVm.listingParameter]?['ownerDocs'] = []; - // } - // } else if (widget.arguments['formType'] == AppConstants.editListing) { - // if (listingVm.listing['propertyType'] == AppConstants.sell) { - // listingVm.listingParameter = 'sellParameter'; - // } - // if (listingVm.listing['propertyType'] == AppConstants.rent) { - // listingVm.listingParameter = 'rentParameter'; - // } - // if (widget.arguments['isDuplicate'] == true) { - // FormUtils.setDuplicateValues( - // listingVm: listingVm, listType: widget.arguments['listingType']); - // } - // listingVm.formLocationController.clear(); - // listingVm.formCommunityInitialValue = - // await FormUtils.setLocation(listingVm.listing, context); - // listingVm.formLocationController.text = - // listingVm.formCommunityInitialValue ?? ''; - // - // listingVm.formAvailabilityDate = - // listingVm.listing[listingVm.listingParameter]['availabilityDate'] ?? - // ''; - // listingVm.formBuildYearDate = - // listingVm.listing[listingVm.listingParameter]['buildYear'] ?? ''; - // - // listingVm.listing['photos'] ??= []; - // listingVm.listing[listingVm.listingParameter]['ownerDocs'] ??= []; - // } - // GeneralUtil.initilizePortalsSwitch(listingVm: listingVm); - // listingVm.getTenantExtent(); - // await listingVm.getRegion(); - // if (listingVm.listing[listingVm.listingParameter] - // ['propertyFinderLocation'] != - // null) { - // await listingVm.getPropertyFinderLocationList( - // searchQuery: listingVm.listing[listingVm.listingParameter] - // ['propertyFinderLocation']); - // } - // await listingVm.getWaterMarkImage(); - // await listingVm.getDeveloper(); - // await GeneralUtil.loadPortalsLocationsData(listingVm); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -135,7 +73,7 @@ class _WorkOrderFormViewState extends State { Widget bottomContainerWidget() { return Container( - padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth,vertical: 16.toScreenHeight), + padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight), color: AppColor.white10, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -230,11 +168,11 @@ class _WorkOrderFormViewState extends State { Widget getStepWidget() { switch (activeStep) { case 0: - return const TimeDurationView(); + return const TimeDurationView(); case 1: - return AssetConditionView(); + return AssetConditionView(); case 2: - return AttachmentView(); + return AttachmentView(); default: return const SizedBox(); } diff --git a/lib/cm_module/views/nurse/create_new_request_view.dart b/lib/modules/cm_module/views/nurse/create_new_request_view.dart similarity index 98% rename from lib/cm_module/views/nurse/create_new_request_view.dart rename to lib/modules/cm_module/views/nurse/create_new_request_view.dart index de785a51..776b2a2b 100644 --- a/lib/cm_module/views/nurse/create_new_request_view.dart +++ b/lib/modules/cm_module/views/nurse/create_new_request_view.dart @@ -17,6 +17,8 @@ import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_mo import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart'; import 'package:test_sa/models/service_request/service_request.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.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_lazy_loading.dart'; @@ -24,8 +26,6 @@ import 'package:test_sa/providers/service_request_providers/equipment_status_pro import 'package:test_sa/providers/service_request_providers/priority_provider.dart'; import 'package:test_sa/providers/service_request_providers/requested_through_provider.dart'; import 'package:test_sa/providers/service_request_providers/type_of_request_provider.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/pages/user/requests/pending_requests_screen.dart'; import 'package:test_sa/views/widgets/bottom_sheets/pending_request_bottom_sheet.dart'; import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; diff --git a/lib/cm_module/views/service_request_detail_main_view.dart b/lib/modules/cm_module/views/service_request_detail_main_view.dart similarity index 95% rename from lib/cm_module/views/service_request_detail_main_view.dart rename to lib/modules/cm_module/views/service_request_detail_main_view.dart index b9d465f8..7d56634e 100644 --- a/lib/cm_module/views/service_request_detail_main_view.dart +++ b/lib/modules/cm_module/views/service_request_detail_main_view.dart @@ -8,11 +8,11 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/work_order_next_step.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; +import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; +import 'package:test_sa/modules/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; -import 'package:test_sa/cm_module/views/components/bottom_sheets/service_request_bottomsheet.dart'; -import 'package:test_sa/cm_module/views/components/history_log_view.dart'; +import 'components/history_log_view.dart'; import 'components/service_request_detail_view.dart'; class ServiceRequestDetailMain extends StatefulWidget { diff --git a/lib/views/pages/user/ppm/ppm_details_page.dart b/lib/modules/pm_module/ppm_wo/ppm_details_page.dart similarity index 94% rename from lib/views/pages/user/ppm/ppm_details_page.dart rename to lib/modules/pm_module/ppm_wo/ppm_details_page.dart index 0ad5d7a0..b39180fd 100644 --- a/lib/views/pages/user/ppm/ppm_details_page.dart +++ b/lib/modules/pm_module/ppm_wo/ppm_details_page.dart @@ -8,14 +8,14 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/views/pages/user/ppm/update_ppm/update_ppm.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; -import '../../../../controllers/providers/api/user_provider.dart'; -import '../../../../models/enums/user_types.dart'; -import '../../../../new_views/app_style/app_color.dart'; -import '../../../../new_views/common_widgets/app_filled_button.dart'; -import '../../../widgets/requests/request_status.dart'; +import '../../../../../controllers/providers/api/user_provider.dart'; +import '../../../../../models/enums/user_types.dart'; +import '../../../../../new_views/app_style/app_color.dart'; +import '../../../../../new_views/common_widgets/app_filled_button.dart'; +import 'update_ppm/update_ppm.dart'; class PpmDetailsPage extends StatefulWidget { static const String id = "/visit-details"; diff --git a/lib/modules/pm_module/ppm_wo/ppm_page.dart b/lib/modules/pm_module/ppm_wo/ppm_page.dart new file mode 100644 index 00000000..b5d7254c --- /dev/null +++ b/lib/modules/pm_module/ppm_wo/ppm_page.dart @@ -0,0 +1,65 @@ +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; +// 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/models/ppm/ppm.dart'; +// import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; +// import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; +// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +// import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; +// import 'package:test_sa/views/widgets/ppm/ppm_item.dart'; +////todo @delete +// class PpmPage extends StatefulWidget { +// static const String id = "/ppm_page"; +// +// const PpmPage({Key? key}) : super(key: key); +// +// @override +// _PpmPageState createState() => _PpmPageState(); +// } +// +// class _PpmPageState extends State with TickerProviderStateMixin { +// late PpmProvider _visitsProvider; +// late UserProvider _userProvider; +// late SettingProvider _settingProvider; +// +// @override +// Widget build(BuildContext context) { +// _visitsProvider = Provider.of(context); +// _settingProvider = Provider.of(context); +// _userProvider = Provider.of(context); +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.preventiveMaintenance), +// body: SafeArea( +// child: LoadingManager( +// isLoading: _visitsProvider.isLoading, +// isFailedLoading: _visitsProvider.ppms == null, +// stateCode: _visitsProvider.stateCode, +// onRefresh: () async { +// _visitsProvider.reset(); +// await _visitsProvider.getVisits(user: _userProvider.user!, host: _settingProvider.host!); +// }, +// child: _visitsProvider.ppms?.isEmpty ?? true +// ? NoDataFound(message: context.translation.noVisitsFound) +// : LazyLoading( +// nextPage: _visitsProvider.nextPage, +// onLazyLoad: () async { +// await _visitsProvider.getVisits(user: _userProvider.user!, host: _settingProvider.host!); +// }, +// child: ListView.builder( +// itemCount: _visitsProvider.ppms!.length, +// padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), +// itemBuilder: (context, itemIndex) { +// Ppm ppm = _visitsProvider.ppms![itemIndex]; +// return Padding(padding: const EdgeInsets.only(bottom: 8.0), child: PpmItem(ppm: ppm)); +// }, +// ), +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_calibration_tools_form.dart similarity index 97% rename from lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart rename to lib/modules/pm_module/ppm_wo/update_ppm/ppm_calibration_tools_form.dart index 9684d49a..fd3d3913 100644 --- a/lib/views/pages/user/ppm/update_ppm/ppm_calibration_tools_form.dart +++ b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_calibration_tools_form.dart @@ -11,12 +11,11 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.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/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/pentry/calibration_tool_asset_picker.dart'; -import '../../../../../new_views/app_style/app_color.dart'; -import '../../../../widgets/date_and_time/date_picker.dart'; - class PpmCalibrationToolsForm extends StatefulWidget { List? models; diff --git a/lib/modules/pm_module/ppm_wo/update_ppm/ppm_external_details_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_external_details_form.dart new file mode 100644 index 00000000..757a7f90 --- /dev/null +++ b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_external_details_form.dart @@ -0,0 +1,273 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/ppm_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/plan_preventive_visit/plan_preventive_visit_model.dart'; +import 'package:test_sa/models/service_request/supplier_details.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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/new_views/common_widgets/single_item_drop_down_menu.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; +import 'package:test_sa/providers/work_order/vendor_provider.dart'; +import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; + +class PpmExternalDetailsForm extends StatefulWidget { + final List? models; + + const PpmExternalDetailsForm({Key? key, this.models = const []}) : super(key: key); + + @override + State createState() => _PpmExternalDetailsFormState(); +} + +class _PpmExternalDetailsFormState extends State { + bool isLoading = false; + +//TODO add loader when adding or deleting item.. + + void _addNewEntry() { + setState(() { + // isLoading = true; + widget.models!.add(PreventiveVisitSuppliers(id: 0)); + // Future.delayed(Duration(seconds: 1)).whenComplete(() { + // setState(() { + // isLoading = false; + // }); + // }); + }); + } + + void _removeEntry(int index) { + setState(() { + isLoading = true; + widget.models!.removeAt(index); + // isLoading = false; + }); + } + + @override + Widget build(BuildContext context) { + final ppmProvider = Provider.of(context, listen: false); + return ListView.builder( + itemCount: widget.models!.length + 1, + padding: const EdgeInsets.all(16), + itemBuilder: (context, index) { + if (index == widget.models!.length) { + return Visibility( + visible: !ppmProvider.isReadOnly, + child: AppFilledButton( + label: "Add More External Details".addTranslation, + maxWidth: true, + textColor: AppColor.black10, + buttonColor: context.isDark ? AppColor.neutral60 : AppColor.white10, + icon: Icon(Icons.add_circle, color: AppColor.blueStatus(context)), + showIcon: true, + onPressed: _addNewEntry, + ), + ); + } + // return !isLoading + // ? + return ExternalDetailItem( + model: widget.models![index], + index: index, + onRemove: () => _removeEntry(index), + ); + // : const ALoading(); + }, + ); + } +} + +class ExternalDetailItem extends StatefulWidget { + final PreventiveVisitSuppliers model; + final VoidCallback onRemove; + final int index; + + const ExternalDetailItem({ + Key? key, + required this.model, + required this.onRemove, + required this.index, + }) : super(key: key); + + @override + State createState() => _ExternalDetailItemState(); +} + +class _ExternalDetailItemState extends State { + TextEditingController? controller; + PpmProvider? _ppmProvider; + + @override + void initState() { + controller = TextEditingController(text: widget.model.workingHours != null ? widget.model.workingHours.toString() : ''); + _ppmProvider = Provider.of(context, listen: false); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + margin: EdgeInsets.only(bottom: 16.toScreenHeight), + decoration: BoxDecoration( + color: AppColor.background(context), + borderRadius: BorderRadius.circular(20), + boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)], + ), + child: IgnorePointer( + ignoring: _ppmProvider!.isReadOnly, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + (widget.index == 0 ? "1 /4 . External Details" : "").heading5(context), + Container( + height: 32, + width: 32, + padding: const EdgeInsets.all(6), + child: "trash".toSvgAsset(height: 20, width: 20), + ).onPress(() { + widget.onRemove(); + }), + ], + ), + 16.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.supplier, + initialValue: widget.model.supplier, + backgroundColor: AppColor.neutral100, + showAsBottomSheet: true, + showShadow: false, + onSelect: (supplier) { + if (supplier != null) { + setState(() { + widget.model.supplier = supplier; + }); + } + }, + ), + 8.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.supplierEngineer, + enabled: widget.model.supplier != null, + backgroundColor: AppColor.neutral100, + initialValue: widget.model.suppPerson, + staticData: widget.model.supplier?.suppPersons, + showAsBottomSheet: true, + showShadow: false, + onSelect: (suppPerson) { + if (suppPerson != null) { + widget.model.suppPerson = suppPerson; + } + }, + ), + 8.height, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + ADatePicker( + label: context.translation.startTime, + hideShadow: true, + backgroundColor: AppColor.neutral100, + date: widget.model.startDateTime, + formatDateWithTime: true, + onDatePicker: (selectedDate) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + setState(() { + widget.model.startDateTime = selectedDateTime; + }); + widget.model.endDateTime = null; + controller?.clear(); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: widget.model.startDateTime, + endTime: widget.model.endDateTime, + workingHoursController: controller!, + updateModel: (hours) { + widget.model.workingHours = hours; + }, + ); + } + }); + }, + ).expanded, + 8.width, + ADatePicker( + label: context.translation.endTime, + hideShadow: true, + backgroundColor: AppColor.neutral100, + date: widget.model.endDateTime, + formatDateWithTime: true, + onDatePicker: (selectedDate) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + if (widget.model.startDateTime != null && selectedDateTime.isBefore(widget.model.startDateTime!)) { + "End Date time must be greater than start date".showToast; + return; + } + setState(() { + widget.model.endDateTime = selectedDateTime; + }); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: widget.model.startDateTime, + endTime: widget.model.endDateTime, + workingHoursController: controller!, + updateModel: (hours) { + widget.model.workingHours = hours; + }, + ); + } + }); + }, + ).expanded, + ], + ), + 8.height, + AppTextFormField( + labelText: context.translation.workingHours, + backgroundColor: AppColor.neutral80, + controller: controller, + textAlign: TextAlign.center, + enable: false, + showShadow: false, + style: Theme.of(context).textTheme.titleMedium, + ), + 8.height, + ], + ), + ), + ); + } +} diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_pm_check_list_form.dart similarity index 100% rename from lib/views/pages/user/ppm/update_ppm/ppm_pm_check_list_form.dart rename to lib/modules/pm_module/ppm_wo/update_ppm/ppm_pm_check_list_form.dart diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_pm_kits_form.dart similarity index 95% rename from lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart rename to lib/modules/pm_module/ppm_wo/update_ppm/ppm_pm_kits_form.dart index 516250a5..e7ca9f0d 100644 --- a/lib/views/pages/user/ppm/update_ppm/ppm_pm_kits_form.dart +++ b/lib/modules/pm_module/ppm_wo/update_ppm/ppm_pm_kits_form.dart @@ -8,10 +8,10 @@ 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/plan_preventive_visit/plan_preventive_visit_model.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/views/widgets/parts/auto_complete_parts_field.dart'; -import '../../../../../new_views/app_style/app_color.dart'; -import '../../../../../new_views/common_widgets/app_filled_button.dart'; -import '../../../../widgets/parts/auto_complete_parts_field.dart'; class PpmPMKitsForm extends StatefulWidget { final List? models; diff --git a/lib/views/pages/user/ppm/update_ppm/update_ppm.dart b/lib/modules/pm_module/ppm_wo/update_ppm/update_ppm.dart similarity index 97% rename from lib/views/pages/user/ppm/update_ppm/update_ppm.dart rename to lib/modules/pm_module/ppm_wo/update_ppm/update_ppm.dart index 7678bdbb..f7808c17 100644 --- a/lib/views/pages/user/ppm/update_ppm/update_ppm.dart +++ b/lib/modules/pm_module/ppm_wo/update_ppm/update_ppm.dart @@ -2,24 +2,22 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/ppm_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/plan_preventive_visit/plan_preventive_visit_model.dart'; import 'package:test_sa/models/ppm/ppm.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; - -import 'package:test_sa/views/pages/user/ppm/update_ppm/ppm_external_details_form.dart'; - -import '../../../../../extensions/text_extensions.dart'; import 'ppm_calibration_tools_form.dart'; +import 'ppm_external_details_form.dart'; import 'ppm_pm_check_list_form.dart'; import 'ppm_pm_kits_form.dart'; import 'wo_info_form.dart'; diff --git a/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart similarity index 98% rename from lib/views/pages/user/ppm/update_ppm/wo_info_form.dart rename to lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart index 55856ba4..11bc81b8 100644 --- a/lib/views/pages/user/ppm/update_ppm/wo_info_form.dart +++ b/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; @@ -11,13 +10,17 @@ import 'package:test_sa/models/device/model_definition.dart'; import 'package:test_sa/models/device/supplier.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.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'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; +import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/ppm_asset_availability_provider.dart'; import 'package:test_sa/providers/ppm_electrical_safety_provider.dart'; import 'package:test_sa/providers/ppm_service_provider.dart'; @@ -28,11 +31,7 @@ import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/models/device/asset.dart'; - -import '../../../../../models/lookup.dart'; -import '../../../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; -import '../../../../widgets/timer/app_timer.dart'; +import 'package:test_sa/views/widgets/timer/app_timer.dart'; class WoInfoForm extends StatefulWidget { // final Ppm model; diff --git a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_inspection_card.dart b/lib/modules/pm_module/recurrent_wo/components/room_inspection_card.dart similarity index 100% rename from lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_inspection_card.dart rename to lib/modules/pm_module/recurrent_wo/components/room_inspection_card.dart diff --git a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_tabs_widget.dart b/lib/modules/pm_module/recurrent_wo/components/room_tabs_widget.dart similarity index 96% rename from lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_tabs_widget.dart rename to lib/modules/pm_module/recurrent_wo/components/room_tabs_widget.dart index cbf5c9c7..d74ed962 100644 --- a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_tabs_widget.dart +++ b/lib/modules/pm_module/recurrent_wo/components/room_tabs_widget.dart @@ -5,9 +5,10 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/ppm/recurrent_wo.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/room_inspection_card.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +import 'room_inspection_card.dart'; + class RoomTabsWidget extends StatefulWidget { final RecurrentWoData? model; diff --git a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/task_info_widget.dart b/lib/modules/pm_module/recurrent_wo/components/task_info_widget.dart similarity index 98% rename from lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/task_info_widget.dart rename to lib/modules/pm_module/recurrent_wo/components/task_info_widget.dart index c57408cb..b2b86846 100644 --- a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/task_info_widget.dart +++ b/lib/modules/pm_module/recurrent_wo/components/task_info_widget.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.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'; @@ -8,6 +7,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/ppm/recurrent_wo.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; diff --git a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart b/lib/modules/pm_module/recurrent_wo/recurrent_work_order_view.dart similarity index 96% rename from lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart rename to lib/modules/pm_module/recurrent_wo/recurrent_work_order_view.dart index 1703a525..759d4db6 100644 --- a/lib/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart +++ b/lib/modules/pm_module/recurrent_wo/recurrent_work_order_view.dart @@ -5,17 +5,17 @@ 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/ppm/recurrent_wo.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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/components/task_info_widget.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import '../../../../../../controllers/providers/api/all_requests_provider.dart'; import 'components/room_tabs_widget.dart'; +import 'components/task_info_widget.dart'; class RecurrentWorkOrderView extends StatefulWidget { static const String routeName = "/recurrent_wo"; diff --git a/lib/views/pages/user/tasks_request/create_task_view.dart b/lib/modules/tm_module/tasks_wo/create_task_view.dart similarity index 99% rename from lib/views/pages/user/tasks_request/create_task_view.dart rename to lib/modules/tm_module/tasks_wo/create_task_view.dart index b50e1f10..95b9d17a 100644 --- a/lib/views/pages/user/tasks_request/create_task_view.dart +++ b/lib/modules/tm_module/tasks_wo/create_task_view.dart @@ -16,6 +16,7 @@ import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/models/new_models/task_request/task_type_model.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.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'; @@ -24,7 +25,6 @@ import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/task_request_provider/task_job_provider.dart'; import 'package:test_sa/providers/task_request_provider/task_request_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; diff --git a/lib/views/pages/user/tasks_request/task_request_detail_view.dart b/lib/modules/tm_module/tasks_wo/task_request_detail_view.dart similarity index 98% rename from lib/views/pages/user/tasks_request/task_request_detail_view.dart rename to lib/modules/tm_module/tasks_wo/task_request_detail_view.dart index c526043d..8c4153e1 100644 --- a/lib/views/pages/user/tasks_request/task_request_detail_view.dart +++ b/lib/modules/tm_module/tasks_wo/task_request_detail_view.dart @@ -10,15 +10,15 @@ import 'package:test_sa/models/all_requests_and_count_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/providers/task_request_provider/task_request_provider.dart'; -import 'package:test_sa/views/pages/user/tasks_request/update_task_request_view.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; import '../../../../controllers/providers/api/user_provider.dart'; import '../../../../models/enums/user_types.dart'; import '../../../../new_views/app_style/app_color.dart'; import '../../../../new_views/common_widgets/app_filled_button.dart'; -import '../../../widgets/requests/request_status.dart'; +import 'update_task_request_view.dart'; class TaskRequestDetailsView extends StatefulWidget { static const String id = "/task-request-detail"; diff --git a/lib/views/pages/user/tasks_request/task_request_item_view.dart b/lib/modules/tm_module/tasks_wo/task_request_item_view.dart similarity index 92% rename from lib/views/pages/user/tasks_request/task_request_item_view.dart rename to lib/modules/tm_module/tasks_wo/task_request_item_view.dart index d56e3cc5..3cc6bd05 100644 --- a/lib/views/pages/user/tasks_request/task_request_item_view.dart +++ b/lib/modules/tm_module/tasks_wo/task_request_item_view.dart @@ -5,16 +5,12 @@ 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/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'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/task_request_detail_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/update_task_request_view.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; +import 'task_request_detail_view.dart'; + class TaskRequestItemView extends StatelessWidget { final Data? requestData; final RequestsDetails? requestDetails; diff --git a/lib/views/pages/user/tasks_request/update_task_request_view.dart b/lib/modules/tm_module/tasks_wo/update_task_request_view.dart similarity index 98% rename from lib/views/pages/user/tasks_request/update_task_request_view.dart rename to lib/modules/tm_module/tasks_wo/update_task_request_view.dart index 5d9c7047..3ca1f8f6 100644 --- a/lib/views/pages/user/tasks_request/update_task_request_view.dart +++ b/lib/modules/tm_module/tasks_wo/update_task_request_view.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.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'; @@ -15,6 +14,8 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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_lazy_loading.dart'; @@ -25,8 +26,6 @@ import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/task_request_provider/task_job_provider.dart'; import 'package:test_sa/providers/task_request_provider/task_request_provider.dart'; - -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; @@ -186,11 +185,11 @@ class _UpdateTaskRequestState extends State { taskModel?.statusValue = status; if (validate(model: taskModel)) { showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - List attachement = []; + List attachment = []; for (var item in _files) { - attachement.add(TaskJobAttachment(id: 0, name: ServiceRequestUtils.isLocalUrl(item.path) ? "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}" : item.path)); + attachment.add(TaskJobAttachment(id: 0, name: ServiceRequestUtils.isLocalUrl(item.path) ? "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}" : item.path)); } - taskModel?.taskJobAttachments = attachement; + taskModel?.taskJobAttachments = attachment; taskModel?.timerModelList?.forEach((timer) { int durationInSecond = timer.endAt!.difference(timer.startAt!).inSeconds; taskModel.taskJobActivityEngineerTimers?.add( diff --git a/lib/new_views/pages/gas_refill_request_form.dart b/lib/new_views/pages/gas_refill_request_form.dart index 916e7b78..9ed94fb9 100644 --- a/lib/new_views/pages/gas_refill_request_form.dart +++ b/lib/new_views/pages/gas_refill_request_form.dart @@ -1,9 +1,10 @@ import 'dart:convert'; import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; +import 'package:test_sa/controllers/providers/api/gas_refill_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'; @@ -13,20 +14,19 @@ import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/models/new_models/mapped_sites.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/gas_request_providers/cylinder_size_provider.dart'; import 'package:test_sa/providers/gas_request_providers/cylinder_type_provider.dart'; import 'package:test_sa/providers/gas_request_providers/gas_types_provider.dart'; import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; - -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; -import '../../controllers/providers/api/gas_refill_provider.dart'; -import '../common_widgets/default_app_bar.dart'; class GasRefillRequestForm extends StatefulWidget { static const String routeName = "/gas_refill_request_form"; 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 c70caf19..afa41014 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 @@ -4,11 +4,12 @@ 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/text_extensions.dart'; +import 'package:test_sa/modules/cm_module/views/nurse/create_new_request_view.dart'; +import 'package:test_sa/modules/tm_module/tasks_wo/create_task_view.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/pages/gas_refill_request_form.dart'; -import 'package:test_sa/cm_module/views/nurse/create_new_request_view.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 { final bool isEngineer; 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 4b214131..2d41f193 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 @@ -6,10 +6,9 @@ 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 '../../../../views/pages/user/ppm/ppm_details_page.dart'; -import '../../../../views/widgets/requests/request_status.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; class PpmItemView extends StatelessWidget { final Data? requestData; 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 905026a4..b03643d2 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 @@ -6,10 +6,10 @@ 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/recurrent_wo/recurrent_work_order_view.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; -import '../../../../views/widgets/requests/request_status.dart'; class RecurrentWoItemView extends StatelessWidget { final Data? requestData; 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 c22878a3..ace4047f 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 @@ -1,14 +1,13 @@ 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/modules/tm_module/tasks_wo/task_request_item_view.dart'; import 'package:test_sa/new_views/app_style/app_color.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'; import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/task_request_detail_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/task_request_item_view.dart'; class RequestPaginatedListview extends StatelessWidget { final List list; diff --git a/lib/new_views/pages/land_page/requests/service_request_item_view.dart b/lib/new_views/pages/land_page/requests/service_request_item_view.dart index 4f543b1f..7d18b013 100644 --- a/lib/new_views/pages/land_page/requests/service_request_item_view.dart +++ b/lib/new_views/pages/land_page/requests/service_request_item_view.dart @@ -10,10 +10,9 @@ 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/cm_module/views/service_request_detail_main_view.dart'; - -import '../../../../views/widgets/requests/request_status.dart'; -import '../../../app_style/app_color.dart'; +import 'package:test_sa/modules/cm_module/views/service_request_detail_main_view.dart'; +import 'package:test_sa/new_views/app_style/app_color.dart'; +import 'package:test_sa/views/widgets/requests/request_status.dart'; class ServiceRequestItemView extends StatelessWidget { final Data? requestData; 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 0e4a6d88..980a00eb 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,12 +4,12 @@ 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/modules/tm_module/tasks_wo/task_request_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'; import 'package:test_sa/new_views/pages/land_page/requests/service_request_item_view.dart'; -import 'package:test_sa/views/pages/user/tasks_request/task_request_item_view.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; class RequestItemViewList extends StatelessWidget { @@ -27,18 +27,18 @@ class RequestItemViewList extends StatelessWidget { shrinkWrap: true, itemBuilder: (cxt, index) { if (isLoading) return const SizedBox().toRequestShimmer(cxt, isLoading); - switch(list[index].transactionType){ + switch (list[index].transactionType) { case 1: return ServiceRequestItemView(requestDetails: list[index]); case 2: - return GasRefillItemView(requestDetails: list[index]); + return GasRefillItemView(requestDetails: list[index]); case 3: return DeviceItemView(requestDetails: list[index]); case 4: return PpmItemView(requestDetails: list[index]); case 5: return RecurrentWoItemView(requestDetails: list[index]); - case 6: + case 6: return TaskRequestItemView(requestDetails: list[index]); default: Container( @@ -46,26 +46,7 @@ class RequestItemViewList extends StatelessWidget { width: double.infinity, color: Colors.grey, ); - } - // bool isServiceRequest = list[index].transactionType == 1; - // bool isGasRefill = list[index].transactionType == 2; - // bool isAssetTransfer = list[index].transactionType == 3; - // bool isPPMs = list[index].transactionType == 4; - // - // return isServiceRequest - // ? ServiceRequestItemView(requestDetails: list[index]) - // : isGasRefill - // ? GasRefillItemView(requestDetails: list[index]) - // : isPPMs - // ? PpmItemView(requestDetails: list[index]) - // : isAssetTransfer - // ? AssetItemView(requestDetails: list[index]) - // : Container( - // height: 100, - // width: double.infinity, - // color: Colors.grey, - // ); }, separatorBuilder: (cxt, index) => 16.height, itemCount: isLoading ? 6 : list.length); diff --git a/lib/views/pages/device_transfer/create__device_transfer_request.dart b/lib/views/pages/device_transfer/create__device_transfer_request.dart index 312e6e58..eaf9511e 100644 --- a/lib/views/pages/device_transfer/create__device_transfer_request.dart +++ b/lib/views/pages/device_transfer/create__device_transfer_request.dart @@ -17,12 +17,12 @@ import 'package:test_sa/models/lookup.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'; +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_text_form_field.dart'; import 'package:test_sa/providers/ppm_service_provider.dart'; -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; + import 'package:test_sa/views/pages/user/requests/pending_requests_screen.dart'; -import 'package:test_sa/views/widgets/bottom_sheets/pending_request_bottom_sheet.dart'; import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import '../../../models/new_models/building.dart'; diff --git a/lib/views/pages/device_transfer/track_device_transfer.dart b/lib/views/pages/device_transfer/track_device_transfer.dart index 2861b93f..80014944 100644 --- a/lib/views/pages/device_transfer/track_device_transfer.dart +++ b/lib/views/pages/device_transfer/track_device_transfer.dart @@ -1,64 +1,64 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; -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/views/widgets/device_trancfer/device_transfer_list.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; - -import '../../../new_views/common_widgets/default_app_bar.dart'; - -class TrackDeviceTransferPage extends StatefulWidget { - static const String id = "/track-device-transfer"; - - const TrackDeviceTransferPage({Key? key}) : super(key: key); - - @override - State createState() => _TrackDeviceTransferPageState(); -} - -class _TrackDeviceTransferPageState extends State with TickerProviderStateMixin { - late DeviceTransferProvider _deviceTransferProvider; - late UserProvider _userProvider; - late SettingProvider _settingProvider; - - @override - Widget build(BuildContext context) { - _deviceTransferProvider = Provider.of(context); - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.deviceTransfer), - body: SafeArea( - child: LoadingManager( - isLoading: _deviceTransferProvider.isLoading, - isFailedLoading: _deviceTransferProvider.items == null, - stateCode: _deviceTransferProvider.stateCode, - onRefresh: () async { - _deviceTransferProvider.reset(); - await _deviceTransferProvider.getRequests(user: _userProvider.user!, host: _settingProvider.host!); - }, - child: Stack( - children: [ - Column( - children: [ - Expanded( - child: DeviceTransferList( - nextPage: _deviceTransferProvider.nextPage, - onLazyLoad: () async { - await _deviceTransferProvider.getRequests(user: _userProvider.user!, host: _settingProvider.host!); - }, - items: _deviceTransferProvider.items!, - ), - ), - ], - ), - ], - ), - ), - ), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; +// 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/views/widgets/device_trancfer/device_transfer_list.dart'; +// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +// +// import '../../../new_views/common_widgets/default_app_bar.dart'; +// +// class TrackDeviceTransferPage extends StatefulWidget { +// static const String id = "/track-device-transfer"; +// +// const TrackDeviceTransferPage({Key? key}) : super(key: key); +// +// @override +// State createState() => _TrackDeviceTransferPageState(); +// } +// +// class _TrackDeviceTransferPageState extends State with TickerProviderStateMixin { +// late DeviceTransferProvider _deviceTransferProvider; +// late UserProvider _userProvider; +// late SettingProvider _settingProvider; +//// //todo @delete +// @override +// Widget build(BuildContext context) { +// _deviceTransferProvider = Provider.of(context); +// _userProvider = Provider.of(context); +// _settingProvider = Provider.of(context); +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.deviceTransfer), +// body: SafeArea( +// child: LoadingManager( +// isLoading: _deviceTransferProvider.isLoading, +// isFailedLoading: _deviceTransferProvider.items == null, +// stateCode: _deviceTransferProvider.stateCode, +// onRefresh: () async { +// _deviceTransferProvider.reset(); +// await _deviceTransferProvider.getRequests(user: _userProvider.user!, host: _settingProvider.host!); +// }, +// child: Stack( +// children: [ +// Column( +// children: [ +// Expanded( +// child: DeviceTransferList( +// nextPage: _deviceTransferProvider.nextPage, +// onLazyLoad: () async { +// await _deviceTransferProvider.getRequests(user: _userProvider.user!, host: _settingProvider.host!); +// }, +// items: _deviceTransferProvider.items!, +// ), +// ), +// ], +// ), +// ], +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index bab6a7c0..b6cd80de 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -1,356 +1,22 @@ -//older code. -// import 'dart:convert'; -// import 'dart:io'; -// -// import 'package:flutter/foundation.dart'; -// import 'package:flutter/material.dart'; -// import 'package:fluttertoast/fluttertoast.dart'; -// import 'package:provider/provider.dart'; -// import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'; -// 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/widget_extensions.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'; -// import 'package:test_sa/views/app_style/sizing.dart'; -// import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; -// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -// -// import '../../../extensions/text_extensions.dart'; -// import '../../../models/lookup.dart'; -// import '../../../models/ppm/ppm.dart'; -// import '../../../new_views/app_style/app_color.dart'; -// import '../../../new_views/common_widgets/app_text_form_field.dart'; -// import '../../../new_views/common_widgets/default_app_bar.dart'; -// import '../../../new_views/common_widgets/single_item_drop_down_menu.dart'; -// import '../../widgets/e_signature/e_signature.dart'; -// import '../../widgets/timer/app_timer.dart'; -// -// class UpdateDeviceTransfer extends StatefulWidget { -// final AssetTransfer model; -// final bool isSender; -// -// const UpdateDeviceTransfer({Key? key, required this.model, required this.isSender}) : super(key: key); -// -// @override -// State createState() => _UpdateDeviceTransferState(); -// } -// -// class _UpdateDeviceTransferState extends State { -// final bool _isLoading = false; -// bool _validate = false; -// late UserProvider _userProvider; -// late SettingProvider _settingProvider; -// Uint8List? _signature; -// late AssetTransferProvider _deviceTransferProvider; -// final TextEditingController _requestedQuantityController = TextEditingController(); -// final AssetTransfer _formModel = AssetTransfer(); -// final GlobalKey _formKey = GlobalKey(); -// final GlobalKey _scaffoldKey = GlobalKey(); -// -// List _files = []; -// -// _update() async { -// if (widget.isSender) { -// _formModel.senderVisitTimers?.add( -// VisitTimers( -// id: 0, -// startDateTime: _formModel.tbsTimer?.startAt?.toIso8601String(), -// endDateTime: _formModel.tbsTimer?.endAt?.toIso8601String(), -// workingHours: ((_formModel.tbsTimer?.durationInSecond ?? 0) / 60 / 60), -// ), -// ); -// } else { -// _formModel.receiverVisitTimers?.add( -// VisitTimers( -// id: 0, -// startDateTime: _formModel.tbsTimer?.startAt?.toIso8601String(), -// endDateTime: _formModel.tbsTimer?.endAt?.toIso8601String(), -// workingHours: ((_formModel.tbsTimer?.durationInSecond ?? 0) / 60 / 60), -// ), -// ); -// } -// -// if (_formModel.tbsTimer?.startAt == null) { -// await Fluttertoast.showToast(msg: "Working Hours Required"); -// return false; -// } -// if (_formModel.tbsTimer?.endAt == null || isTimerRunning) { -// await Fluttertoast.showToast(msg: "Please Stop The Timer"); -// return false; -// } -// _validate = true; -// if (!(_formKey.currentState!.validate())) { -// setState(() {}); -// return false; -// } -// _formKey.currentState!.save(); -// -// if (widget.isSender) { -// _formModel.senderAttachments = []; -// } else { -// _formModel.receiverAttachments = []; -// } -// -// try { -// for (var file in _files) { -// String attachmentName = file.path; -// if (attachmentName.contains("/")) { -// attachmentName = file.path.split("/").last; -// attachmentName = "$attachmentName|${base64Encode(file.readAsBytesSync())}"; -// } -// -// if (widget.isSender) { -// _formModel.senderAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); -// } else { -// _formModel.receiverAttachments!.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); -// } -// } -// } catch (error) { -// print(error); -// } -// await _deviceTransferProvider.updateRequest(context, assetTransfer: _formModel, isSender: widget.isSender); -// } -// -// @override -// void initState() { -// _formModel.fromDetails(widget.model); -// -// if (widget.isSender) { -// _files = widget.model.senderAttachments?.map((e) => File(e.attachmentName!)).toList() ?? []; -// } else { -// _files = widget.model.receiverAttachments?.map((e) => File(e.attachmentName!)).toList() ?? []; -// } -// -// super.initState(); -// } -// -// @override -// void dispose() { -// _requestedQuantityController.dispose(); -// super.dispose(); -// } -// -// bool isTimerRunning = false; -// -// @override -// Widget build(BuildContext context) { -// _userProvider = Provider.of(context); -// _settingProvider = Provider.of(context); -// _deviceTransferProvider = Provider.of(context, listen: false); -// -// double totalWorkingHours = widget.isSender -// ? (widget.model.senderVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0) -// : (widget.model.receiverVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0); -// -// bool isTimerEnable = widget.isSender -// ? (!(_formModel.senderMachineStatusName?.toLowerCase().contains("close") ?? false) || !(_formModel.senderMachineStatusName?.toLowerCase().contains("complete") ?? false)) -// : (!(_formModel.receiverMachineStatusName?.toLowerCase().contains("close") ?? false) || !(_formModel.receiverMachineStatusName?.toLowerCase().contains("complete") ?? false)); -// -// return Scaffold( -// appBar: DefaultAppBar(title: context.translation.updateRequest), -// key: _scaffoldKey, -// body: SafeArea( -// child: LoadingManager( -// isLoading: _isLoading, -// isFailedLoading: false, -// stateCode: 200, -// onRefresh: () async {}, -// child: Form( -// key: _formKey, -// child: Column( -// children: [ -// SingleChildScrollView( -// padding: EdgeInsets.all(12 * AppStyle.getScaleFactor(context)), -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.stretch, -// children: [ -// _buildCard(), -// 8.height, -// AppTextFormField( -// initialValue: widget.isSender ? _formModel.senderTravelingHours ?? "" : _formModel.receiverTravelingHours ?? "", -// labelText: context.translation.travelingHours, -// onChange: (text) { -// widget.isSender ? _formModel.senderTravelingHours = text : _formModel.receiverTravelingHours = text; -// }, -// onSaved: (value) { -// widget.isSender ? _formModel.senderTravelingHours = value : _formModel.receiverTravelingHours = value; -// //_formModel?.workingHours = double.tryParse(value); -// // _formModel.travelingHours = value; -// }, -// textInputType: TextInputType.number, -// //validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", -// ), -// 8.height, -// if (totalWorkingHours > 0.0) ...[ -// Container( -// height: 50.toScreenHeight, -// padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth), -// alignment: Alignment.centerLeft, -// decoration: BoxDecoration( -// color: context.isDark ? AppColor.neutral40 : AppColor.background(context), -// borderRadius: BorderRadius.circular(10), -// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], -// ), -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// Text( -// "Total Working Time", -// style: Theme.of(context).textTheme.bodySmall?.copyWith(color: context.isDark ? null : AppColor.neutral20, fontWeight: FontWeight.w500), -// ), -// Text( -// " ${formatDuration(totalWorkingHours.round())}", -// style: Theme.of(context).textTheme.bodyLarge, -// ), -// ], -// ), -// ), -// 8.height, -// ], -// AppTimer( -// label: context.translation.workingHours, -// timer: _formModel.tbsTimer, -// enabled: isTimerEnable, -// // enabled: widget.isSender ? _formModel.senderEndDate == null : (_formModel?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false), -// timerProgress: (isRunning) { -// isTimerRunning = isRunning; -// }, -// onChange: (timer) async { -// _formModel.tbsTimer = timer; -// return true; -// }, -// ), -// 8.height, -// Consumer(builder: (context, snapshot, _) { -// return SingleItemDropDownMenu( -// context: context, -// title: widget.isSender ? "Status Sender" : "Status Receiver", //,context.translation.reportStatus, -// initialValue: -// snapshot.items.firstWhere((element) => element.name == (widget.isSender ? _formModel.senderMachineStatusName : _formModel.receiverMachineStatusName), orElse: null), -// onSelect: (value) { -// if (value?.value == 4) { -// "Status cannot be change to ${value?.name}.".addTranslation.showToast; -// setState(() {}); -// return; -// } -// if (widget.isSender) { -// _formModel.senderMachineStatusName = value?.name; -// _formModel.senderMachineStatusId = value?.id; -// } else { -// _formModel.receiverMachineStatusName = value?.name; -// _formModel.receiverMachineStatusId = value?.id; -// } -// setState(() {}); -// }, -// ); -// }), -// 8.height, -// MultiFilesPicker(label: context.translation.attachImage, files: _files), -// 8.height, -// AppTextFormField( -// initialValue: widget.isSender ? _formModel.senderComment ?? "" : _formModel.receiverComment ?? "", -// labelText: context.translation.comments, -// textInputType: TextInputType.multiline, -// alignLabelWithHint: true, -// onSaved: (value) { -// widget.isSender ? _formModel.senderComment = value : _formModel.receiverComment = value; -// }, -// ), -// 8.height, -// ESignature( -// title: "Signature", -// oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature, -// newSignature: _signature, -// onSaved: (signature) { -// _signature = signature; -// if (signature == null || signature.isEmpty) return; -// widget.isSender -// ? _formModel.senderEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" -// : _formModel.receiverEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"; -// }, -// ), -// ], -// ), -// ).expanded, -// Padding( -// padding: const EdgeInsets.all(16.0), -// child: AppFilledButton( -// label: context.translation.update, -// onPressed: _update, -// ), -// ), -// ], -// ), -// ), -// ), -// ), -// ); -// } -// -// _buildCard() { -// return Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// context.translation.transferDetails.heading5(context), -// 8.height, -// '${context.translation.assetName}: ${_formModel.assetName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), -// '${context.translation.requesterName}: ${_formModel.receiverEndUserName?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}'.bodyText(context), -// ], -// ).toShadowContainer(context); -// } -// -// String formatDuration(int seconds) { -// int hours = seconds ~/ 3600; -// int minutes = (seconds % 3600) ~/ 60; -// int remainingSeconds = seconds % 60; -// -// String formattedDuration = ''; -// if (hours > 0) { -// formattedDuration += '$hours hour${hours > 1 ? 's' : ''} '; -// } -// if (minutes > 0) { -// formattedDuration += '$minutes minute${minutes > 1 ? 's' : ''} '; -// } -// if (remainingSeconds > 0) { -// formattedDuration += '$remainingSeconds second${remainingSeconds > 1 ? 's' : ''} '; -// } -// if (formattedDuration.isEmpty) { -// formattedDuration = 'Less than a second'; -// } -// -// return formattedDuration.trim(); -// } -// } - -//.....new design.. - import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/providers/api/device_transfer_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/widget_extensions.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/device/device_transfer.dart'; import 'package:test_sa/models/new_models/assigned_employee.dart'; import 'package:test_sa/models/new_models/assistant_employee.dart'; import 'package:test_sa/models/timer_model.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; +import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; - -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; @@ -403,7 +69,7 @@ class _UpdateDeviceTransferState extends State { _formModel.statusValue = status; _formModel.isSender = widget.isSender; _formModel.assetTransferAttachments = []; - int workingHours = _formModel.tbsTimer?.endAt!.difference(_formModel.tbsTimer!.startAt!).inSeconds?? 0; + int workingHours = _formModel.tbsTimer?.endAt!.difference(_formModel.tbsTimer!.startAt!).inSeconds ?? 0; if (widget.isSender) { _formModel.senderVisitTimers?.add( @@ -473,10 +139,12 @@ class _UpdateDeviceTransferState extends State { : (widget.model.receiverVisitTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDateTime!).difference(DateTime.parse(item.startDateTime!)).inSeconds) ?? 0); bool isTimerEnable = widget.isSender ? (!(_formModel.senderMachineStatusValue == 3)) : (!(_formModel.receiverMachineStatusValue == 3)); return Scaffold( - appBar: DefaultAppBar(title: context.translation.transferAsset, + appBar: DefaultAppBar( + title: context.translation.transferAsset, onWillPopScope: () { _update(status: 0); - },), + }, + ), key: _scaffoldKey, body: SafeArea( child: LoadingManager( diff --git a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart index 5b013604..d6031708 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -1,622 +1,622 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart'; -import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_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/device/asset.dart'; -import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/new_models/assigned_employee.dart'; -import 'package:test_sa/models/new_models/assistant_employee.dart'; -import 'package:test_sa/models/service_request/search_work_order.dart'; -import 'package:test_sa/models/service_request/service_report.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/default_app_bar.dart'; -import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; -import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart'; -import 'package:test_sa/providers/work_order/vendor_provider.dart'; -import 'package:test_sa/views/pages/user/requests/add_supplier_engineer_bottom_sheet.dart'; -import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; -import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; -import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; - -import '../../../attachment.dart'; -import '../../../controllers/api_routes/http_status_manger.dart'; -import '../../../controllers/providers/api/parts_provider.dart'; -import '../../../controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart'; -import '../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; -import '../../../controllers/providers/api/user_provider.dart'; -import '../../../models/service_request/spare_parts.dart'; -import '../../../models/service_request/supp_engineer_work_orders.dart'; -import '../../../models/service_request/supplier_details.dart'; -import '../../../models/service_request/wo_call_request.dart'; -import '../../../new_views/common_widgets/app_lazy_loading.dart'; -import '../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../new_views/common_widgets/single_item_drop_down_menu.dart'; -import '../../../providers/loading_list_notifier.dart'; -import '../../../providers/work_order/reason_provider.dart'; -import '../../widgets/date_and_time/date_picker.dart'; -import '../../widgets/loaders/loading_manager.dart'; -import '../../widgets/status/report/service_report_assistant_employee_menu.dart'; -import '../../widgets/status/report/service_report_fault_description.dart'; -import '../../widgets/status/report/service_report_last_call.dart'; -import '../../widgets/status/report/service_report_repair_location.dart'; -import '../../widgets/timer/app_timer.dart'; -import '../user/requests/work_order/part_no_button.dart'; - -class CreateSubWorkOrderPage extends StatefulWidget { - static const id = "/CreateSubWorkOrder"; - final SearchWorkOrder? workOrder; - - const CreateSubWorkOrderPage({this.workOrder, Key? key}) : super(key: key); - - @override - State createState() => _CreateSubWorkOrderPageState(); -} - -class _CreateSubWorkOrderPageState extends State { - final GlobalKey _formKey = GlobalKey(); - late SearchWorkOrder _subWorkOrders; - late ServiceReport _serviceReport; - late PartsProvider _partsProvider; - final List _files = []; - List _spareParts = []; - bool _isLoading = false; - bool _showVendorFields = false; - SuppEngineerWorkOrders? engineer; - SupplierDetails? initialSupplier; - final TextEditingController _workPreformedController = TextEditingController(); - final TextEditingController _partQtyController = TextEditingController(); - - @override - void initState() { - _subWorkOrders = SearchWorkOrder( - assignedEmployee: widget.workOrder?.callRequest?.assignedEmployee, - callRequest: CallRequest(id: widget.workOrder?.callRequest?.id), - currentSituation: null, - supplier: null, - parentWOId: widget.workOrder?.id, - ); - _serviceReport = ServiceReport(id: widget.workOrder?.id, assetType: widget.workOrder?.assetType, equipmentStatus: widget.workOrder?.equipmentStatus); - _isLoading = true; - super.initState(); - if (context.mounted) { - Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).reset(); - Provider.of(context, listen: false).serviceRequestId = widget.workOrder?.callRequest!.id.toString(); - } - } - - late ServiceStatusProvider assetTypesProvider; - CallRequest? _callRequestForWorkOrder; - - Future getAssetType() async { - Provider.of(context, listen: false).reset(); - final serviceRequestProvider = Provider.of(context); - Provider.of(context, listen: false).reset(); - assetTypesProvider = Provider.of(context, listen: false); - _callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder!.callRequest!.id!.toString()); - if (_subWorkOrders.parentWOId != null) { - ServiceReport? subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders.parentWOId.toString()); - if (subWoDetails != null) { - _subWorkOrders.copyDetails(subWoDetails); - _serviceReport.equipmentStatus = subWoDetails.equipmentStatus; - _serviceReport.reason = subWoDetails.reason; - initialSupplier = subWoDetails.supplier; - _serviceReport.faultDescription = subWoDetails.faultDescription; - _subWorkOrders.visitDate = subWoDetails.visitDate; - _subWorkOrders.sparePartsWorkOrders = subWoDetails.sparePartsWorkOrders; - } - } - await assetTypesProvider.getTypes(); - _subWorkOrders.assetType = assetTypesProvider.statuses?.firstWhere( - (element) => element.value == _callRequestForWorkOrder?.assetType, - orElse: null, - ); - if (checkVendorFieldsVisibility(_subWorkOrders.calllastSituation)) { - if (_subWorkOrders.suppEngineerWorkOrders?.isNotEmpty ?? false) { - engineer = _subWorkOrders.suppEngineerWorkOrders?.last; - engineer?.id = engineer?.supplierContactId; - } - _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders.supplier?.id); - } - _spareParts = await _partsProvider.getPartsList(assetId: widget.workOrder?.callRequest?.asset?.id); - setState(() { - _isLoading = false; - }); - } - - Asset? loanAvailabilityAsset; - - @override - void dispose() { - _workPreformedController.dispose(); - _partQtyController.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final user = Provider.of(context).user!; - final isCurrentUserIsAssistantEmp = (user.userID != widget.workOrder?.assignedEmployee?.id); - if (isCurrentUserIsAssistantEmp) { - // _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)]; - _subWorkOrders.assistantEmployees = [AssistantEmployees(id: 0, user: AssignedEmployee(id: user.userID, name: user.username))]; - } else {} - if (_callRequestForWorkOrder == null) { - _partsProvider = Provider.of(context); - getAssetType(); - } - - bool disablePart = _subWorkOrders.calllastSituation?.value == 12; - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.createSubWorkOrder), - body: SafeArea( - child: _isLoading - ? const ALoading() - : Column( - children: [ - SingleChildScrollView( - child: Form( - key: _formKey, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Card( - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - (widget.workOrder?.callRequest?.asset?.site?.custName ?? "").heading5(context), - 8.height, - "${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}".bodyText(context), - "${context.translation.callId}: ${widget.workOrder?.callRequest?.id}".bodyText(context), - ], - ).paddingAll(16), - ), - // WorkOrderDetails(item: widget.workOrder, assetType: _subWorkOrders?.assetType), - 8.height, - ADatePicker( - label: context.translation.returnToService, - date: DateTime.tryParse(_subWorkOrders.visitDate ?? ""), - formatDateWithTime: true, - onDatePicker: (selectedDate) { - showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - ).then((selectedTime) { - if (selectedTime != null) { - DateTime selectedDateTime = DateTime( - selectedDate.year, - selectedDate.month, - selectedDate.day, - selectedTime.hour, - selectedTime.minute, - ); - if (_subWorkOrders.visitDate != null && selectedDateTime.isBefore(DateTime.parse(_subWorkOrders.visitDate!))) { - "Visit Date time must be greater then previous date".showToast; - return; - } - - setState(() { - _subWorkOrders.visitDate = selectedDateTime.toIso8601String(); - }); - } - }); - }, - ), - 8.height, - AppTimer( - label: context.translation.workingHours, - timer: _subWorkOrders.timer, - enabled: _subWorkOrders.timer?.endAt == null, - onChange: (timer) async { - _subWorkOrders.timer = timer; - if (timer.startAt != null && timer.endAt != null) { - if (timer.durationInSecond != 0) { - _subWorkOrders.workingHours = num.tryParse((((timer.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2) ?? "0"); - } else { - timer.durationInSecond = (timer.endAt!.difference(timer.startAt!)).inSeconds; - String workingHours = (((timer.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2); - _subWorkOrders.workingHours = num.tryParse(workingHours ?? "0"); - } - } - return true; - }, - ), - 8.height, - LoadingManager( - isLoading: assetTypesProvider.isLoading, - isFailedLoading: assetTypesProvider.statuses == null, - stateCode: assetTypesProvider.stateCode, - onRefresh: () async { - assetTypesProvider.reset(); - await assetTypesProvider.getTypes(); - _subWorkOrders.assetType = assetTypesProvider.statuses?.firstWhere( - (element) => element.value == _serviceReport.callRequest?.assetType, - orElse: null, - ); - }, - child: AppTextFormField( - labelText: context.translation.assetType, - initialValue: _subWorkOrders.assetType?.name, - textAlign: TextAlign.center, - enable: false, - style: Theme.of(context).textTheme.titleMedium, - ), - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.reason, - initialValue: _subWorkOrders.reason, - onSelect: (value) { - if (value != null) { - _subWorkOrders.reason = value; - } - }, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.equipmentStatus, - initialValue: _subWorkOrders.equipmentStatus, - onSelect: (value) { - if (value != null) { - _subWorkOrders.equipmentStatus = value; - } - }, - ), - 8.height, - ServiceReportLastCallsMenu( - report: _serviceReport, - title: context.translation.callLastSituation, - parentId: widget.workOrder?.id?.toString(), - onSelect: (status) { - _serviceReport.calllastSituation = status; - if (checkVendorFieldsVisibility(status)) { - _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders.supplier?.id); - engineer = null; - } else { - _subWorkOrders.supplier = initialSupplier; - } - if (status?.value == 12 || _subWorkOrders.calllastSituation?.value == 12) { - _subWorkOrders.calllastSituation = status; - _subWorkOrders.mrNumber = null; - } else { - _subWorkOrders.calllastSituation = status; - } - setState(() {}); - }, - ), - if (_subWorkOrders.calllastSituation?.value == 12) const SizedBox(height: 8), - if (_subWorkOrders.calllastSituation?.value == 12) - AppTextFormField( - labelText: context.translation.mrNumber, - initialValue: _subWorkOrders.mrNumber, - onSaved: (value) { - _subWorkOrders.mrNumber = value; - }, - ), - if (_showVendorFields) const SizedBox(height: 8), - if (_showVendorFields) - SingleItemDropDownMenu( - context: context, - title: context.translation.supplier, - initialValue: _subWorkOrders.supplier ?? initialSupplier, - showAsBottomSheet: true, - onSelect: (supplier) { - if (supplier != null) { - _subWorkOrders.supplier = supplier; - // log(_subWorkOrders.supplier?.suppPersons?.map((e) => e.personName)?.toString()); - setState(() {}); - } - }, - ), - if (_showVendorFields) const SizedBox(height: 8), - if (_showVendorFields) - Row( - children: [ - SingleItemDropDownMenu( - context: context, - title: context.translation.supplierEngineer, - enabled: _subWorkOrders.supplier?.suppPersons?.isNotEmpty ?? false, - staticData: _subWorkOrders.supplier?.suppPersons, - showAsBottomSheet: true, - initialValue: engineer == null ? null : SuppPersons.fromJson(engineer!.toJson()), - onSelect: (suppPerson) { - if (suppPerson != null) { - engineer = SuppEngineerWorkOrders.fromJson(suppPerson.toJson()); - // engineer = SuppEngineerWorkOrders( - // id: suppPerson?.supplierId, - // supplierContactId: suppPerson?.id, - // personName: suppPerson?.personName, - // contact: suppPerson?.contact, - // externalEngCode: suppPerson?.externalEngCode, - // email: suppPerson?.email, - // ); - setState(() {}); - } - }, - ).expanded, - 8.width, - Container( - height: 60.toScreenHeight, - width: 60.toScreenWidth, - decoration: BoxDecoration( - color: _subWorkOrders.supplier?.suppliername == null ? AppColor.neutral40 : AppColor.background(context), - borderRadius: BorderRadius.circular(10), - boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], - ), - child: Icon( - Icons.add, - color: context.isDark ? null : AppColor.neutral60, - ), - ).onPress(_subWorkOrders.supplier?.suppliername == null - ? null - : () async { - SuppEngineerWorkOrders suppEngineer = (await showModalBottomSheet( - context: context, - useSafeArea: true, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) => AddSupplierEngineerBottomSheet(_subWorkOrders.supplier!.id!.toInt()), - )) as SuppEngineerWorkOrders; - _subWorkOrders.supplier?.suppPersons ??= []; - _subWorkOrders.supplier?.suppPersons?.add(SuppPersons.fromJson(suppEngineer.toJson())); - engineer = suppEngineer; - setState(() {}); - }), - ], - ), - 8.height, - ServiceReportFaultDescription( - requestId: widget.workOrder?.callRequest?.id?.toString(), - initialValue: _subWorkOrders.faultDescription, - onSelect: (status) { - _subWorkOrders.faultDescription = status; - _workPreformedController.text = _subWorkOrders.faultDescription?.workPerformed ?? ""; - }, - ), - 8.height, - AppTextFormField( - labelText: context.translation.solution, - initialValue: _subWorkOrders.faultDescription?.workPerformed, - textAlign: TextAlign.center, - enable: false, - controller: _workPreformedController, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.loanAvailability, - initialValue: _subWorkOrders.loanAvailablity, - onSelect: (status) { - if (status != null) { - setState(() { - _subWorkOrders.loanAvailablity = status; - if (_subWorkOrders.loanAvailablity?.value != 1) { - loanAvailabilityAsset = null; - _subWorkOrders.assetLoan = null; - } - }); - } - }, - ), - if (_subWorkOrders.loanAvailablity?.value == 1) 8.height, - if (_subWorkOrders.loanAvailablity?.value == 1) - - PickAsset( - device: loanAvailabilityAsset, // ?? _serviceReport.device, - onPickAsset: (asset) { - _subWorkOrders.assetLoan = AssetInfo.fromJson(asset.toJson()); - setState(() { - loanAvailabilityAsset = asset; - }); - }, - ), - 8.height, - ServiceReportAssistantEmployeeMenu( - title: context.translation.assignAssistant, - assetId: widget.workOrder!.callRequest!.asset!.id!.toInt(), - - initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null, - // initialValue: !isCurrentAssigned - // ? (widget.workOrder.assistantEmployees?.first) - // : (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) - // ? _subWorkOrders.assistantEmployees?.first - // : null, - enable: !isCurrentUserIsAssistantEmp, - onSelect: (employee) { - if (employee == null) { - _subWorkOrders.assistantEmployees = []; - } else { - _subWorkOrders.assistantEmployees = [employee.copyWith(id: 0)]; - } - }, - ), - 8.height, - ServiceReportRepairLocation( - label: context.translation.repairLocation, - initialValue: _subWorkOrders.repairLocation, - onSelect: (status) { - _subWorkOrders.repairLocation = status; - }, - ), - 8.height, - PartNoButton( - controller: _partQtyController, - spareParts: _spareParts, - disablePartEdit: disablePart, - initialList: _subWorkOrders.sparePartsWorkOrders, - onChange: (parts) { - _subWorkOrders.sparePartsWorkOrders = parts; - }, - ), - 8.height, - MultiFilesPicker(label: context.translation.attachImage, files: _files), - 8.height, - AppTextFormField( - labelText: context.translation.travelingExpense, - initialValue: _subWorkOrders.travelingExpenses?.toString(), - textInputType: TextInputType.number, - onSaved: (value) { - _subWorkOrders.travelingExpenses = double.tryParse(value) ?? 0.0; - }, - ), - 8.height, - AppTextFormField( - labelText: context.translation.travelingHours, - initialValue: _subWorkOrders.travelingHours?.toString(), - textInputType: TextInputType.number, - onSaved: (value) { - _subWorkOrders.travelingHours = double.tryParse(value) ?? 0.0; - }, - ), - 8.height, - AppTextFormField( - initialValue: _subWorkOrders.comment, - labelText: context.translation.technicalComment, - alignLabelWithHint: true, - textInputType: TextInputType.multiline, - onSaved: (value) { - _subWorkOrders.comment = value; - }, - ), - 8.height, - ESignature( - title: context.translation.engSign, - oldSignature: _subWorkOrders.engSignature, - newSignature: _subWorkOrders.localEngSignature, - // onChange: (signature) { - // // if (signature == null || signature.isEmpty) { - // // setState(() {}); - // // return; - // // } - // if (signature == null || signature.isEmpty) return; - // _subWorkOrders.localEngSignature = signature; - // _subWorkOrders.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; - // print("_serviceReport.engSignature:${_serviceReport.engSignature}"); - // }, - onSaved: (signature) { - if (signature == null || signature.isEmpty) { - setState(() {}); - return; - } - if (signature.isEmpty) return; - _subWorkOrders.localEngSignature = signature; - _subWorkOrders.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; - }, - ), - 8.height, - ESignature( - title: context.translation.nurseSignature, - oldSignature: _subWorkOrders.nurseSignature, - newSignature: _subWorkOrders.localNurseSignature, - onSaved: (signature) { - // if (signature == null || signature.isEmpty) { - // setState(() {}); - // return; - // } - if (signature == null || signature.isEmpty) return; - _subWorkOrders.localNurseSignature = signature; - _subWorkOrders.nurseSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; - }, - ), - 16.height, - ], - ), - ), - ).paddingAll(16).expanded, - AppFilledButton( - label: context.translation.submitRequest, - onPressed: () async { - setState(() {}); - _subWorkOrders.suppEngineerWorkOrders = []; - if (engineer != null) { - _subWorkOrders.suppEngineerWorkOrders!.add(engineer!); - } - // return; - if (await validate()) { - _subWorkOrders.attachmentsWorkOrder ??= []; - for (var file in _files) { - _subWorkOrders.attachmentsWorkOrder!.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}")); - } - if (_formKey.currentState?.validate() ?? false) {} - _formKey.currentState?.save(); - final serviceRequestsProvider = Provider.of(context, listen: false); - for (var element in (_subWorkOrders.suppEngineerWorkOrders ?? [])) { - if (element != null && element.id != 0) { - element.supplierContactId = element.id; - element.id = 0; - } - } - - showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - final status = await serviceRequestsProvider.createSubWorkOrder(workOrder: _subWorkOrders, makeSuppPersonsEmpty: true); - Navigator.of(context).pop(); - if (status >= 200 && status < 300) { - Fluttertoast.showToast(msg: context.translation.successfulRequestMessage); - Navigator.of(context).pop(); - } else { - String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation); - ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); - } - } - }, - ).paddingAll(16), - ], - ), - ), - ); - } - - bool checkVendorFieldsVisibility(Lookup? callsLastSituation) { - bool result = (initialSupplier?.suppliername?.isNotEmpty ?? false) || - (callsLastSituation?.name?.toLowerCase().contains("under repair-vendor") ?? false) || - (callsLastSituation?.name?.toLowerCase().contains("waiting for vendor") ?? false); - setState(() { - _showVendorFields = result; - }); - return result; - } - - Future validate() async { - if (_subWorkOrders.reason == null) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}"); - return false; - } else if (_subWorkOrders.equipmentStatus == null) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}"); - return false; - } else if (_subWorkOrders.calllastSituation == null) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}"); - return false; - } else if (_showVendorFields && _subWorkOrders.suppEngineerWorkOrders == null) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplierEngineer}"); - return false; - } else if (_showVendorFields && (_subWorkOrders.supplier?.suppliername?.isEmpty ?? true)) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplier}"); - return false; - } else if (_subWorkOrders.calllastSituation!.value == 12 && (_subWorkOrders.sparePartsWorkOrders?.isEmpty ?? true)) { - Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}"); - return false; - } else if (_subWorkOrders.timer?.startAt == null) { - await Fluttertoast.showToast(msg: "Working Hours Required"); - return false; - } else if (_subWorkOrders.timer?.endAt == null) { - await Fluttertoast.showToast(msg: "Please Stop The Timer"); - return false; - } - return true; - } -} +// import 'dart:convert'; +// import 'dart:io'; +// +// import 'package:flutter/material.dart'; +// import 'package:fluttertoast/fluttertoast.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +// import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart'; +// import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_types_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/device/asset.dart'; +// import 'package:test_sa/models/lookup.dart'; +// import 'package:test_sa/models/new_models/assigned_employee.dart'; +// import 'package:test_sa/models/new_models/assistant_employee.dart'; +// import 'package:test_sa/models/service_request/search_work_order.dart'; +// import 'package:test_sa/models/service_request/service_report.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/default_app_bar.dart'; +// import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; +// import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart'; +// import 'package:test_sa/providers/work_order/vendor_provider.dart'; +// import 'package:test_sa/views/pages/user/requests/add_supplier_engineer_bottom_sheet.dart'; +// import 'package:test_sa/views/widgets/e_signature/e_signature.dart'; +// import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; +// import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; +// import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +// +// import '../../../attachment.dart'; +// import '../../../controllers/api_routes/http_status_manger.dart'; +// import '../../../controllers/providers/api/parts_provider.dart'; +// import '../../../controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart'; +// import '../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart'; +// import '../../../controllers/providers/api/user_provider.dart'; +// import '../../../models/service_request/spare_parts.dart'; +// import '../../../models/service_request/supp_engineer_work_orders.dart'; +// import '../../../models/service_request/supplier_details.dart'; +// import '../../../models/service_request/wo_call_request.dart'; +// import '../../../new_views/common_widgets/app_lazy_loading.dart'; +// import '../../../new_views/common_widgets/app_text_form_field.dart'; +// import '../../../new_views/common_widgets/single_item_drop_down_menu.dart'; +// import '../../../providers/loading_list_notifier.dart'; +// import '../../../providers/work_order/reason_provider.dart'; +// import '../../widgets/date_and_time/date_picker.dart'; +// import '../../widgets/loaders/loading_manager.dart'; +// import '../../widgets/status/report/service_report_assistant_employee_menu.dart'; +// import '../../widgets/status/report/service_report_fault_description.dart'; +// import '../../widgets/status/report/service_report_last_call.dart'; +// import '../../widgets/status/report/service_report_repair_location.dart'; +// import '../../widgets/timer/app_timer.dart'; +// import '../user/requests/work_order/part_no_button.dart'; +// +// class CreateSubWorkOrderPage extends StatefulWidget { +// static const id = "/CreateSubWorkOrder"; +// final SearchWorkOrder? workOrder; +//// //todo @delete +// const CreateSubWorkOrderPage({this.workOrder, Key? key}) : super(key: key); +// +// @override +// State createState() => _CreateSubWorkOrderPageState(); +// } +// +// class _CreateSubWorkOrderPageState extends State { +// final GlobalKey _formKey = GlobalKey(); +// late SearchWorkOrder _subWorkOrders; +// late ServiceReport _serviceReport; +// late PartsProvider _partsProvider; +// final List _files = []; +// List _spareParts = []; +// bool _isLoading = false; +// bool _showVendorFields = false; +// SuppEngineerWorkOrders? engineer; +// SupplierDetails? initialSupplier; +// final TextEditingController _workPreformedController = TextEditingController(); +// final TextEditingController _partQtyController = TextEditingController(); +// +// @override +// void initState() { +// _subWorkOrders = SearchWorkOrder( +// assignedEmployee: widget.workOrder?.callRequest?.assignedEmployee, +// callRequest: CallRequest(id: widget.workOrder?.callRequest?.id), +// currentSituation: null, +// supplier: null, +// parentWOId: widget.workOrder?.id, +// ); +// _serviceReport = ServiceReport(id: widget.workOrder?.id, assetType: widget.workOrder?.assetType, equipmentStatus: widget.workOrder?.equipmentStatus); +// _isLoading = true; +// super.initState(); +// if (context.mounted) { +// Provider.of(context, listen: false).reset(); +// Provider.of(context, listen: false).reset(); +// Provider.of(context, listen: false).serviceRequestId = widget.workOrder?.callRequest!.id.toString(); +// } +// } +// +// late ServiceStatusProvider assetTypesProvider; +// CallRequest? _callRequestForWorkOrder; +// +// Future getAssetType() async { +// Provider.of(context, listen: false).reset(); +// final serviceRequestProvider = Provider.of(context); +// Provider.of(context, listen: false).reset(); +// assetTypesProvider = Provider.of(context, listen: false); +// _callRequestForWorkOrder = await serviceRequestProvider.getCallRequestForWorkOrder(callId: widget.workOrder!.callRequest!.id!.toString()); +// if (_subWorkOrders.parentWOId != null) { +// ServiceReport? subWoDetails = await serviceRequestProvider.getSubWorkOrderDetails(parentId: _subWorkOrders.parentWOId.toString()); +// if (subWoDetails != null) { +// _subWorkOrders.copyDetails(subWoDetails); +// _serviceReport.equipmentStatus = subWoDetails.equipmentStatus; +// _serviceReport.reason = subWoDetails.reason; +// initialSupplier = subWoDetails.supplier; +// _serviceReport.faultDescription = subWoDetails.faultDescription; +// _subWorkOrders.visitDate = subWoDetails.visitDate; +// _subWorkOrders.sparePartsWorkOrders = subWoDetails.sparePartsWorkOrders; +// } +// } +// await assetTypesProvider.getTypes(); +// _subWorkOrders.assetType = assetTypesProvider.statuses?.firstWhere( +// (element) => element.value == _callRequestForWorkOrder?.assetType, +// orElse: null, +// ); +// if (checkVendorFieldsVisibility(_subWorkOrders.calllastSituation)) { +// if (_subWorkOrders.suppEngineerWorkOrders?.isNotEmpty ?? false) { +// engineer = _subWorkOrders.suppEngineerWorkOrders?.last; +// engineer?.id = engineer?.supplierContactId; +// } +// _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders.supplier?.id); +// } +// _spareParts = await _partsProvider.getPartsList(assetId: widget.workOrder?.callRequest?.asset?.id); +// setState(() { +// _isLoading = false; +// }); +// } +// +// Asset? loanAvailabilityAsset; +// +// @override +// void dispose() { +// _workPreformedController.dispose(); +// _partQtyController.dispose(); +// super.dispose(); +// } +// +// @override +// Widget build(BuildContext context) { +// final user = Provider.of(context).user!; +// final isCurrentUserIsAssistantEmp = (user.userID != widget.workOrder?.assignedEmployee?.id); +// if (isCurrentUserIsAssistantEmp) { +// // _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)]; +// _subWorkOrders.assistantEmployees = [AssistantEmployees(id: 0, user: AssignedEmployee(id: user.userID, name: user.username))]; +// } else {} +// if (_callRequestForWorkOrder == null) { +// _partsProvider = Provider.of(context); +// getAssetType(); +// } +// +// bool disablePart = _subWorkOrders.calllastSituation?.value == 12; +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.createSubWorkOrder), +// body: SafeArea( +// child: _isLoading +// ? const ALoading() +// : Column( +// children: [ +// SingleChildScrollView( +// child: Form( +// key: _formKey, +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.stretch, +// children: [ +// Card( +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.stretch, +// children: [ +// (widget.workOrder?.callRequest?.asset?.site?.custName ?? "").heading5(context), +// 8.height, +// "${context.translation.assetNo}: ${widget.workOrder?.callRequest?.asset?.assetNumber ?? ""}".bodyText(context), +// "${context.translation.callId}: ${widget.workOrder?.callRequest?.id}".bodyText(context), +// ], +// ).paddingAll(16), +// ), +// // WorkOrderDetails(item: widget.workOrder, assetType: _subWorkOrders?.assetType), +// 8.height, +// ADatePicker( +// label: context.translation.returnToService, +// date: DateTime.tryParse(_subWorkOrders.visitDate ?? ""), +// formatDateWithTime: true, +// onDatePicker: (selectedDate) { +// showTimePicker( +// context: context, +// initialTime: TimeOfDay.now(), +// ).then((selectedTime) { +// if (selectedTime != null) { +// DateTime selectedDateTime = DateTime( +// selectedDate.year, +// selectedDate.month, +// selectedDate.day, +// selectedTime.hour, +// selectedTime.minute, +// ); +// if (_subWorkOrders.visitDate != null && selectedDateTime.isBefore(DateTime.parse(_subWorkOrders.visitDate!))) { +// "Visit Date time must be greater then previous date".showToast; +// return; +// } +// +// setState(() { +// _subWorkOrders.visitDate = selectedDateTime.toIso8601String(); +// }); +// } +// }); +// }, +// ), +// 8.height, +// AppTimer( +// label: context.translation.workingHours, +// timer: _subWorkOrders.timer, +// enabled: _subWorkOrders.timer?.endAt == null, +// onChange: (timer) async { +// _subWorkOrders.timer = timer; +// if (timer.startAt != null && timer.endAt != null) { +// if (timer.durationInSecond != 0) { +// _subWorkOrders.workingHours = num.tryParse((((timer.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2) ?? "0"); +// } else { +// timer.durationInSecond = (timer.endAt!.difference(timer.startAt!)).inSeconds; +// String workingHours = (((timer.durationInSecond ?? 0) / 60) / 60).toStringAsFixed(2); +// _subWorkOrders.workingHours = num.tryParse(workingHours ?? "0"); +// } +// } +// return true; +// }, +// ), +// 8.height, +// LoadingManager( +// isLoading: assetTypesProvider.isLoading, +// isFailedLoading: assetTypesProvider.statuses == null, +// stateCode: assetTypesProvider.stateCode, +// onRefresh: () async { +// assetTypesProvider.reset(); +// await assetTypesProvider.getTypes(); +// _subWorkOrders.assetType = assetTypesProvider.statuses?.firstWhere( +// (element) => element.value == _serviceReport.callRequest?.assetType, +// orElse: null, +// ); +// }, +// child: AppTextFormField( +// labelText: context.translation.assetType, +// initialValue: _subWorkOrders.assetType?.name, +// textAlign: TextAlign.center, +// enable: false, +// style: Theme.of(context).textTheme.titleMedium, +// ), +// ), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.reason, +// initialValue: _subWorkOrders.reason, +// onSelect: (value) { +// if (value != null) { +// _subWorkOrders.reason = value; +// } +// }, +// ), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.equipmentStatus, +// initialValue: _subWorkOrders.equipmentStatus, +// onSelect: (value) { +// if (value != null) { +// _subWorkOrders.equipmentStatus = value; +// } +// }, +// ), +// 8.height, +// ServiceReportLastCallsMenu( +// report: _serviceReport, +// title: context.translation.callLastSituation, +// parentId: widget.workOrder?.id?.toString(), +// onSelect: (status) { +// _serviceReport.calllastSituation = status; +// if (checkVendorFieldsVisibility(status)) { +// _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders.supplier?.id); +// engineer = null; +// } else { +// _subWorkOrders.supplier = initialSupplier; +// } +// if (status?.value == 12 || _subWorkOrders.calllastSituation?.value == 12) { +// _subWorkOrders.calllastSituation = status; +// _subWorkOrders.mrNumber = null; +// } else { +// _subWorkOrders.calllastSituation = status; +// } +// setState(() {}); +// }, +// ), +// if (_subWorkOrders.calllastSituation?.value == 12) const SizedBox(height: 8), +// if (_subWorkOrders.calllastSituation?.value == 12) +// AppTextFormField( +// labelText: context.translation.mrNumber, +// initialValue: _subWorkOrders.mrNumber, +// onSaved: (value) { +// _subWorkOrders.mrNumber = value; +// }, +// ), +// if (_showVendorFields) const SizedBox(height: 8), +// if (_showVendorFields) +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.supplier, +// initialValue: _subWorkOrders.supplier ?? initialSupplier, +// showAsBottomSheet: true, +// onSelect: (supplier) { +// if (supplier != null) { +// _subWorkOrders.supplier = supplier; +// // log(_subWorkOrders.supplier?.suppPersons?.map((e) => e.personName)?.toString()); +// setState(() {}); +// } +// }, +// ), +// if (_showVendorFields) const SizedBox(height: 8), +// if (_showVendorFields) +// Row( +// children: [ +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.supplierEngineer, +// enabled: _subWorkOrders.supplier?.suppPersons?.isNotEmpty ?? false, +// staticData: _subWorkOrders.supplier?.suppPersons, +// showAsBottomSheet: true, +// initialValue: engineer == null ? null : SuppPersons.fromJson(engineer!.toJson()), +// onSelect: (suppPerson) { +// if (suppPerson != null) { +// engineer = SuppEngineerWorkOrders.fromJson(suppPerson.toJson()); +// // engineer = SuppEngineerWorkOrders( +// // id: suppPerson?.supplierId, +// // supplierContactId: suppPerson?.id, +// // personName: suppPerson?.personName, +// // contact: suppPerson?.contact, +// // externalEngCode: suppPerson?.externalEngCode, +// // email: suppPerson?.email, +// // ); +// setState(() {}); +// } +// }, +// ).expanded, +// 8.width, +// Container( +// height: 60.toScreenHeight, +// width: 60.toScreenWidth, +// decoration: BoxDecoration( +// color: _subWorkOrders.supplier?.suppliername == null ? AppColor.neutral40 : AppColor.background(context), +// borderRadius: BorderRadius.circular(10), +// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)], +// ), +// child: Icon( +// Icons.add, +// color: context.isDark ? null : AppColor.neutral60, +// ), +// ).onPress(_subWorkOrders.supplier?.suppliername == null +// ? null +// : () async { +// SuppEngineerWorkOrders suppEngineer = (await showModalBottomSheet( +// context: context, +// useSafeArea: true, +// isScrollControlled: true, +// backgroundColor: Colors.transparent, +// builder: (context) => AddSupplierEngineerBottomSheet(_subWorkOrders.supplier!.id!.toInt()), +// )) as SuppEngineerWorkOrders; +// _subWorkOrders.supplier?.suppPersons ??= []; +// _subWorkOrders.supplier?.suppPersons?.add(SuppPersons.fromJson(suppEngineer.toJson())); +// engineer = suppEngineer; +// setState(() {}); +// }), +// ], +// ), +// 8.height, +// ServiceReportFaultDescription( +// requestId: widget.workOrder?.callRequest?.id?.toString(), +// initialValue: _subWorkOrders.faultDescription, +// onSelect: (status) { +// _subWorkOrders.faultDescription = status; +// _workPreformedController.text = _subWorkOrders.faultDescription?.workPerformed ?? ""; +// }, +// ), +// 8.height, +// AppTextFormField( +// labelText: context.translation.solution, +// initialValue: _subWorkOrders.faultDescription?.workPerformed, +// textAlign: TextAlign.center, +// enable: false, +// controller: _workPreformedController, +// ), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.loanAvailability, +// initialValue: _subWorkOrders.loanAvailablity, +// onSelect: (status) { +// if (status != null) { +// setState(() { +// _subWorkOrders.loanAvailablity = status; +// if (_subWorkOrders.loanAvailablity?.value != 1) { +// loanAvailabilityAsset = null; +// _subWorkOrders.assetLoan = null; +// } +// }); +// } +// }, +// ), +// if (_subWorkOrders.loanAvailablity?.value == 1) 8.height, +// if (_subWorkOrders.loanAvailablity?.value == 1) +// +// PickAsset( +// device: loanAvailabilityAsset, // ?? _serviceReport.device, +// onPickAsset: (asset) { +// _subWorkOrders.assetLoan = AssetInfo.fromJson(asset.toJson()); +// setState(() { +// loanAvailabilityAsset = asset; +// }); +// }, +// ), +// 8.height, +// ServiceReportAssistantEmployeeMenu( +// title: context.translation.assignAssistant, +// assetId: widget.workOrder!.callRequest!.asset!.id!.toInt(), +// +// initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null, +// // initialValue: !isCurrentAssigned +// // ? (widget.workOrder.assistantEmployees?.first) +// // : (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) +// // ? _subWorkOrders.assistantEmployees?.first +// // : null, +// enable: !isCurrentUserIsAssistantEmp, +// onSelect: (employee) { +// if (employee == null) { +// _subWorkOrders.assistantEmployees = []; +// } else { +// _subWorkOrders.assistantEmployees = [employee.copyWith(id: 0)]; +// } +// }, +// ), +// 8.height, +// ServiceReportRepairLocation( +// label: context.translation.repairLocation, +// initialValue: _subWorkOrders.repairLocation, +// onSelect: (status) { +// _subWorkOrders.repairLocation = status; +// }, +// ), +// 8.height, +// PartNoButton( +// controller: _partQtyController, +// spareParts: _spareParts, +// disablePartEdit: disablePart, +// initialList: _subWorkOrders.sparePartsWorkOrders, +// onChange: (parts) { +// _subWorkOrders.sparePartsWorkOrders = parts; +// }, +// ), +// 8.height, +// MultiFilesPicker(label: context.translation.attachImage, files: _files), +// 8.height, +// AppTextFormField( +// labelText: context.translation.travelingExpense, +// initialValue: _subWorkOrders.travelingExpenses?.toString(), +// textInputType: TextInputType.number, +// onSaved: (value) { +// _subWorkOrders.travelingExpenses = double.tryParse(value) ?? 0.0; +// }, +// ), +// 8.height, +// AppTextFormField( +// labelText: context.translation.travelingHours, +// initialValue: _subWorkOrders.travelingHours?.toString(), +// textInputType: TextInputType.number, +// onSaved: (value) { +// _subWorkOrders.travelingHours = double.tryParse(value) ?? 0.0; +// }, +// ), +// 8.height, +// AppTextFormField( +// initialValue: _subWorkOrders.comment, +// labelText: context.translation.technicalComment, +// alignLabelWithHint: true, +// textInputType: TextInputType.multiline, +// onSaved: (value) { +// _subWorkOrders.comment = value; +// }, +// ), +// 8.height, +// ESignature( +// title: context.translation.engSign, +// oldSignature: _subWorkOrders.engSignature, +// newSignature: _subWorkOrders.localEngSignature, +// // onChange: (signature) { +// // // if (signature == null || signature.isEmpty) { +// // // setState(() {}); +// // // return; +// // // } +// // if (signature == null || signature.isEmpty) return; +// // _subWorkOrders.localEngSignature = signature; +// // _subWorkOrders.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; +// // print("_serviceReport.engSignature:${_serviceReport.engSignature}"); +// // }, +// onSaved: (signature) { +// if (signature == null || signature.isEmpty) { +// setState(() {}); +// return; +// } +// if (signature.isEmpty) return; +// _subWorkOrders.localEngSignature = signature; +// _subWorkOrders.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; +// }, +// ), +// 8.height, +// ESignature( +// title: context.translation.nurseSignature, +// oldSignature: _subWorkOrders.nurseSignature, +// newSignature: _subWorkOrders.localNurseSignature, +// onSaved: (signature) { +// // if (signature == null || signature.isEmpty) { +// // setState(() {}); +// // return; +// // } +// if (signature == null || signature.isEmpty) return; +// _subWorkOrders.localNurseSignature = signature; +// _subWorkOrders.nurseSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null; +// }, +// ), +// 16.height, +// ], +// ), +// ), +// ).paddingAll(16).expanded, +// AppFilledButton( +// label: context.translation.submitRequest, +// onPressed: () async { +// setState(() {}); +// _subWorkOrders.suppEngineerWorkOrders = []; +// if (engineer != null) { +// _subWorkOrders.suppEngineerWorkOrders!.add(engineer!); +// } +// // return; +// if (await validate()) { +// _subWorkOrders.attachmentsWorkOrder ??= []; +// for (var file in _files) { +// _subWorkOrders.attachmentsWorkOrder!.add(Attachment(id: 0, name: "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}")); +// } +// if (_formKey.currentState?.validate() ?? false) {} +// _formKey.currentState?.save(); +// final serviceRequestsProvider = Provider.of(context, listen: false); +// for (var element in (_subWorkOrders.suppEngineerWorkOrders ?? [])) { +// if (element != null && element.id != 0) { +// element.supplierContactId = element.id; +// element.id = 0; +// } +// } +// +// showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); +// final status = await serviceRequestsProvider.createSubWorkOrder(workOrder: _subWorkOrders, makeSuppPersonsEmpty: true); +// Navigator.of(context).pop(); +// if (status >= 200 && status < 300) { +// Fluttertoast.showToast(msg: context.translation.successfulRequestMessage); +// Navigator.of(context).pop(); +// } else { +// String errorMessage = HttpStatusManger.getStatusMessage(status: serviceRequestsProvider.stateCode, subtitle: context.translation); +// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); +// } +// } +// }, +// ).paddingAll(16), +// ], +// ), +// ), +// ); +// } +// +// bool checkVendorFieldsVisibility(Lookup? callsLastSituation) { +// bool result = (initialSupplier?.suppliername?.isNotEmpty ?? false) || +// (callsLastSituation?.name?.toLowerCase().contains("under repair-vendor") ?? false) || +// (callsLastSituation?.name?.toLowerCase().contains("waiting for vendor") ?? false); +// setState(() { +// _showVendorFields = result; +// }); +// return result; +// } +// +// Future validate() async { +// if (_subWorkOrders.reason == null) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.reason}"); +// return false; +// } else if (_subWorkOrders.equipmentStatus == null) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.equipmentStatus}"); +// return false; +// } else if (_subWorkOrders.calllastSituation == null) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.callLastSituation}"); +// return false; +// } else if (_showVendorFields && _subWorkOrders.suppEngineerWorkOrders == null) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplierEngineer}"); +// return false; +// } else if (_showVendorFields && (_subWorkOrders.supplier?.suppliername?.isEmpty ?? true)) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.supplier}"); +// return false; +// } else if (_subWorkOrders.calllastSituation!.value == 12 && (_subWorkOrders.sparePartsWorkOrders?.isEmpty ?? true)) { +// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.partNo}"); +// return false; +// } else if (_subWorkOrders.timer?.startAt == null) { +// await Fluttertoast.showToast(msg: "Working Hours Required"); +// return false; +// } else if (_subWorkOrders.timer?.endAt == null) { +// await Fluttertoast.showToast(msg: "Please Stop The Timer"); +// return false; +// } +// return true; +// } +// } diff --git a/lib/views/pages/user/gas_refill/track_gas_refill.dart b/lib/views/pages/user/gas_refill/track_gas_refill.dart index 66d6df62..ab1b4d20 100644 --- a/lib/views/pages/user/gas_refill/track_gas_refill.dart +++ b/lib/views/pages/user/gas_refill/track_gas_refill.dart @@ -1,68 +1,68 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; -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/views/widgets/gas_refill/gas_refill_list.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; - -import '../../../../new_views/common_widgets/default_app_bar.dart'; - -class TrackGasRefillPage extends StatefulWidget { - static const String id = "/track-gas-refill"; - - const TrackGasRefillPage({Key? key}) : super(key: key); - - @override - State createState() => _TrackGasRefillPageState(); -} - -class _TrackGasRefillPageState extends State with TickerProviderStateMixin { - GasRefillProvider? _gasRefillProvider; - late UserProvider _userProvider; - late SettingProvider _settingProvider; - bool mostRecent = true; - - @override - Widget build(BuildContext context) { - if (_gasRefillProvider == null) { - _gasRefillProvider = Provider.of(context); - _gasRefillProvider!.reset(); - } - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.gasRefillRequest), - body: SafeArea( - child: LoadingManager( - isLoading: _gasRefillProvider!.isLoading, - isFailedLoading: _gasRefillProvider!.items == null, - stateCode: _gasRefillProvider!.stateCode, - onRefresh: () async { - _gasRefillProvider!.reset(); - await _gasRefillProvider!.getRequests(user: _userProvider.user!, host: _settingProvider.host!, mostRecent: mostRecent); - }, - child: Stack( - children: [ - Column( - children: [ - Expanded( - child: GasRefillList( - nextPage: _gasRefillProvider!.nextPage, - onLazyLoad: () async { - await _gasRefillProvider!.getRequests(user: _userProvider.user!, host: _settingProvider.host!, mostRecent: mostRecent); - }, - items: _gasRefillProvider?.items ?? [], - ), - ), - ], - ), - ], - ), - ), - ), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; +// 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/views/widgets/gas_refill/gas_refill_list.dart'; +// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +// +// import '../../../../new_views/common_widgets/default_app_bar.dart'; +// +// class TrackGasRefillPage extends StatefulWidget { +// static const String id = "/track-gas-refill"; +//// //todo @delete +// const TrackGasRefillPage({Key? key}) : super(key: key); +// +// @override +// State createState() => _TrackGasRefillPageState(); +// } +// +// class _TrackGasRefillPageState extends State with TickerProviderStateMixin { +// GasRefillProvider? _gasRefillProvider; +// late UserProvider _userProvider; +// late SettingProvider _settingProvider; +// bool mostRecent = true; +// +// @override +// Widget build(BuildContext context) { +// if (_gasRefillProvider == null) { +// _gasRefillProvider = Provider.of(context); +// _gasRefillProvider!.reset(); +// } +// _userProvider = Provider.of(context); +// _settingProvider = Provider.of(context); +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.gasRefillRequest), +// body: SafeArea( +// child: LoadingManager( +// isLoading: _gasRefillProvider!.isLoading, +// isFailedLoading: _gasRefillProvider!.items == null, +// stateCode: _gasRefillProvider!.stateCode, +// onRefresh: () async { +// _gasRefillProvider!.reset(); +// await _gasRefillProvider!.getRequests(user: _userProvider.user!, host: _settingProvider.host!, mostRecent: mostRecent); +// }, +// child: Stack( +// children: [ +// Column( +// children: [ +// Expanded( +// child: GasRefillList( +// nextPage: _gasRefillProvider!.nextPage, +// onLazyLoad: () async { +// await _gasRefillProvider!.getRequests(user: _userProvider.user!, host: _settingProvider.host!, mostRecent: mostRecent); +// }, +// items: _gasRefillProvider?.items ?? [], +// ), +// ), +// ], +// ), +// ], +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/views/pages/user/gas_refill/update_gas_refill_request.dart b/lib/views/pages/user/gas_refill/update_gas_refill_request.dart index 4a9b8750..32002b94 100644 --- a/lib/views/pages/user/gas_refill/update_gas_refill_request.dart +++ b/lib/views/pages/user/gas_refill/update_gas_refill_request.dart @@ -5,7 +5,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; @@ -16,12 +15,12 @@ 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/timer_model.dart'; +import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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_lazy_loading.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; - -import 'package:test_sa/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; diff --git a/lib/views/pages/user/ppm/ppm_page.dart b/lib/views/pages/user/ppm/ppm_page.dart deleted file mode 100644 index 6acdae32..00000000 --- a/lib/views/pages/user/ppm/ppm_page.dart +++ /dev/null @@ -1,66 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; -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/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; - -import '../../../../models/ppm/ppm.dart'; -import '../../../widgets/loaders/lazy_loading.dart'; -import '../../../widgets/loaders/no_data_found.dart'; -import '../../../widgets/ppm/ppm_item.dart'; - -class PpmPage extends StatefulWidget { - static const String id = "/ppm_page"; - - const PpmPage({Key? key}) : super(key: key); - - @override - _PpmPageState createState() => _PpmPageState(); -} - -class _PpmPageState extends State with TickerProviderStateMixin { - late PpmProvider _visitsProvider; - late UserProvider _userProvider; - late SettingProvider _settingProvider; - - @override - Widget build(BuildContext context) { - _visitsProvider = Provider.of(context); - _settingProvider = Provider.of(context); - _userProvider = Provider.of(context); - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.preventiveMaintenance), - body: SafeArea( - child: LoadingManager( - isLoading: _visitsProvider.isLoading, - isFailedLoading: _visitsProvider.ppms == null, - stateCode: _visitsProvider.stateCode, - onRefresh: () async { - _visitsProvider.reset(); - await _visitsProvider.getVisits(user: _userProvider.user!, host: _settingProvider.host!); - }, - child: _visitsProvider.ppms?.isEmpty ?? true - ? NoDataFound(message: context.translation.noVisitsFound) - : LazyLoading( - nextPage: _visitsProvider.nextPage, - onLazyLoad: () async { - await _visitsProvider.getVisits(user: _userProvider.user!, host: _settingProvider.host!); - }, - child: ListView.builder( - itemCount: _visitsProvider.ppms!.length, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), - itemBuilder: (context, itemIndex) { - Ppm ppm = _visitsProvider.ppms![itemIndex]; - return Padding(padding: const EdgeInsets.only(bottom: 8.0), child: PpmItem(ppm: ppm)); - }, - ), - ), - ), - ), - ); - } -} diff --git a/lib/views/pages/user/ppm/update_ppm/ppm_external_details_form.dart b/lib/views/pages/user/ppm/update_ppm/ppm_external_details_form.dart deleted file mode 100644 index 35183d7a..00000000 --- a/lib/views/pages/user/ppm/update_ppm/ppm_external_details_form.dart +++ /dev/null @@ -1,512 +0,0 @@ -// import 'package:flutter/material.dart'; -// import 'package:fluttertoast/fluttertoast.dart'; -// import 'package:provider/provider.dart'; -// import 'package:test_sa/controllers/providers/api/user_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/lookup.dart'; -// import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model.dart'; -// import 'package:test_sa/models/ppm/ppm_calibration_tools.dart'; -// import 'package:test_sa/models/service_request/supplier_details.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/new_views/common_widgets/single_item_drop_down_menu.dart'; -// import 'package:test_sa/providers/loading_list_notifier.dart'; -// import 'package:test_sa/providers/ppm_service_provider.dart'; -// import 'package:test_sa/providers/work_order/vendor_provider.dart'; -// -// import 'package:test_sa/views/widgets/pentry/calibration_tool_asset_picker.dart'; -// -// import '../../../../../new_views/app_style/app_color.dart'; -// import '../../../../widgets/date_and_time/date_picker.dart'; -// -// class PpmExternalDetailsForm extends StatefulWidget { -// final List? models; -// -// const PpmExternalDetailsForm({Key? key, this.models = const []}) : super(key: key); -// -// @override -// State createState() => _PpmExternalDetailsFormState(); -// } -// -// class _PpmExternalDetailsFormState extends State { -// final TextEditingController _workingHoursController = TextEditingController(); -// -// @override -// Widget build(BuildContext context) { -// return ListView.builder( -// itemCount: widget.models!.length + 1, -// padding: const EdgeInsets.only(left: 16, right: 16, top: 8, bottom: 16), -// itemBuilder: (context, index) { -// if (index == widget.models!.length) { -// return AppFilledButton( -// label: "Add More External Details".addTranslation, -// maxWidth: true, -// textColor: AppColor.black10, -// buttonColor: context.isDark ? AppColor.neutral60 : AppColor.white10, -// icon: Icon(Icons.add_circle, color: AppColor.blueStatus(context)), -// showIcon: true, -// onPressed: () async { -// // if (widget.models?.isNotEmpty ?? false) { -// // if (widget.models!.last.assetId == null) { -// // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.assetNumber}"); -// // return; -// // } -// // if (widget.models!.last.calibrationDateOfTesters == null) { -// // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.date}"); -// // return; -// // } -// // } -// // widget.models!.add(PpmCalibrationTools(id: 0)); -// // setState(() {}); -// }, -// ); -// } -// final model = widget.models![index]; -// // _workingHoursController.text = model.workingHours != null ? model.workingHours.toString() : ''; -// return Container( -// padding: const EdgeInsets.all(16), -// margin: EdgeInsets.only(bottom: 16.toScreenHeight), -// decoration: BoxDecoration( -// color: AppColor.background(context), -// borderRadius: BorderRadius.circular(20), -// boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)], -// ), -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Row( -// mainAxisAlignment: MainAxisAlignment.spaceBetween, -// children: [ -// (index == 0 ? "1 /4 . External Details" : "").heading5(context), -// "trash".toSvgAsset(height: 20, width: 15).onPress(() { -// widget.models!.remove(model); -// -// setState(() {}); -// }), -// ], -// ), -// 16.height, -// SingleItemDropDownMenu( -// context: context, -// title: context.translation.supplier, -// initialValue: model.supplier, -// backgroundColor: AppColor.neutral100, -// showAsBottomSheet: true, -// onSelect: (supplier) { -// if (supplier != null) { -// model.supplier = supplier; -// print('supplier dtails is ${supplier.toJson()}'); -// setState(() {}); -// } -// }, -// ), -// 8.height, -// SingleItemDropDownMenu( -// context: context, -// title: context.translation.supplierEngineer, -// enabled: model.suppPerson != null, -// backgroundColor: AppColor.neutral100, -// initialValue: model.suppPerson, -// staticData: model.supplier?.suppPersons, -// showAsBottomSheet: true, -// onSelect: (suppPerson) { -// if (suppPerson != null) { -// model.suppPerson = suppPerson; -// print('supply person is ${model.suppPerson?.toJson()}'); -// } -// }, -// ), -// 8.height, -// AppTextFormField( -// labelText: "Telephone", -// initialValue: model.supplier?.telephones != null && model.supplier!.telephones!.isNotEmpty ? (model.supplier?.telephones?[0].telephone ?? "").toString() : '', -// textAlign: TextAlign.center, -// backgroundColor: AppColor.neutral100, -// style: Theme.of(context).textTheme.titleMedium, -// textInputType: TextInputType.number, -// onChange: (value) { -// model.supplier?.telephones?[0].telephone = value; -// }, -// ), -// 8.height, -// Row( -// mainAxisSize: MainAxisSize.min, -// children: [ -// ADatePicker( -// label: context.translation.startTime, -// hideShadow: true, -// backgroundColor: AppColor.neutral100, -// date: model.startDateTime, -// formatDateWithTime: true, -// onDatePicker: (selectedDate) { -// showTimePicker( -// context: context, -// initialTime: TimeOfDay.now(), -// ).then((selectedTime) { -// // Handle the selected date and time here. -// if (selectedTime != null) { -// DateTime selectedDateTime = DateTime( -// selectedDate.year, -// selectedDate.month, -// selectedDate.day, -// selectedTime.hour, -// selectedTime.minute, -// ); -// setState(() { -// model.startDateTime = selectedDateTime; -// }); -// model.endDateTime = null; -// _workingHoursController.clear(); -// ServiceRequestUtils.calculateAndAssignWorkingHours( -// startTime: model.startDateTime, -// endTime: model.endDateTime, -// workingHoursController: _workingHoursController, -// updateModel: (hours) { -// model.workingHours = hours; -// }, -// ); -// } -// }); -// }, -// ).expanded, -// 8.width, -// ADatePicker( -// label: context.translation.endTime, -// hideShadow: true, -// backgroundColor: AppColor.neutral100, -// date: model.endDateTime, -// formatDateWithTime: true, -// onDatePicker: (selectedDate) { -// showTimePicker( -// context: context, -// initialTime: TimeOfDay.now(), -// ).then((selectedTime) { -// // Handle the selected date and time here. -// if (selectedTime != null) { -// DateTime selectedDateTime = DateTime( -// selectedDate.year, -// selectedDate.month, -// selectedDate.day, -// selectedTime.hour, -// selectedTime.minute, -// ); -// if (model.startDateTime != null && selectedDateTime.isBefore(model.startDateTime!)) { -// "End Date time must be greater then start date".showToast; -// return; -// } -// model.endDateTime = selectedDateTime; -// setState(() {}); -// ServiceRequestUtils.calculateAndAssignWorkingHours( -// startTime: model.startDateTime, -// endTime: model.endDateTime, -// workingHoursController: _workingHoursController, -// updateModel: (hours) { -// model.workingHours = hours; -// }, -// ); -// } -// }); -// }, -// ).expanded, -// ], -// ), -// 8.height, -// AppTextFormField( -// labelText: context.translation.workingHours, -// backgroundColor: AppColor.neutral80, -// controller: _workingHoursController, -// suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16), -// // initialValue: model.workingHours != null ? model.workingHours.toString() : '', -// textAlign: TextAlign.center, -// labelStyle: AppTextStyles.textFieldLabelStyle, -// enable: false, -// showShadow: false, -// style: Theme.of(context).textTheme.titleMedium, -// ), -// 8.height, -// ], -// ), -// ); -// }, -// ); -// } -// } - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/cm_module/utilities/service_request_utils.dart'; -import 'package:test_sa/controllers/providers/api/ppm_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/plan_preventive_visit/plan_preventive_visit_model.dart'; -import 'package:test_sa/models/service_request/supplier_details.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/new_views/common_widgets/single_item_drop_down_menu.dart'; -import 'package:test_sa/providers/loading_list_notifier.dart'; -import 'package:test_sa/providers/work_order/vendor_provider.dart'; - -import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; - -class PpmExternalDetailsForm extends StatefulWidget { - final List? models; - - const PpmExternalDetailsForm({Key? key, this.models = const []}) : super(key: key); - - @override - State createState() => _PpmExternalDetailsFormState(); -} - -class _PpmExternalDetailsFormState extends State { - bool isLoading = false; - -//TODO add loader when adding or deleting item.. - - void _addNewEntry() { - setState(() { - // isLoading = true; - widget.models!.add(PreventiveVisitSuppliers(id: 0)); - // Future.delayed(Duration(seconds: 1)).whenComplete(() { - // setState(() { - // isLoading = false; - // }); - // }); - }); - } - - void _removeEntry(int index) { - setState(() { - isLoading = true; - widget.models!.removeAt(index); - // isLoading = false; - }); - } - - @override - Widget build(BuildContext context) { - final ppmProvider = Provider.of(context, listen: false); - return ListView.builder( - itemCount: widget.models!.length + 1, - padding: const EdgeInsets.all(16), - itemBuilder: (context, index) { - if (index == widget.models!.length) { - return Visibility( - visible: !ppmProvider.isReadOnly, - child: AppFilledButton( - label: "Add More External Details".addTranslation, - maxWidth: true, - textColor: AppColor.black10, - buttonColor: context.isDark ? AppColor.neutral60 : AppColor.white10, - icon: Icon(Icons.add_circle, color: AppColor.blueStatus(context)), - showIcon: true, - onPressed: _addNewEntry, - ), - ); - } - // return !isLoading - // ? - return ExternalDetailItem( - model: widget.models![index], - index: index, - onRemove: () => _removeEntry(index), - ); - // : const ALoading(); - }, - ); - } -} - -class ExternalDetailItem extends StatefulWidget { - final PreventiveVisitSuppliers model; - final VoidCallback onRemove; - final int index; - - const ExternalDetailItem({ - Key? key, - required this.model, - required this.onRemove, - required this.index, - }) : super(key: key); - - @override - State createState() => _ExternalDetailItemState(); -} - -class _ExternalDetailItemState extends State { - TextEditingController? controller; - PpmProvider? _ppmProvider; - - @override - void initState() { - controller = TextEditingController(text: widget.model.workingHours != null ? widget.model.workingHours.toString() : ''); - _ppmProvider= Provider.of(context,listen:false); - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.all(16), - margin: EdgeInsets.only(bottom: 16.toScreenHeight), - decoration: BoxDecoration( - color: AppColor.background(context), - borderRadius: BorderRadius.circular(20), - boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)], - ), - child: IgnorePointer( - ignoring: _ppmProvider!.isReadOnly, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - (widget.index == 0 ? "1 /4 . External Details" : "").heading5(context), - Container( - height: 32, - width: 32, - padding: const EdgeInsets.all(6), - child: "trash".toSvgAsset(height: 20, width: 20), - ).onPress(() { - widget.onRemove(); - }), - ], - ), - 16.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.supplier, - initialValue: widget.model.supplier, - backgroundColor: AppColor.neutral100, - showAsBottomSheet: true, - showShadow: false, - onSelect: (supplier) { - if (supplier != null) { - setState(() { - widget.model.supplier = supplier; - }); - } - }, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.supplierEngineer, - enabled: widget.model.supplier != null, - backgroundColor: AppColor.neutral100, - initialValue: widget.model.suppPerson, - staticData: widget.model.supplier?.suppPersons, - showAsBottomSheet: true, - showShadow: false, - onSelect: (suppPerson) { - if (suppPerson != null) { - widget.model.suppPerson = suppPerson; - } - }, - ), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - ADatePicker( - label: context.translation.startTime, - hideShadow: true, - backgroundColor: AppColor.neutral100, - date: widget.model.startDateTime, - formatDateWithTime: true, - onDatePicker: (selectedDate) { - showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - ).then((selectedTime) { - if (selectedTime != null) { - DateTime selectedDateTime = DateTime( - selectedDate.year, - selectedDate.month, - selectedDate.day, - selectedTime.hour, - selectedTime.minute, - ); - setState(() { - widget.model.startDateTime = selectedDateTime; - }); - widget.model.endDateTime = null; - controller?.clear(); - ServiceRequestUtils.calculateAndAssignWorkingHours( - startTime: widget.model.startDateTime, - endTime: widget.model.endDateTime, - workingHoursController: controller!, - updateModel: (hours) { - widget.model.workingHours = hours; - }, - ); - } - }); - }, - ).expanded, - 8.width, - ADatePicker( - label: context.translation.endTime, - hideShadow: true, - backgroundColor: AppColor.neutral100, - date: widget.model.endDateTime, - formatDateWithTime: true, - onDatePicker: (selectedDate) { - showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - ).then((selectedTime) { - if (selectedTime != null) { - DateTime selectedDateTime = DateTime( - selectedDate.year, - selectedDate.month, - selectedDate.day, - selectedTime.hour, - selectedTime.minute, - ); - if (widget.model.startDateTime != null && selectedDateTime.isBefore(widget.model.startDateTime!)) { - "End Date time must be greater than start date".showToast; - return; - } - setState(() { - widget.model.endDateTime = selectedDateTime; - }); - ServiceRequestUtils.calculateAndAssignWorkingHours( - startTime: widget.model.startDateTime, - endTime: widget.model.endDateTime, - workingHoursController: controller!, - updateModel: (hours) { - widget.model.workingHours = hours; - }, - ); - } - }); - }, - ).expanded, - ], - ), - 8.height, - AppTextFormField( - labelText: context.translation.workingHours, - backgroundColor: AppColor.neutral80, - controller: controller, - textAlign: TextAlign.center, - enable: false, - showShadow: false, - style: Theme.of(context).textTheme.titleMedium, - ), - 8.height, - ], - ), - ), - ); - } -} diff --git a/lib/views/pages/user/requests/pending_requests_screen.dart b/lib/views/pages/user/requests/pending_requests_screen.dart index 67df2821..edd02de4 100644 --- a/lib/views/pages/user/requests/pending_requests_screen.dart +++ b/lib/views/pages/user/requests/pending_requests_screen.dart @@ -4,10 +4,8 @@ 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/service_request/pending_service_request_model.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; +import 'package:test_sa/modules/cm_module/views/service_request_detail_main_view.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/views/service_request_detail_main_view.dart'; -import 'package:test_sa/views/pages/user/requests/service_request_details.dart'; import 'package:test_sa/views/widgets/sound/sound_player.dart'; class PendingServiceRequestScreen extends StatelessWidget { diff --git a/lib/views/pages/user/requests/requests_page.dart b/lib/views/pages/user/requests/requests_page.dart index a31908c7..ae74c32e 100644 --- a/lib/views/pages/user/requests/requests_page.dart +++ b/lib/views/pages/user/requests/requests_page.dart @@ -1,60 +1,60 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -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/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; -import 'package:test_sa/views/widgets/requests/service_request_list.dart'; - -class ServiceRequestsPage extends StatefulWidget { - static const String id = "/service-requests"; - - const ServiceRequestsPage({Key? key}) : super(key: key); - - @override - _ServiceRequestsPageState createState() => _ServiceRequestsPageState(); -} - -class _ServiceRequestsPageState extends State with TickerProviderStateMixin { - late ServiceRequestsProvider _serviceRequestsProvider; - late UserProvider _userProvider; - late SettingProvider _settingProvider; - final bool _expandedSearch = false; - bool _firstTime = true; - - @override - Widget build(BuildContext context) { - _serviceRequestsProvider = Provider.of(context); - _userProvider = Provider.of(context); - _settingProvider = Provider.of(context); - if (_firstTime) { - _serviceRequestsProvider.reset(); - _firstTime = false; - } - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.serviceRequest), - //backgroundColor: context.isDark? :const Color(0xfff8f9fb), - body: SafeArea( - child: LoadingManager( - isLoading: _serviceRequestsProvider.isLoading, - isFailedLoading: _serviceRequestsProvider.serviceRequests == null, - stateCode: _serviceRequestsProvider.stateCode, - onRefresh: () async { - _serviceRequestsProvider.reset(); - await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user!.clientId!); - }, - child: ServiceRequestsList( - nextPage: _serviceRequestsProvider.nextPage, - onLazyLoad: () async { - await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user!.clientId!); - }, - requests: _serviceRequestsProvider.serviceRequests!, - ), - ), - ), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +// 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/new_views/common_widgets/default_app_bar.dart'; +// import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +// import 'package:test_sa/views/widgets/requests/service_request_list.dart'; +// //todo @delete +// class ServiceRequestsPage extends StatefulWidget { +// static const String id = "/service-requests"; +// +// const ServiceRequestsPage({Key? key}) : super(key: key); +// +// @override +// _ServiceRequestsPageState createState() => _ServiceRequestsPageState(); +// } +// +// class _ServiceRequestsPageState extends State with TickerProviderStateMixin { +// late ServiceRequestsProvider _serviceRequestsProvider; +// late UserProvider _userProvider; +// late SettingProvider _settingProvider; +// final bool _expandedSearch = false; +// bool _firstTime = true; +// +// @override +// Widget build(BuildContext context) { +// _serviceRequestsProvider = Provider.of(context); +// _userProvider = Provider.of(context); +// _settingProvider = Provider.of(context); +// if (_firstTime) { +// _serviceRequestsProvider.reset(); +// _firstTime = false; +// } +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.serviceRequest), +// //backgroundColor: context.isDark? :const Color(0xfff8f9fb), +// body: SafeArea( +// child: LoadingManager( +// isLoading: _serviceRequestsProvider.isLoading, +// isFailedLoading: _serviceRequestsProvider.serviceRequests == null, +// stateCode: _serviceRequestsProvider.stateCode, +// onRefresh: () async { +// _serviceRequestsProvider.reset(); +// await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user!.clientId!); +// }, +// child: ServiceRequestsList( +// nextPage: _serviceRequestsProvider.nextPage, +// onLazyLoad: () async { +// await _serviceRequestsProvider.getRequests(hospitalId: _userProvider.user!.clientId!); +// }, +// requests: _serviceRequestsProvider.serviceRequests!, +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/views/pages/user/requests/service_request_details.dart b/lib/views/pages/user/requests/service_request_details.dart index ba3196bd..3c345496 100644 --- a/lib/views/pages/user/requests/service_request_details.dart +++ b/lib/views/pages/user/requests/service_request_details.dart @@ -1,302 +1,302 @@ - -//TODO old Flow .. -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/comments_provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; -import 'package:test_sa/models/service_request/service_request.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/default_app_bar.dart'; -import 'package:test_sa/views/pages/user/requests/comments_bottom_sheet.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/work_orders_list_page.dart'; -import 'package:test_sa/views/widgets/images/files_list.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; -import 'package:test_sa/views/widgets/sound/sound_player.dart'; - -import '../../../widgets/requests/request_status.dart'; -import 'first_action_bottom_sheet.dart'; - -class ServiceRequestDetailsPage extends StatefulWidget { - static const String id = "/call-details"; - ServiceRequest serviceRequest; - - ServiceRequestDetailsPage({Key? key, required this.serviceRequest}) : super(key: key); - - @override - State createState() => _ServiceRequestDetailsPageState(); -} - -class _ServiceRequestDetailsPageState extends State { - bool loading = false; - ServiceRequest? serviceRequest; - - @override - void initState() { - super.initState(); - getServiceRequest(); - } - - void getServiceRequest() { - loading = true; - setState(() {}); - WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { - Provider.of(context, listen: false).reset(); - serviceRequest = await Provider.of(context, listen: false).getServiceRequestObjectById(requestId: widget.serviceRequest.id!); - loading = false; - setState(() {}); - }); - } - - @override - Widget build(BuildContext context) { - UserProvider userProvider = Provider.of(context, listen: false); - - Widget informationCard(ServiceRequest serviceRequest) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - StatusLabel( - label: serviceRequest.priority!.name, - id: serviceRequest.priority!.id!, - textColor: AppColor.getPriorityStatusTextColor(context, serviceRequest.priority!.id!), - backgroundColor: AppColor.getPriorityStatusColor(context, serviceRequest.priority!.id!), - ), - 8.width, - StatusLabel( - label: serviceRequest.statusLabel, - textColor: AppColor.getRequestStatusTextColor(context, serviceRequest.statusValue!), - backgroundColor: AppColor.getRequestStatusColor(context, serviceRequest.statusValue!), - ), - 1.width.expanded, - ], - ), - 8.height, - Text(serviceRequest.deviceEnName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", - style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), - 8.height, - Text( - '${context.translation.assetNumber}: ${serviceRequest.device!.assetNumber}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.requestType}: ${serviceRequest.type!.name}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.equipmentStatus}: ${serviceRequest.defectType!.name}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.requestNo}: ${serviceRequest.requestCode}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.requesterName}: ${serviceRequest.callCreatedBy?.name ?? "-"}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - // if (userProvider.user!.type == UsersTypes.normal_user) - // context.translation.code.toSvgAsset(width: 48).onPress(() { - // Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest))); - // }), - if (userProvider.user!.type == UsersTypes.engineer) 16.height, - Text( - serviceRequest.date!.toServiceRequestCardFormat, - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), - ), - ], - ) - ], - ), - 8.height, - const Divider().defaultStyle(context), - 8.height, - Text( - '${context.translation.manufacture}: ${serviceRequest.device!.modelDefinition!.manufacturerName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.model}: ${serviceRequest.device!.modelDefinition!.modelName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.site}: ${serviceRequest.device!.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.building}: ${serviceRequest.device!.building?.name?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.floor}: ${serviceRequest.device!.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.department}: ${serviceRequest.device!.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.room}: ${(serviceRequest.device!.room?.name ?? "").cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - 8.height, - if ((serviceRequest.callComments ?? "").isNotEmpty) ...[ - const Divider().defaultStyle(context), - 8.height, - Text( - serviceRequest.callComments!, - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - ], - if (serviceRequest.devicePhotos?.isNotEmpty ?? false) ...[ - 8.height, - const Divider().defaultStyle(context), - FilesList(images: serviceRequest.devicePhotos!), - ], - if (serviceRequest.audio?.isNotEmpty ?? false) ...[ - const Divider().defaultStyle(context), - 16.height, - ASoundPlayer(audio: serviceRequest.audio!), - 8.height, - ], - ], - ).paddingOnly(start: 16, end: 16, top: 16, bottom: 8), - (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(20), - bottomRight: Radius.circular(20), - ), - ), - ), - 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), - 16.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) => CommentsBottomSheet(requestId: serviceRequest.id!), - ); - }), - ], - ).toShadowContainer(context, padding: 0); - } - - return Scaffold( - appBar: DefaultAppBar(title: context.translation.serviceDetails), - //backgroundColor: const Color(0xfff8f9fb), - body: SafeArea( - child: loading - ? const ALoading().center - : serviceRequest == null - ? Text( - context.translation.noDataFound, - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ).center - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SingleChildScrollView( - padding: const EdgeInsets.all(16), - child: informationCard(serviceRequest!), - ).expanded, - if (userProvider.user!.type == UsersTypes.engineer || (serviceRequest!.statusValue == 5 || serviceRequest!.statusValue == 3)) - (serviceRequest?.firstAction == null - ? AppFilledButton( - label: context.translation.firstAction, - maxWidth: true, - onPressed: () async { - bool shouldReloadData = (await showModalBottomSheet( - context: context, - useSafeArea: true, - isScrollControlled: true, - backgroundColor: Colors.transparent, - builder: (context) => FirstActionBottomSheet(request: serviceRequest!), - )) as bool; - if (shouldReloadData ?? false) { - getServiceRequest(); - } - }, - ) - : AppFilledButton( - label: context.translation.viewWorkOrder, - maxWidth: true, - onPressed: () { - Navigator.push( - context, - MaterialPageRoute(builder: (context) => WorkOrderListPage(serviceRequest: serviceRequest)), - ); - // Navigator.of(context).pushNamed(WorkOrderListPage.id, arguments: serviceRequest); - }, - )) - .paddingOnly(start: 16, end: 16, bottom: 24), - ], - ), - ), - ); - } -} +// +// //TODO old Flow .. +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/comments_provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +// import 'package:test_sa/controllers/providers/api/user_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/enums/user_types.dart'; +// import 'package:test_sa/models/service_request/service_request.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/default_app_bar.dart'; +// import 'package:test_sa/views/pages/user/requests/comments_bottom_sheet.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/work_orders_list_page.dart'; +// import 'package:test_sa/views/widgets/images/files_list.dart'; +// import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +// import 'package:test_sa/views/widgets/sound/sound_player.dart'; +// +// import '../../../widgets/requests/request_status.dart'; +// import 'first_action_bottom_sheet.dart'; +//// //todo @delete +// class ServiceRequestDetailsPage extends StatefulWidget { +// static const String id = "/call-details"; +// ServiceRequest serviceRequest; +// +// ServiceRequestDetailsPage({Key? key, required this.serviceRequest}) : super(key: key); +// +// @override +// State createState() => _ServiceRequestDetailsPageState(); +// } +// +// class _ServiceRequestDetailsPageState extends State { +// bool loading = false; +// ServiceRequest? serviceRequest; +// +// @override +// void initState() { +// super.initState(); +// getServiceRequest(); +// } +// +// void getServiceRequest() { +// loading = true; +// setState(() {}); +// WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { +// Provider.of(context, listen: false).reset(); +// serviceRequest = await Provider.of(context, listen: false).getServiceRequestObjectById(requestId: widget.serviceRequest.id!); +// loading = false; +// setState(() {}); +// }); +// } +// +// @override +// Widget build(BuildContext context) { +// UserProvider userProvider = Provider.of(context, listen: false); +// +// Widget informationCard(ServiceRequest serviceRequest) { +// return Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// mainAxisSize: MainAxisSize.min, +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Row( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Row( +// children: [ +// StatusLabel( +// label: serviceRequest.priority!.name, +// id: serviceRequest.priority!.id!, +// textColor: AppColor.getPriorityStatusTextColor(context, serviceRequest.priority!.id!), +// backgroundColor: AppColor.getPriorityStatusColor(context, serviceRequest.priority!.id!), +// ), +// 8.width, +// StatusLabel( +// label: serviceRequest.statusLabel, +// textColor: AppColor.getRequestStatusTextColor(context, serviceRequest.statusValue!), +// backgroundColor: AppColor.getRequestStatusColor(context, serviceRequest.statusValue!), +// ), +// 1.width.expanded, +// ], +// ), +// 8.height, +// Text(serviceRequest.deviceEnName?.cleanupWhitespace.capitalizeFirstOfEach ?? "", +// style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), +// 8.height, +// Text( +// '${context.translation.assetNumber}: ${serviceRequest.device!.assetNumber}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.requestType}: ${serviceRequest.type!.name}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.equipmentStatus}: ${serviceRequest.defectType!.name}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.requestNo}: ${serviceRequest.requestCode}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.requesterName}: ${serviceRequest.callCreatedBy?.name ?? "-"}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// ], +// ).expanded, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// children: [ +// // if (userProvider.user!.type == UsersTypes.normal_user) +// // context.translation.code.toSvgAsset(width: 48).onPress(() { +// // Navigator.push(context, MaterialPageRoute(builder: (context) => UpdateServiceRequestPage(serviceRequest: serviceRequest))); +// // }), +// if (userProvider.user!.type == UsersTypes.engineer) 16.height, +// Text( +// serviceRequest.date!.toServiceRequestCardFormat, +// textAlign: TextAlign.end, +// style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), +// ), +// ], +// ) +// ], +// ), +// 8.height, +// const Divider().defaultStyle(context), +// 8.height, +// Text( +// '${context.translation.manufacture}: ${serviceRequest.device!.modelDefinition!.manufacturerName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.model}: ${serviceRequest.device!.modelDefinition!.modelName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.site}: ${serviceRequest.device!.site?.custName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.building}: ${serviceRequest.device!.building?.name?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.floor}: ${serviceRequest.device!.floor?.name?.cleanupWhitespace.capitalizeFirstOfEach ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.department}: ${serviceRequest.device!.department?.departmentName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.room}: ${(serviceRequest.device!.room?.name ?? "").cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// 8.height, +// if ((serviceRequest.callComments ?? "").isNotEmpty) ...[ +// const Divider().defaultStyle(context), +// 8.height, +// Text( +// serviceRequest.callComments!, +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// ], +// if (serviceRequest.devicePhotos?.isNotEmpty ?? false) ...[ +// 8.height, +// const Divider().defaultStyle(context), +// FilesList(images: serviceRequest.devicePhotos!), +// ], +// if (serviceRequest.audio?.isNotEmpty ?? false) ...[ +// const Divider().defaultStyle(context), +// 16.height, +// ASoundPlayer(audio: serviceRequest.audio!), +// 8.height, +// ], +// ], +// ).paddingOnly(start: 16, end: 16, top: 16, bottom: 8), +// (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(20), +// bottomRight: Radius.circular(20), +// ), +// ), +// ), +// 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), +// 16.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) => CommentsBottomSheet(requestId: serviceRequest.id!), +// ); +// }), +// ], +// ).toShadowContainer(context, padding: 0); +// } +// +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.serviceDetails), +// //backgroundColor: const Color(0xfff8f9fb), +// body: SafeArea( +// child: loading +// ? const ALoading().center +// : serviceRequest == null +// ? Text( +// context.translation.noDataFound, +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ).center +// : Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// SingleChildScrollView( +// padding: const EdgeInsets.all(16), +// child: informationCard(serviceRequest!), +// ).expanded, +// if (userProvider.user!.type == UsersTypes.engineer || (serviceRequest!.statusValue == 5 || serviceRequest!.statusValue == 3)) +// (serviceRequest?.firstAction == null +// ? AppFilledButton( +// label: context.translation.firstAction, +// maxWidth: true, +// onPressed: () async { +// bool shouldReloadData = (await showModalBottomSheet( +// context: context, +// useSafeArea: true, +// isScrollControlled: true, +// backgroundColor: Colors.transparent, +// builder: (context) => FirstActionBottomSheet(request: serviceRequest!), +// )) as bool; +// if (shouldReloadData ?? false) { +// getServiceRequest(); +// } +// }, +// ) +// : AppFilledButton( +// label: context.translation.viewWorkOrder, +// maxWidth: true, +// onPressed: () { +// Navigator.push( +// context, +// MaterialPageRoute(builder: (context) => WorkOrderListPage(serviceRequest: serviceRequest)), +// ); +// // Navigator.of(context).pushNamed(WorkOrderListPage.id, arguments: serviceRequest); +// }, +// )) +// .paddingOnly(start: 16, end: 16, bottom: 24), +// ], +// ), +// ), +// ); +// } +// } diff --git a/lib/views/pages/user/requests/update_service_request_page.dart b/lib/views/pages/user/requests/update_service_request_page.dart index bf36c5cb..5e646747 100644 --- a/lib/views/pages/user/requests/update_service_request_page.dart +++ b/lib/views/pages/user/requests/update_service_request_page.dart @@ -1,173 +1,173 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_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/service_request/service_request.dart'; -import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; - -import '../../../../models/lookup.dart'; -import '../../../../new_views/app_style/app_color.dart'; -import '../../../../new_views/common_widgets/app_filled_button.dart'; -import '../../../../new_views/common_widgets/app_lazy_loading.dart'; -import '../../../../new_views/common_widgets/app_text_form_field.dart'; -import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; -import '../../../../providers/service_request_providers/equipment_status_provider.dart'; -import '../../../../providers/service_request_providers/priority_provider.dart'; -import '../../../../providers/service_request_providers/requested_through_provider.dart'; -import '../../../../providers/service_request_providers/type_of_request_provider.dart'; -import '../../../widgets/equipment/pick_asset.dart'; -import '../../../widgets/images/multi_image_picker.dart'; -import '../../../widgets/sound/record_sound.dart'; - -class UpdateServiceRequestPage extends StatefulWidget { - static const String id = "/update_service_request_page"; - final ServiceRequest? serviceRequest; - - const UpdateServiceRequestPage({Key? key, this.serviceRequest}) : super(key: key); - - @override - State createState() => _UpdateServiceRequestPageState(); -} - -class _UpdateServiceRequestPageState extends State { - final GlobalKey _formKey = GlobalKey(); - late TextEditingController _commentController; - List _deviceImages = []; - late UserProvider _userProvider; - - @override - void initState() { - super.initState(); - _deviceImages = widget.serviceRequest?.devicePhotos?.map((e) => File(e)).toList() ?? []; - _commentController = TextEditingController(text: widget.serviceRequest?.callComments ?? ""); - } - - @override - void dispose() { - _commentController.dispose(); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - _userProvider = Provider.of(context, listen: false); - return Scaffold( - appBar: DefaultAppBar(title: context.translation.updateServiceRequest), - body: SafeArea( - child: Form( - key: _formKey, - child: Column( - children: [ - SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - PickAsset( - editable: false, - device: widget.serviceRequest?.device, - onPickAsset: (asset) { - widget.serviceRequest!.device = asset; - setState(() {}); - }, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.priority, - initialValue: widget.serviceRequest?.priority, - onSelect: (value) { - widget.serviceRequest!.priority = value; - }, - ), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.equipmentStatus, - initialValue: widget.serviceRequest?.defectType, - onSelect: (value) { - widget.serviceRequest!.defectType = value; - }, - ), - 8.height, - Consumer(builder: (context, snapshot, _) { - return SingleItemDropDownMenu( - context: context, - enabled: false, - title: context.translation.source, - initialValue: snapshot.items.firstWhere((element) => element.value == 3, orElse: null), - ); - }), - 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.requestType, - initialValue: widget.serviceRequest?.type, - onSelect: (value) { - widget.serviceRequest!.type = value; - }, - ), - 8.height, - MultiFilesPicker(label: context.translation.attachImage, files: _deviceImages), - ((widget.serviceRequest!.devicePhotos?.isNotEmpty ?? false) ? 16 : 8).height, - Align( - alignment: AlignmentDirectional.centerStart, - child: context.translation.callComments.heading5(context), - ), - 8.height, - AppTextFormField( - controller: _commentController, - labelText: context.translation.problemDesc, - initialValue: widget.serviceRequest!.callComments, - suffixIcon: "warning".toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, width: 24).paddingOnly(end: 16), - onSaved: (text) { - widget.serviceRequest!.callComments = text; - }, - ), - 8.height, - RecordSound( - onRecord: (audio) { - widget.serviceRequest!.audio = audio; - }, - enabled: widget.serviceRequest == null ? true : false, - ), - 16.height, - ], - ), - ).expanded, - AppFilledButton(onPressed: _submit, label: context.translation.updateRequest), - ], - ), - ).paddingOnly(start: 16, end: 16, bottom: 24, top: 16), - ), - ); - } - - Future _submit() async { - widget.serviceRequest?.requestedThrough = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 3, orElse: null); - if (_formKey.currentState!.validate() && await widget.serviceRequest!.validateNewRequest(context)) { - _formKey.currentState!.save(); - widget.serviceRequest!.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList(); - if (widget.serviceRequest!.audio != null) { - if (_isLocalUrl(widget.serviceRequest!.audio!)) { - final File file = File(widget.serviceRequest!.audio!); - widget.serviceRequest!.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; - } - } - showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - await Provider.of(context, listen: false).updateRequest(user: _userProvider.user!, request: widget.serviceRequest!); - Navigator.of(context).pop(); - } - } - - bool _isLocalUrl(String url) { - if (url.isEmpty != false) return false; - return url.startsWith("/") || url.startsWith("file://") || url.substring(1).startsWith(':\\'); - } -} +// import 'dart:convert'; +// import 'dart:io'; +// +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +// import 'package:test_sa/controllers/providers/api/user_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/service_request/service_request.dart'; +// import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; +// +// import '../../../../models/lookup.dart'; +// import '../../../../new_views/app_style/app_color.dart'; +// import '../../../../new_views/common_widgets/app_filled_button.dart'; +// import '../../../../new_views/common_widgets/app_lazy_loading.dart'; +// import '../../../../new_views/common_widgets/app_text_form_field.dart'; +// import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; +// import '../../../../providers/service_request_providers/equipment_status_provider.dart'; +// import '../../../../providers/service_request_providers/priority_provider.dart'; +// import '../../../../providers/service_request_providers/requested_through_provider.dart'; +// import '../../../../providers/service_request_providers/type_of_request_provider.dart'; +// import '../../../widgets/equipment/pick_asset.dart'; +// import '../../../widgets/images/multi_image_picker.dart'; +// import '../../../widgets/sound/record_sound.dart'; +// +// class UpdateServiceRequestPage extends StatefulWidget { +// static const String id = "/update_service_request_page"; +// final ServiceRequest? serviceRequest; +// +// const UpdateServiceRequestPage({Key? key, this.serviceRequest}) : super(key: key); +// +// @override +// State createState() => _UpdateServiceRequestPageState(); +// } +// +// class _UpdateServiceRequestPageState extends State { +// final GlobalKey _formKey = GlobalKey(); +// late TextEditingController _commentController; +// List _deviceImages = []; +// late UserProvider _userProvider; +//// //todo @delete +// @override +// void initState() { +// super.initState(); +// _deviceImages = widget.serviceRequest?.devicePhotos?.map((e) => File(e)).toList() ?? []; +// _commentController = TextEditingController(text: widget.serviceRequest?.callComments ?? ""); +// } +// +// @override +// void dispose() { +// _commentController.dispose(); +// super.dispose(); +// } +// +// @override +// Widget build(BuildContext context) { +// _userProvider = Provider.of(context, listen: false); +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.updateServiceRequest), +// body: SafeArea( +// child: Form( +// key: _formKey, +// child: Column( +// children: [ +// SingleChildScrollView( +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// PickAsset( +// editable: false, +// device: widget.serviceRequest?.device, +// onPickAsset: (asset) { +// widget.serviceRequest!.device = asset; +// setState(() {}); +// }, +// ), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.priority, +// initialValue: widget.serviceRequest?.priority, +// onSelect: (value) { +// widget.serviceRequest!.priority = value; +// }, +// ), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.equipmentStatus, +// initialValue: widget.serviceRequest?.defectType, +// onSelect: (value) { +// widget.serviceRequest!.defectType = value; +// }, +// ), +// 8.height, +// Consumer(builder: (context, snapshot, _) { +// return SingleItemDropDownMenu( +// context: context, +// enabled: false, +// title: context.translation.source, +// initialValue: snapshot.items.firstWhere((element) => element.value == 3, orElse: null), +// ); +// }), +// 8.height, +// SingleItemDropDownMenu( +// context: context, +// title: context.translation.requestType, +// initialValue: widget.serviceRequest?.type, +// onSelect: (value) { +// widget.serviceRequest!.type = value; +// }, +// ), +// 8.height, +// MultiFilesPicker(label: context.translation.attachImage, files: _deviceImages), +// ((widget.serviceRequest!.devicePhotos?.isNotEmpty ?? false) ? 16 : 8).height, +// Align( +// alignment: AlignmentDirectional.centerStart, +// child: context.translation.callComments.heading5(context), +// ), +// 8.height, +// AppTextFormField( +// controller: _commentController, +// labelText: context.translation.problemDesc, +// initialValue: widget.serviceRequest!.callComments, +// suffixIcon: "warning".toSvgAsset(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20, width: 24).paddingOnly(end: 16), +// onSaved: (text) { +// widget.serviceRequest!.callComments = text; +// }, +// ), +// 8.height, +// RecordSound( +// onRecord: (audio) { +// widget.serviceRequest!.audio = audio; +// }, +// enabled: widget.serviceRequest == null ? true : false, +// ), +// 16.height, +// ], +// ), +// ).expanded, +// AppFilledButton(onPressed: _submit, label: context.translation.updateRequest), +// ], +// ), +// ).paddingOnly(start: 16, end: 16, bottom: 24, top: 16), +// ), +// ); +// } +// +// Future _submit() async { +// widget.serviceRequest?.requestedThrough = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 3, orElse: null); +// if (_formKey.currentState!.validate() && await widget.serviceRequest!.validateNewRequest(context)) { +// _formKey.currentState!.save(); +// widget.serviceRequest!.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList(); +// if (widget.serviceRequest!.audio != null) { +// if (_isLocalUrl(widget.serviceRequest!.audio!)) { +// final File file = File(widget.serviceRequest!.audio!); +// widget.serviceRequest!.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; +// } +// } +// showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); +// await Provider.of(context, listen: false).updateRequest(user: _userProvider.user!, request: widget.serviceRequest!); +// Navigator.of(context).pop(); +// } +// } +// +// bool _isLocalUrl(String url) { +// if (url.isEmpty != false) return false; +// return url.startsWith("/") || url.startsWith("file://") || url.substring(1).startsWith(':\\'); +// } +// } diff --git a/lib/views/pages/user/requests/work_order/work_order_details_page.dart b/lib/views/pages/user/requests/work_order/work_order_details_page.dart index ef6b94bb..b82d76fd 100644 --- a/lib/views/pages/user/requests/work_order/work_order_details_page.dart +++ b/lib/views/pages/user/requests/work_order/work_order_details_page.dart @@ -1,126 +1,126 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/service_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/models/service_request/service_request.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/default_app_bar.dart'; -import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; -import 'package:test_sa/views/widgets/images/files_list.dart'; -import 'package:test_sa/views/widgets/loaders/app_loading.dart'; - -import '../../../../../controllers/providers/api/user_provider.dart'; -import '../../../../../models/enums/user_types.dart'; -import '../../../../../models/service_request/search_work_order.dart'; -import '../../../../../models/service_request/service_report.dart'; -import '../../../../widgets/requests/request_status.dart'; - -class WorkOrderDetailsPage extends StatelessWidget { - static const String id = "/work_order_details_page"; - final SearchWorkOrder? workOrder; - final ServiceRequest? serviceRequest; - - const WorkOrderDetailsPage({Key? key, this.workOrder, this.serviceRequest}) : super(key: key); - - @override - Widget build(BuildContext context) { - UserProvider userProvider = Provider.of(context); - return Scaffold( - appBar: DefaultAppBar(title: context.translation.activities), - body: FutureBuilder( - future: Provider.of(context).getSingleServiceReport(context, reportId: workOrder!.id!.toInt()), - builder: (context, snapshot) { - final workOrderDetails = snapshot.data; - return Column( - children: [ - snapshot.connectionState == ConnectionState.waiting - ? const Expanded(child: ALoading()) - : SingleChildScrollView( - child: Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: workOrderDetails?.currentSituation?.name, - textColor: AppColor.getRequestStatusTextColorByName(context, workOrderDetails?.currentSituation?.name), - backgroundColor: AppColor.getRequestStatusColorByName(context, workOrderDetails?.currentSituation?.name), - ), - 8.height, - Text(serviceRequest!.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), - 8.height, - Text( - '${context.translation.assetName}: ${workOrderDetails?.callRequest?.asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.orderWorkNumber}: ${workOrderDetails!.workOrderNo}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text( - '${context.translation.assignedEmployee}: ${workOrderDetails.assignedEmployee?.name ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - ), - Text('${context.translation.assetSN}: ${workOrderDetails.callRequest?.asset?.assetSerialNo ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.assetName}: ${workOrderDetails.callRequest?.asset?.modelDefinition?.assetName ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.assetNumber}: ${workOrderDetails.callRequest?.asset?.assetNumber ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.model}: ${workOrderDetails.callRequest?.asset?.modelDefinition?.modelName ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.site}: ${workOrderDetails.callRequest?.asset?.site?.custName ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.currentSituation}: ${workOrderDetails.currentSituation?.name}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('Situation: ${workOrderDetails.calllastSituation?.name ?? '' ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.startDate}: ${workOrderDetails.startofWorkTime?.toServiceRequestDetailsFormat ?? "" ?? '' ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - Text('${context.translation.endDate}: ${workOrderDetails.endofWorkTime?.toServiceRequestDetailsFormat ?? "" ?? '' ?? ""}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - if (workOrderDetails.attachmentsWorkOrder?.isNotEmpty ?? false) ...[ - 8.height, - const Divider().defaultStyle(context), - FilesList(images: workOrderDetails.attachmentsWorkOrder!.map((e) => e.name!).toList()), - ], - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (userProvider.user!.type == UsersTypes.engineer && serviceRequest?.statusValue != 5 && serviceRequest?.statusValue != 3) - Align(alignment: AlignmentDirectional.centerEnd, child: "edit_icon".toSvgAsset(height: 21, width: 21)).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateServiceReport(workOrder: workOrder!, request: serviceRequest!))); - }), - // if (userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, - // Text(workOrderDetails.endofWorkTime?.toServiceRequestCardFormat ?? "", - // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), - ], - ) - ], - ).toShadowContainer(context), - ).paddingAll(16).expanded, - if (userProvider.user!.type == UsersTypes.engineer && serviceRequest?.statusValue != 5 && serviceRequest?.statusValue != 3) - AppFilledButton( - onPressed: () { - Navigator.of(context).push( - MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: workOrder)), - ); - }, - label: context.translation.createSubWorkOrder, - ).paddingAll(16), - ], - ); - }), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_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/models/service_request/service_request.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/default_app_bar.dart'; +// import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/update_service_report.dart'; +// import 'package:test_sa/views/widgets/images/files_list.dart'; +// import 'package:test_sa/views/widgets/loaders/app_loading.dart'; +// +// import '../../../../../controllers/providers/api/user_provider.dart'; +// import '../../../../../models/enums/user_types.dart'; +// import '../../../../../models/service_request/search_work_order.dart'; +// import '../../../../../models/service_request/service_report.dart'; +// import '../../../../widgets/requests/request_status.dart'; +// +// class WorkOrderDetailsPage extends StatelessWidget { +// static const String id = "/work_order_details_page"; +// final SearchWorkOrder? workOrder; +// final ServiceRequest? serviceRequest; +//// //todo @delete +// const WorkOrderDetailsPage({Key? key, this.workOrder, this.serviceRequest}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// UserProvider userProvider = Provider.of(context); +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.activities), +// body: FutureBuilder( +// future: Provider.of(context).getSingleServiceReport(context, reportId: workOrder!.id!.toInt()), +// builder: (context, snapshot) { +// final workOrderDetails = snapshot.data; +// return Column( +// children: [ +// snapshot.connectionState == ConnectionState.waiting +// ? const Expanded(child: ALoading()) +// : SingleChildScrollView( +// child: Row( +// mainAxisSize: MainAxisSize.min, +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// StatusLabel( +// label: workOrderDetails?.currentSituation?.name, +// textColor: AppColor.getRequestStatusTextColorByName(context, workOrderDetails?.currentSituation?.name), +// backgroundColor: AppColor.getRequestStatusColorByName(context, workOrderDetails?.currentSituation?.name), +// ), +// 8.height, +// Text(serviceRequest!.requestCode!, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), +// 8.height, +// Text( +// '${context.translation.assetName}: ${workOrderDetails?.callRequest?.asset?.modelDefinition?.assetName?.cleanupWhitespace.capitalizeFirstOfEach}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.orderWorkNumber}: ${workOrderDetails!.workOrderNo}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text( +// '${context.translation.assignedEmployee}: ${workOrderDetails.assignedEmployee?.name ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// ), +// Text('${context.translation.assetSN}: ${workOrderDetails.callRequest?.asset?.assetSerialNo ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.assetName}: ${workOrderDetails.callRequest?.asset?.modelDefinition?.assetName ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.assetNumber}: ${workOrderDetails.callRequest?.asset?.assetNumber ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.model}: ${workOrderDetails.callRequest?.asset?.modelDefinition?.modelName ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.site}: ${workOrderDetails.callRequest?.asset?.site?.custName ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.currentSituation}: ${workOrderDetails.currentSituation?.name}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('Situation: ${workOrderDetails.calllastSituation?.name ?? '' ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.startDate}: ${workOrderDetails.startofWorkTime?.toServiceRequestDetailsFormat ?? "" ?? '' ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// Text('${context.translation.endDate}: ${workOrderDetails.endofWorkTime?.toServiceRequestDetailsFormat ?? "" ?? '' ?? ""}', +// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// if (workOrderDetails.attachmentsWorkOrder?.isNotEmpty ?? false) ...[ +// 8.height, +// const Divider().defaultStyle(context), +// FilesList(images: workOrderDetails.attachmentsWorkOrder!.map((e) => e.name!).toList()), +// ], +// ], +// ).expanded, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// children: [ +// if (userProvider.user!.type == UsersTypes.engineer && serviceRequest?.statusValue != 5 && serviceRequest?.statusValue != 3) +// Align(alignment: AlignmentDirectional.centerEnd, child: "edit_icon".toSvgAsset(height: 21, width: 21)).onPress(() { +// Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateServiceReport(workOrder: workOrder!, request: serviceRequest!))); +// }), +// // if (userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, +// // Text(workOrderDetails.endofWorkTime?.toServiceRequestCardFormat ?? "", +// // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20)), +// ], +// ) +// ], +// ).toShadowContainer(context), +// ).paddingAll(16).expanded, +// if (userProvider.user!.type == UsersTypes.engineer && serviceRequest?.statusValue != 5 && serviceRequest?.statusValue != 3) +// AppFilledButton( +// onPressed: () { +// Navigator.of(context).push( +// MaterialPageRoute(builder: (context) => CreateSubWorkOrderPage(workOrder: workOrder)), +// ); +// }, +// label: context.translation.createSubWorkOrder, +// ).paddingAll(16), +// ], +// ); +// }), +// ); +// } +// } diff --git a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart index f9dc40fd..c451665f 100644 --- a/lib/views/pages/user/requests/work_order/work_orders_list_page.dart +++ b/lib/views/pages/user/requests/work_order/work_orders_list_page.dart @@ -1,127 +1,127 @@ -import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; -import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; -import 'package:test_sa/controllers/providers/api/user_provider.dart'; -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/enums/user_types.dart'; -import 'package:test_sa/models/service_request/search_work_order.dart'; -import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; -import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/cm_module/views/components/activity_card_view.dart'; -import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart'; -import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; - -class WorkOrderListPage extends StatelessWidget { - static const String id = "/work-order-list"; - final ServiceRequest? serviceRequest; - - WorkOrderListPage({Key? key, this.serviceRequest}) : super(key: key); - - late ServiceRequestsProvider serviceRequestsProvider; - late UserProvider _userProvider; - - @override - Widget build(BuildContext context) { - List workOrders = []; - _userProvider = Provider.of(context); - serviceRequestsProvider = Provider.of(context); - return Scaffold( - appBar: DefaultAppBar(title: context.translation.activities), - //backgroundColor: const Color(0xfff8f9fb), - body: SafeArea( - child: FutureBuilder( - future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest!.requestCode!), - builder: (context, snap) { - if (snap.connectionState == ConnectionState.waiting) return const Center(child: CircularProgressIndicator()); - workOrders = snap.data as List; - return Column( - children: [ - (workOrders.isEmpty) - ? NoDataFound(message: context.translation.noDataFound).expanded - : ListView.separated( - padding: const EdgeInsets.all(16), - itemCount: workOrders.length, - separatorBuilder: (czt, index) => 8.height, - itemBuilder: (context, index) { - return ActivityCardView(workOrders[index], serviceRequest!); - - //older code.... - // Row( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // Column( - // mainAxisSize: MainAxisSize.min, - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // StatusLabel( - // label: workOrders[index].currentSituation.name, - // textColor: AppColor.getRequestStatusTextColorByName(context, workOrders[index].currentSituation.name), - // backgroundColor: AppColor.getRequestStatusColorByName(context, workOrders[index].currentSituation.name), - // ), - // 8.height, - // Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), - // Text( - // '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}', - // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - // ), - // Text( - // '${context.translation.currentSituation}: ${workOrders[index].currentSituation.name}', - // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), - // ), - // 16.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) - // ], - // ), - // ], - // ).onPress(() { - // Navigator.push( - // context, - // MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)), - // ); - // }).expanded, - // Column( - // crossAxisAlignment: CrossAxisAlignment.end, - // mainAxisAlignment: MainAxisAlignment.start, - // children: [ - // if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) - // "edit".toSvgAsset(height: 48, width: 48).onPress(() { - // Navigator.of(context).push( - // MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])), - // ); - // }), - // if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, - // Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", - // textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), - // ], - // ) - // ], - // ).toShadowContainer(context); - }, - ).expanded, - if (_userProvider.user!.type == UsersTypes.engineer && (serviceRequest!.statusValue != 5 && serviceRequest!.statusValue != 3)) - AppFilledButton( - label: context.translation.createWorkOrder, - maxWidth: true, - onPressed: () { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest!))); - }, - ).paddingOnly(start: 16, end: 16, bottom: 16) - ], - ); - }, - ), - ), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.dart'; +// import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +// import 'package:test_sa/controllers/providers/api/user_provider.dart'; +// 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/enums/user_types.dart'; +// import 'package:test_sa/models/service_request/search_work_order.dart'; +// import 'package:test_sa/models/service_request/service_request.dart'; +// import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; +// import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; +// import 'package:test_sa/cm_module/views/components/activity_card_view.dart'; +// import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart'; +// import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; +//// //todo @delete +// class WorkOrderListPage extends StatelessWidget { +// static const String id = "/work-order-list"; +// final ServiceRequest? serviceRequest; +// +// WorkOrderListPage({Key? key, this.serviceRequest}) : super(key: key); +// +// late ServiceRequestsProvider serviceRequestsProvider; +// late UserProvider _userProvider; +// +// @override +// Widget build(BuildContext context) { +// List workOrders = []; +// _userProvider = Provider.of(context); +// serviceRequestsProvider = Provider.of(context); +// return Scaffold( +// appBar: DefaultAppBar(title: context.translation.activities), +// //backgroundColor: const Color(0xfff8f9fb), +// body: SafeArea( +// child: FutureBuilder( +// future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest!.requestCode!), +// builder: (context, snap) { +// if (snap.connectionState == ConnectionState.waiting) return const Center(child: CircularProgressIndicator()); +// workOrders = snap.data as List; +// return Column( +// children: [ +// (workOrders.isEmpty) +// ? NoDataFound(message: context.translation.noDataFound).expanded +// : ListView.separated( +// padding: const EdgeInsets.all(16), +// itemCount: workOrders.length, +// separatorBuilder: (czt, index) => 8.height, +// itemBuilder: (context, index) { +// return ActivityCardView(workOrders[index], serviceRequest!); +// +// //older code.... +// // Row( +// // crossAxisAlignment: CrossAxisAlignment.start, +// // children: [ +// // Column( +// // mainAxisSize: MainAxisSize.min, +// // crossAxisAlignment: CrossAxisAlignment.start, +// // children: [ +// // StatusLabel( +// // label: workOrders[index].currentSituation.name, +// // textColor: AppColor.getRequestStatusTextColorByName(context, workOrders[index].currentSituation.name), +// // backgroundColor: AppColor.getRequestStatusColorByName(context, workOrders[index].currentSituation.name), +// // ), +// // 8.height, +// // Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50)), +// // Text( +// // '${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}', +// // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// // ), +// // Text( +// // '${context.translation.currentSituation}: ${workOrders[index].currentSituation.name}', +// // style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), +// // ), +// // 16.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) +// // ], +// // ), +// // ], +// // ).onPress(() { +// // Navigator.push( +// // context, +// // MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)), +// // ); +// // }).expanded, +// // Column( +// // crossAxisAlignment: CrossAxisAlignment.end, +// // mainAxisAlignment: MainAxisAlignment.start, +// // children: [ +// // if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) +// // "edit".toSvgAsset(height: 48, width: 48).onPress(() { +// // Navigator.of(context).push( +// // MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])), +// // ); +// // }), +// // if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3) 8.height, +// // Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "", +// // textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))), +// // ], +// // ) +// // ], +// // ).toShadowContainer(context); +// }, +// ).expanded, +// if (_userProvider.user!.type == UsersTypes.engineer && (serviceRequest!.statusValue != 5 && serviceRequest!.statusValue != 3)) +// AppFilledButton( +// label: context.translation.createWorkOrder, +// maxWidth: true, +// onPressed: () { +// Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest!))); +// }, +// ).paddingOnly(start: 16, end: 16, bottom: 16) +// ], +// ); +// }, +// ), +// ), +// ); +// } +// } diff --git a/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart b/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart index 85c5fec6..0fe771f7 100644 --- a/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart +++ b/lib/views/widgets/bottom_sheets/request_approval_waiting_bottom_sheet.dart @@ -3,17 +3,12 @@ import 'dart:io'; import 'package:firebase_messaging/firebase_messaging.dart'; 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:provider/provider.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/main.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/cm_module/service_request_detail_provider.dart'; class RequestApprovalBottomSheet extends StatefulWidget { - RequestApprovalBottomSheet({Key? key}) : super(key: key); @override @@ -46,11 +41,11 @@ class _RequestApprovalBottomState extends State { // }); } else { FirebaseMessaging.onMessage.listen((RemoteMessage message) { - ConfirmArrivalNotificationModel notificationModel = ConfirmArrivalNotificationModel.fromJson(message.data); - if(notificationModel.requestId!=null&¬ificationModel.accept!=null){ - if(notificationModel.accept=='True'){ - Navigator.pop(context,true); - }else if(notificationModel.accept=='False'){ + ConfirmArrivalNotificationModel notificationModel = ConfirmArrivalNotificationModel.fromJson(message.data); + if (notificationModel.requestId != null && notificationModel.accept != null) { + if (notificationModel.accept == 'True') { + Navigator.pop(context, true); + } else if (notificationModel.accept == 'False') { Navigator.pop(context, false); } } @@ -121,6 +116,7 @@ class _RequestApprovalBottomState extends State { ; } } + class ConfirmArrivalNotificationModel { final String? transactionType; final String? requestId; @@ -158,4 +154,3 @@ class ConfirmArrivalNotificationModel { }; } } - diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index 27e4700b..e6ad3e6d 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -1,68 +1,68 @@ -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/widget_extensions.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 DeviceTransfer item; - final Function(DeviceTransfer) onPressed; - - const DeviceTransferItem({Key? key,required this.item,required this.onPressed,required this.index}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - context.translation.deviceTransferRequest.heading5(context), - '${context.translation.from} : ${item.senderAssignedEmployeeName}'.bodyText(context), - '${context.translation.to} : ${item.receiverAssignedEmployeeName}'.bodyText(context), - 8.height, - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Text( - context.translation.viewDetails, - style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), - ), - 4.width, - const Icon( - Icons.arrow_forward, - color: Color(0xFF4A8DB7), - size: 14, - ) - ], - ).onPress(() => onPressed(item)), - ], - ).expanded, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - /// TBD - // StatusLabel( - // label: '', - // id: 0, - // textColor: AColors.getPriorityStatusTextColor(0), - // backgroundColor: AColors.getPriorityStatusColor(0)), - // 8.width, - - /// TBD - //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), - 1.width, - Text(item.createdOn != null ? item.createdOn!.toServiceRequestCardFormat : "", - textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF3B3D4A))), - ], - ), - ], - ).toShadowContainer(context).paddingOnly(bottom: 8); - } -} +// 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/widget_extensions.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 DeviceTransfer item; +// final Function(DeviceTransfer) onPressed; +// +// const DeviceTransferItem({Key? key,required this.item,required this.onPressed,required this.index}) : super(key: key); +//// //todo @delete +// @override +// Widget build(BuildContext context) { +// return Row( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// crossAxisAlignment: CrossAxisAlignment.stretch, +// children: [ +// context.translation.deviceTransferRequest.heading5(context), +// '${context.translation.from} : ${item.senderAssignedEmployeeName}'.bodyText(context), +// '${context.translation.to} : ${item.receiverAssignedEmployeeName}'.bodyText(context), +// 8.height, +// Row( +// mainAxisSize: MainAxisSize.min, +// children: [ +// Text( +// context.translation.viewDetails, +// style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)), +// ), +// 4.width, +// const Icon( +// Icons.arrow_forward, +// color: Color(0xFF4A8DB7), +// size: 14, +// ) +// ], +// ).onPress(() => onPressed(item)), +// ], +// ).expanded, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// children: [ +// /// TBD +// // StatusLabel( +// // label: '', +// // id: 0, +// // textColor: AColors.getPriorityStatusTextColor(0), +// // backgroundColor: AColors.getPriorityStatusColor(0)), +// // 8.width, +// +// /// TBD +// //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)), +// 1.width, +// Text(item.createdOn != null ? item.createdOn!.toServiceRequestCardFormat : "", +// textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF3B3D4A))), +// ], +// ), +// ], +// ).toShadowContainer(context).paddingOnly(bottom: 8); +// } +// } diff --git a/lib/views/widgets/device_trancfer/device_transfer_list.dart b/lib/views/widgets/device_trancfer/device_transfer_list.dart index d6f08899..5238de10 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_list.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_list.dart @@ -1,41 +1,41 @@ -import 'package:flutter/material.dart'; -import 'package:test_sa/extensions/context_extension.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 bool nextPage; - final Future Function() onLazyLoad; - - const DeviceTransferList({Key? key,required this.items,required this.nextPage,required this.onLazyLoad}) : super(key: key); - - @override - Widget build(BuildContext context) { - if (items.isEmpty) { - return NoDataFound( - message: context.translation.noServiceRequestFound, - ); - } - return LazyLoading( - nextPage: nextPage, - onLazyLoad: onLazyLoad, - child: ListView.builder( - //physics: const BouncingScrollPhysics(), - itemCount: items.length, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - itemBuilder: (context, itemIndex) { - return DeviceTransferItem( - index: itemIndex, - item: items[itemIndex], - onPressed: (model) async { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: model))); - }, - ); - }), - ); - } -} +// import 'package:flutter/material.dart'; +// import 'package:test_sa/extensions/context_extension.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 bool nextPage; +// final Future Function() onLazyLoad; +//// //todo @delete +// const DeviceTransferList({Key? key,required this.items,required this.nextPage,required this.onLazyLoad}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// if (items.isEmpty) { +// return NoDataFound( +// message: context.translation.noServiceRequestFound, +// ); +// } +// return LazyLoading( +// nextPage: nextPage, +// onLazyLoad: onLazyLoad, +// child: ListView.builder( +// //physics: const BouncingScrollPhysics(), +// itemCount: items.length, +// padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), +// itemBuilder: (context, itemIndex) { +// return DeviceTransferItem( +// index: itemIndex, +// item: items[itemIndex], +// onPressed: (model) async { +// Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: model))); +// }, +// ); +// }), +// ); +// } +// } diff --git a/lib/views/widgets/ppm/ppm_item.dart b/lib/views/widgets/ppm/ppm_item.dart index ad8361ca..101499d5 100644 --- a/lib/views/widgets/ppm/ppm_item.dart +++ b/lib/views/widgets/ppm/ppm_item.dart @@ -1,92 +1,91 @@ -import 'package:flutter/material.dart'; -import 'package:provider/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/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/ppm/ppm.dart'; -import 'package:test_sa/new_views/app_style/app_color.dart'; -import 'package:test_sa/views/pages/user/ppm/ppm_details_page.dart'; -import 'package:test_sa/views/pages/user/ppm/update_ppm/update_ppm.dart'; - -import '../../../controllers/providers/api/user_provider.dart'; -import '../../../extensions/text_extensions.dart'; -import '../requests/request_status.dart'; - -class PpmItem extends StatelessWidget { - final Ppm ppm; - final RequestsDetails? request; - - const PpmItem({Key? key, required this.ppm, this.request}) : super(key: key); - - @override - Widget build(BuildContext context) { - UserProvider userProvider = Provider.of(context); - return Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - if (request?.priority != null) - StatusLabel( - label: request!.priority, - textColor: AppColor.getRequestStatusTextColorByName(context, request!.priority!), - backgroundColor: AppColor.getRequestStatusColorByName(context, request!.priority!), - ), - if (request?.priority != null) 8.width, - StatusLabel( - label: ppm.visitStatusName, - id: ppm.deviceStatusId!.toInt(), - textColor: AppColor.getRequestStatusTextColorByName(context, ppm.visitStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, ppm.visitStatusName!), - ), - 1.width.expanded, - ], - ), - 8.height, - ppm.assetName!.heading5(context), - 8.height, - '${context.translation.assetNumber}: ${ppm.assetNumber}'.bodyText(context), - '${context.translation.assetSN}: ${ppm.assetSerialNo}'.bodyText(context), - '${context.translation.code}: ${ppm.visitCode}'.bodyText(context), - 16.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) - ], - ).onPress(() { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(requestId: ppm.id!.toInt()))); - }), - ], - ).expanded, - 8.width, - Column( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - if (userProvider.user!.type == UsersTypes.engineer && (ppm.deviceStatusId != 270 || ppm.deviceStatusId != 269)) - "edit".toSvgAsset(height: 48, width: 48).onPress(() { - // Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdatePpm(ppm: ppm, details: request, planPreventiveVisit: null,))); - }), - if (userProvider.user!.type == UsersTypes.engineer && (ppm.deviceStatusId != 270 || ppm.deviceStatusId != 269)) 8.height, - Text( - ppm.createdOn?.toServiceRequestCardFormat ?? "", - textAlign: TextAlign.end, - style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), - ), - ], - ) - ], - ).toShadowContainer(context).paddingOnly(bottom: 8); - } -} +// import 'package:flutter/material.dart'; +// import 'package:provider/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/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/ppm/ppm.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 '../../../controllers/providers/api/user_provider.dart'; +// import '../../../extensions/text_extensions.dart'; +// import '../requests/request_status.dart'; +//todo @delete +// class PpmItem extends StatelessWidget { +// final Ppm ppm; +// final RequestsDetails? request; +// +// const PpmItem({Key? key, required this.ppm, this.request}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// UserProvider userProvider = Provider.of(context); +// return Row( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// children: [ +// Row( +// children: [ +// if (request?.priority != null) +// StatusLabel( +// label: request!.priority, +// textColor: AppColor.getRequestStatusTextColorByName(context, request!.priority!), +// backgroundColor: AppColor.getRequestStatusColorByName(context, request!.priority!), +// ), +// if (request?.priority != null) 8.width, +// StatusLabel( +// label: ppm.visitStatusName, +// id: ppm.deviceStatusId!.toInt(), +// textColor: AppColor.getRequestStatusTextColorByName(context, ppm.visitStatusName!), +// backgroundColor: AppColor.getRequestStatusColorByName(context, ppm.visitStatusName!), +// ), +// 1.width.expanded, +// ], +// ), +// 8.height, +// ppm.assetName!.heading5(context), +// 8.height, +// '${context.translation.assetNumber}: ${ppm.assetNumber}'.bodyText(context), +// '${context.translation.assetSN}: ${ppm.assetSerialNo}'.bodyText(context), +// '${context.translation.code}: ${ppm.visitCode}'.bodyText(context), +// 16.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) +// ], +// ).onPress(() { +// Navigator.of(context).push(MaterialPageRoute(builder: (_) => PpmDetailsPage(requestId: ppm.id!.toInt()))); +// }), +// ], +// ).expanded, +// 8.width, +// Column( +// crossAxisAlignment: CrossAxisAlignment.end, +// children: [ +// if (userProvider.user!.type == UsersTypes.engineer && (ppm.deviceStatusId != 270 || ppm.deviceStatusId != 269)) +// "edit".toSvgAsset(height: 48, width: 48).onPress(() { +// // Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdatePpm(ppm: ppm, details: request, planPreventiveVisit: null,))); +// }), +// if (userProvider.user!.type == UsersTypes.engineer && (ppm.deviceStatusId != 270 || ppm.deviceStatusId != 269)) 8.height, +// Text( +// ppm.createdOn?.toServiceRequestCardFormat ?? "", +// textAlign: TextAlign.end, +// style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), +// ), +// ], +// ) +// ], +// ).toShadowContainer(context).paddingOnly(bottom: 8); +// } +// } diff --git a/lib/views/widgets/requests/service_request_list.dart b/lib/views/widgets/requests/service_request_list.dart index 5f6551ae..10014041 100644 --- a/lib/views/widgets/requests/service_request_list.dart +++ b/lib/views/widgets/requests/service_request_list.dart @@ -1,48 +1,48 @@ - -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/models/service_request/service_request.dart'; -import 'package:test_sa/views/pages/user/requests/service_request_details.dart'; -import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; -import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; -import 'package:test_sa/views/widgets/requests/service_request_item.dart'; - -class ServiceRequestsList extends StatelessWidget { - final List requests; - final bool nextPage; - final Future Function() onLazyLoad; - - const ServiceRequestsList({Key? key,required this.requests,required this.nextPage,required this.onLazyLoad}) : super(key: key); - - @override - Widget build(BuildContext context) { - print('servies request page'); - if (requests.isEmpty) { - return NoDataFound( - message: context.translation.noServiceRequestFound, - ); - } - return LazyLoading( - nextPage: nextPage, - onLazyLoad: onLazyLoad, - child: ListView.separated( - //physics: BouncingScrollPhysics(), - itemCount: requests.length, - padding: const EdgeInsets.all(16), - separatorBuilder: (cxt, index) => 8.height, - itemBuilder: (context, itemIndex) { - return ServiceRequestItem( - index: itemIndex, - request: requests[itemIndex], - onPressed: (request) { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => ServiceRequestDetailsPage( - serviceRequest: request, - ))); - }, - ); - }), - ); - } -} +// +// 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/models/service_request/service_request.dart'; +// import 'package:test_sa/views/pages/user/requests/service_request_details.dart'; +// import 'package:test_sa/views/widgets/loaders/lazy_loading.dart'; +// import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; +// import 'package:test_sa/views/widgets/requests/service_request_item.dart'; +//// //todo @delete +// class ServiceRequestsList extends StatelessWidget { +// final List requests; +// final bool nextPage; +// final Future Function() onLazyLoad; +// +// const ServiceRequestsList({Key? key,required this.requests,required this.nextPage,required this.onLazyLoad}) : super(key: key); +// +// @override +// Widget build(BuildContext context) { +// print('servies request page'); +// if (requests.isEmpty) { +// return NoDataFound( +// message: context.translation.noServiceRequestFound, +// ); +// } +// return LazyLoading( +// nextPage: nextPage, +// onLazyLoad: onLazyLoad, +// child: ListView.separated( +// //physics: BouncingScrollPhysics(), +// itemCount: requests.length, +// padding: const EdgeInsets.all(16), +// separatorBuilder: (cxt, index) => 8.height, +// itemBuilder: (context, itemIndex) { +// return ServiceRequestItem( +// index: itemIndex, +// request: requests[itemIndex], +// onPressed: (request) { +// Navigator.of(context).push(MaterialPageRoute( +// builder: (_) => ServiceRequestDetailsPage( +// serviceRequest: request, +// ))); +// }, +// ); +// }), +// ); +// } +// }