From f6b3c82fb348c19f50bbed2225570f533b5a1451 Mon Sep 17 00:00:00 2001 From: "muhammad.abbasi" Date: Sun, 6 Oct 2024 13:43:21 +0300 Subject: [PATCH] activity status on sparepart activity and last situation in maintenance request added --- lib/l10n/app_ar.arb | 1 + lib/l10n/app_en.arb | 1 + lib/main.dart | 3 +- .../activity_maintenance_model.dart | 8 +++-- .../last_situation_provider.dart | 36 +++++++++++++++++++ .../reject_reason_provider.dart | 1 - .../components/activities_list_view.dart | 1 + .../components/internal_request.dart | 18 ++++++++-- 8 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 lib/providers/service_request_providers/last_situation_provider.dart diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 2cce408c..62829ad2 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -255,6 +255,7 @@ "askOtpDetail": "اطلب رمز OTP من مقدم الطلب للتحقق من وصولك", "takeDevicePhoto": "التقط صورة للجهاز", "takeDevicePhotoDetail": "التقط صورة الجهاز من الموقع", + "lastSituationStatus": "حالة الوضع الأخير", "assetNumber": "رقم الاصل", "assetDetail": "تفاصيل الأصل", "requestDetail": "تفاصيل الطلب", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index a59ed6fe..5c469d71 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -340,6 +340,7 @@ "askOtpDetail": "Ask OTP from requester to verify you arrival", "takeDevicePhoto": "Take Device Photo", "takeDevicePhotoDetail": "Take the photo of the device from location", + "lastSituationStatus": "Last Situation Status", "priority" : "Request Priority", "equipmentStatus" : "Equipment Status", "jopStatus" : "Jop Status", diff --git a/lib/main.dart b/lib/main.dart index abe5e130..6862d1c1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,4 @@ import 'dart:io'; - import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -48,6 +47,7 @@ import 'package:test_sa/providers/ppm_visit_status_provider.dart'; import 'package:test_sa/providers/service_request_providers/commissioning_status_provider.dart'; import 'package:test_sa/providers/service_request_providers/equipment_status_provider.dart'; import 'package:test_sa/providers/service_request_providers/first_action_provider.dart'; +import 'package:test_sa/providers/service_request_providers/last_situation_provider.dart'; 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'; @@ -206,6 +206,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => LoanAvailabilityProvider()), ChangeNotifierProvider(create: (_) => ReasonProvider()), ChangeNotifierProvider(create: (_) => RejectReasonProvider()), + ChangeNotifierProvider(create: (_) => LastSituationProvider()), ChangeNotifierProvider(create: (_) => FaultDescriptionProvider()), ChangeNotifierProvider(create: (_) => RetirementTypeProvider()), ChangeNotifierProvider(create: (_) => ActivityStatusProvider()), diff --git a/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart b/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart index f2e3ecd8..08933790 100644 --- a/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart +++ b/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart @@ -9,6 +9,7 @@ class ActivityMaintenanceHelperModel { int? id; int? workOrderId; int? lastSituationId; + Lookup? lastSituation; Lookup? activityStatus; DateTime? startTime; DateTime? endTime; @@ -33,6 +34,7 @@ class ActivityMaintenanceHelperModel { {this.id, this.workOrderId, this.lastSituationId, + this.lastSituation, this.activityStatus, this.startTime, this.supplier, @@ -57,7 +59,7 @@ class ActivityMaintenanceHelperModel { final Map data = {}; data['id'] = id; data['workOrderId'] = workOrderId; - data['lastSituationId'] = lastSituationId; + data['activityStatusId'] = activityStatus?.id; data['startTime'] = startTime?.toIso8601String(); data['endTime'] = endTime?.toIso8601String(); @@ -71,7 +73,9 @@ class ActivityMaintenanceHelperModel { data['supplierStartTime'] = supplierStartTime?.toIso8601String(); data['supplierEndTime'] = supplierEndTime?.toIso8601String(); data['supplierWorkingHour'] = supplierWorkingHour; - print('model i got is ${modelAssistantEmployees?.toJson()}'); + if(lastSituation!=null){ + data['lastSituationId'] = lastSituation?.id; + } if (assignedEmployee != null&&assignedEmployee?.userId!=null) { data['assistantEmployees'] = [modelAssistantEmployees?.toJson()]; } diff --git a/lib/providers/service_request_providers/last_situation_provider.dart b/lib/providers/service_request_providers/last_situation_provider.dart new file mode 100644 index 00000000..19c3a9e1 --- /dev/null +++ b/lib/providers/service_request_providers/last_situation_provider.dart @@ -0,0 +1,36 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; + +import '../../controllers/api_routes/api_manager.dart'; +import '../../controllers/api_routes/urls.dart'; +import '../../models/lookup.dart'; + +class LastSituationProvider extends LoadingListNotifier { + @override + Future getDate() async { + if (loading == true) return -2; + loading = true; + notifyListeners(); + loading = true; + notifyListeners(); + try { + Response response = await ApiManager.instance.get(URLs.getMaintenanceSituation); + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + List categoriesListJson = json.decode(response.body)["data"]; + items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); + } + loading = false; + notifyListeners(); + return response.statusCode; + } catch (error) { + loading = false; + stateCode = -1; + notifyListeners(); + return -1; + } + } +} diff --git a/lib/providers/service_request_providers/reject_reason_provider.dart b/lib/providers/service_request_providers/reject_reason_provider.dart index 9641ddc7..f15a3139 100644 --- a/lib/providers/service_request_providers/reject_reason_provider.dart +++ b/lib/providers/service_request_providers/reject_reason_provider.dart @@ -9,7 +9,6 @@ import '../../models/lookup.dart'; class RejectReasonProvider extends LoadingListNotifier { - @override Future getDate() async { if (loading == true) return -2; diff --git a/lib/service_request_latest/views/components/activities_list_view.dart b/lib/service_request_latest/views/components/activities_list_view.dart index 49beec9b..46f6a46d 100644 --- a/lib/service_request_latest/views/components/activities_list_view.dart +++ b/lib/service_request_latest/views/components/activities_list_view.dart @@ -350,6 +350,7 @@ class _ActivitiesListViewState extends State { workingHour: activity.activityMaintenance?.workingHours ?? 0, travelHours: activity.activityMaintenance?.travelHours ?? 0, repairLocation: activity.activityMaintenance?.repairLocation, + lastSituation: activity.activityMaintenance?.lastSituation, assignedEmployee: activity.activityMaintenance?.assignedEmployee != null ? WorkOrderAssignedEmployee.fromJson(activity.activityMaintenance!.assignedEmployee!.toJson()) : null, technicalComment: activity.activityMaintenance?.technicalComment, assistantEmployees: diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart index 389f9404..0a5fc50d 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart @@ -14,6 +14,7 @@ import 'package:test_sa/models/service_request/service_report.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/providers/service_request_providers/last_situation_provider.dart'; import 'package:test_sa/providers/work_order/activity_status_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; @@ -52,11 +53,8 @@ class _InternalMaintenanceRequestState extends State void initState() { _activityStatusProvider = Provider.of(context, listen: false); _requestDetailProvider = Provider.of(context, listen: false); - _requestDetailProvider?.activityMaintenanceHelperModel?.lastSituationId = _requestDetailProvider?.currentWorkOrder?.data?.status?.id; - super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { - _travellingHoursController.text = _requestDetailProvider?.activityMaintenanceHelperModel?.travelHours != null ? _requestDetailProvider!.activityMaintenanceHelperModel!.travelHours.toString() : ''; }); @@ -94,6 +92,20 @@ class _InternalMaintenanceRequestState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ + SingleItemDropDownMenu( + context: context, + height: 56.toScreenHeight, + title: context.translation.lastSituationStatus, + showShadow: false, + backgroundColor: AppColor.neutral100, + showAsBottomSheet: true, + initialValue: requestDetailProvider.activityMaintenanceHelperModel?.lastSituation, + onSelect: (status) { + requestDetailProvider.activityMaintenanceHelperModel?.lastSituation = status; + setState(() {}); + }, + ), + 8.height, SingleItemDropDownMenu( context: context, height: 56.toScreenHeight,