diff --git a/lib/common_widgets/stapper_widget/components/base_step.dart b/lib/common_widgets/stapper_widget/components/base_step.dart index 080118f5..ba3d92e7 100644 --- a/lib/common_widgets/stapper_widget/components/base_step.dart +++ b/lib/common_widgets/stapper_widget/components/base_step.dart @@ -54,7 +54,7 @@ class BaseStep extends StatelessWidget { @override Widget build(BuildContext context) { return SizedBox( - width: (radius * 2) + (padding ?? 0), + width: (radius * 2) + (padding), height: radius * 2.5 + 25, child: CustomMultiChildLayout( delegate: BaseStepDelegate( @@ -67,7 +67,7 @@ class BaseStep extends StatelessWidget { child: Material( color: Colors.transparent, clipBehavior: Clip.antiAlias, - borderRadius: BorderRadius.circular(stepRadius ?? 0), + borderRadius: BorderRadius.circular(stepRadius), child: Container( width: radius * 2, height: radius * 2, @@ -89,14 +89,14 @@ class BaseStep extends StatelessWidget { Color _handleColor(BuildContext context, bool isFinished, bool isActive, bool isAlreadyReached) { if (isActive) { - return activeStepBackgroundColor ?? Colors.transparent; + return activeStepBackgroundColor; } else { if (isFinished) { return AppColor.primary10; } else if (isAlreadyReached) { return AppColor.primary10; } else { - return unreachedBackgroundColor ?? Colors.transparent; + return unreachedBackgroundColor; } } } @@ -121,7 +121,7 @@ class BaseStep extends StatelessWidget { Widget _buildStepTitle(BuildContext context) { return SizedBox( width: (radius * 4.5) + - (padding ?? 0), + (padding), child: step.customTitle, ); } diff --git a/lib/common_widgets/stapper_widget/custom_stepper.dart b/lib/common_widgets/stapper_widget/custom_stepper.dart index eae43d52..94131a81 100644 --- a/lib/common_widgets/stapper_widget/custom_stepper.dart +++ b/lib/common_widgets/stapper_widget/custom_stepper.dart @@ -103,9 +103,7 @@ class _CustomStepperState extends State { _padding = _padding!.add(EdgeInsetsDirectional.symmetric( horizontal: lineStyle!.lineLength / 2)); } - if (widget.padding != null) { - _padding!.add(widget.padding); - } + _padding!.add(widget.padding); super.initState(); } diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 90499d24..f46b21f7 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -613,20 +613,20 @@ class ServiceRequestsProvider extends ChangeNotifier { } Future getServiceRequestObjectById({required String requestId}) async { - // try { - isDetialLoading = true; - Response response = await ApiManager.instance.get(URLs.getServiceRequestById + "?callRequestId=$requestId"); - if (response.statusCode >= 200 && response.statusCode < 300) { - isDetialLoading = false; - return ServiceRequest.fromJson(json.decode(response.body)["data"]); - } else { + try { + isDetialLoading = true; + Response response = await ApiManager.instance.get(URLs.getServiceRequestById + "?callRequestId=$requestId"); + if (response.statusCode >= 200 && response.statusCode < 300) { + isDetialLoading = false; + return ServiceRequest.fromJson(json.decode(response.body)["data"]); + } else { + isDetialLoading = false; + return null; + } + } catch (error) { isDetialLoading = false; return null; } - // } catch (error) { - isDetialLoading = false; - return null; - // } } Future> getServiceRequestById({required String requestId}) async { diff --git a/lib/models/new_models/arrival_verification_type_model.dart b/lib/models/new_models/arrival_verification_type_model.dart index bca0f010..be92990d 100644 --- a/lib/models/new_models/arrival_verification_type_model.dart +++ b/lib/models/new_models/arrival_verification_type_model.dart @@ -8,13 +8,7 @@ class ArrivalVerificationTypeModel { int? responseCode; bool? isSuccess; - ArrivalVerificationTypeModel( - {this.data, - this.message, - this.title, - this.innerMessage, - this.responseCode, - this.isSuccess}); + ArrivalVerificationTypeModel({this.data, this.message, this.title, this.innerMessage, this.responseCode, this.isSuccess}); ArrivalVerificationTypeModel.fromJson(Map json) { if (json['data'] != null) { @@ -29,7 +23,6 @@ class ArrivalVerificationTypeModel { responseCode = json['responseCode']; isSuccess = json['isSuccess']; } - } class ArrivalTypeData { @@ -44,24 +37,12 @@ class ArrivalTypeData { dynamic modifiedBy; dynamic modifiedDate; - ArrivalTypeData( - {this.assetGroupId, - this.verificationTypeId, - this.verificationTypes, - this.id, - this.description, - this.createdBy, - - this.createdDate, - this.modifiedBy, - this.modifiedDate}); + ArrivalTypeData({this.assetGroupId, this.verificationTypeId, this.verificationTypes, this.id, this.description, this.createdBy, this.createdDate, this.modifiedBy, this.modifiedDate}); ArrivalTypeData.fromJson(Map json) { assetGroupId = json['assetGroupId']; verificationTypeId = json['verificationTypeId']; - verificationTypes = json['verificationTypes'] != null - ? VerificationTypes.fromJson(json['verificationTypes']) - : null; + verificationTypes = json['verificationTypes'] != null ? VerificationTypes.fromJson(json['verificationTypes']) : null; id = json['id']; description = json['description']; createdBy = json['createdBy']; @@ -69,6 +50,7 @@ class ArrivalTypeData { modifiedBy = json['modifiedBy']; modifiedDate = json['modifiedDate']; } + Map toJson() { return { 'assetGroupId': assetGroupId, @@ -82,17 +64,15 @@ class ArrivalTypeData { 'modifiedDate': modifiedDate, }; } - - } class VerificationTypes { int? id; String? name; int? value; - String?icon; + String? icon; - VerificationTypes({this.id, this.name, this.value,this.icon}); + VerificationTypes({this.id, this.name, this.value, this.icon}); VerificationTypes.fromJson(Map json) { id = json['id']; @@ -100,14 +80,7 @@ class VerificationTypes { value = json['value']; icon = (json['value'] as int).getVerificationIconByValue(); } - Map toJson() { - return { - 'id': id, - 'name': name, - 'value': value, - }; - icon = (json['value'] as int).getVerificationIconByValue(); - } + Map toJson() { return { 'id': id, @@ -115,6 +88,4 @@ class VerificationTypes { 'value': value, }; } - - } diff --git a/lib/models/new_models/work_order_detail_model.dart b/lib/models/new_models/work_order_detail_model.dart index 54d4d5bc..63e8cca7 100644 --- a/lib/models/new_models/work_order_detail_model.dart +++ b/lib/models/new_models/work_order_detail_model.dart @@ -336,45 +336,7 @@ class AssetLoan { }; } -class AssetLoan { - int? id; - String? assetSerialNo; - String? assetNumber; - dynamic tagCode; - dynamic systemId; - dynamic assetName; - - AssetLoan({ - this.id, - this.assetSerialNo, - this.assetNumber, - this.tagCode, - this.systemId, - this.assetName, - }); - factory AssetLoan.fromJson(Map json) { - return AssetLoan( - id: json['id'], - assetSerialNo: json['assetSerialNo'], - assetNumber: json['assetNumber'], - tagCode: json['tagCode'], - systemId: json['systemId'], - assetName: json['assetName'], - ); - } - - Map toJson() { - return { - 'id': id, - 'assetSerialNo': assetSerialNo, - 'assetNumber': assetNumber, - 'tagCode': tagCode, - 'systemId': systemId, - 'assetName': assetName, - }; - } -} class Activities { int? id; 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 3b8c7a09..95e7fc09 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 @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:provider/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/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; diff --git a/lib/service_request_latest/utilities/service_request_utils.dart b/lib/service_request_latest/utilities/service_request_utils.dart index 58216eea..17dca6ea 100644 --- a/lib/service_request_latest/utilities/service_request_utils.dart +++ b/lib/service_request_latest/utilities/service_request_utils.dart @@ -1,13 +1,17 @@ import 'dart:convert'; +import 'package:device_calendar/device_calendar.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:provider/provider.dart'; +import 'package:test_sa/controllers/notification/notification_manger.dart'; import 'package:test_sa/extensions/context_extension.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/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; class ServiceRequestUtils { static double calculateAndAssignWorkingHours({ @@ -16,8 +20,6 @@ class ServiceRequestUtils { required TextEditingController workingHoursController, required Function(double) updateModel, // A callback to update the model }) { - print('start date i got is $startTime'); - print('end date i got is $endTime'); if (startTime != null && endTime != null) { Duration difference = endTime.difference(startTime); double hours = difference.inMinutes / 60.0; // Calculate hours as a decimal @@ -49,7 +51,7 @@ class ServiceRequestUtils { static void getQrCode({required BuildContext context }) async{ showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - RequestDetailProvider requestDetailProvider = Provider.of(context,listen:false); + ServiceRequestDetailProvider requestDetailProvider = Provider.of(context,listen:false); String? base64String = await requestDetailProvider.getQrCode(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId ?? 0); Navigator.pop(context); if (base64String != null) { @@ -80,8 +82,6 @@ class ServiceRequestUtils { } -} - static Widget testScheduleNotificationButton({required BuildContext context}){ diff --git a/lib/service_request_latest/views/components/action_button/footer_action_button.dart b/lib/service_request_latest/views/components/action_button/footer_action_button.dart index cbe3859e..2bbf1f54 100644 --- a/lib/service_request_latest/views/components/action_button/footer_action_button.dart +++ b/lib/service_request_latest/views/components/action_button/footer_action_button.dart @@ -15,11 +15,8 @@ import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_mo import 'package:test_sa/models/new_models/work_order_detail_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/new_views/common_widgets/app_lazy_loading.dart'; import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart'; import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; -import 'package:test_sa/service_request_latest/request_detail_provider.dart'; -import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/views/components/activities_list_view.dart'; import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart'; import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart'; @@ -42,23 +39,19 @@ class FooterActionButton { ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); bool showMarkAsFixedButton = activities.isEmpty ? true : activities.every((object) => object.activityStatus!.name!.toLowerCase() == "completed"); - if (userProvider.user?.type == UsersTypes.engineer) { - print('status i got is ${workOrderNextStepStatus}'); - switch (workOrderNextStepStatus) { case WorkOrderNextStepEnum.onlyView: return footerContainer( child: AppFilledButton( - label: 'Assign To Me', - // maxWidth: true, - buttonColor: AppColor.primary10, - onPressed: () async { - //TODO uncommit this after testing ... - requestDetailProvider.engineerAssignWorkOrderToHimself(id: requestDetailProvider.currentWorkOrder!.data!.requestId.toString()); - }, - fontSize: 12.toScreenWidth, - )); + label: 'Assign To Me', + // maxWidth: true, + buttonColor: AppColor.primary10, + onPressed: () async { + requestDetailProvider.engineerAssignWorkOrderToHimself(id: requestDetailProvider.currentWorkOrder!.data!.requestId.toString()); + }, + fontSize: 12.toScreenWidth, + )); case WorkOrderNextStepEnum.markedAsFixed: break; // TODO: Handle this case. @@ -185,7 +178,6 @@ class FooterActionButton { buttonColor: AppColor.green70, onPressed: () async { ServiceRequestBottomSheet.feedBackBottomSheet(context: context); - }, ), ] @@ -203,13 +195,13 @@ class FooterActionButton { fontSize: 12.toScreenWidth, )); case WorkOrderNextStepEnum.waitingForRequesterToConfirm: - return footerContainer( - child: AppFilledButton( - label: 'Waiting for requester to verify', - buttonColor: AppColor.neutral140, - textColor: AppColor.neutral150, - fontSize: 12.toScreenWidth, - )); + return footerContainer( + child: AppFilledButton( + label: 'Waiting for requester to verify', + buttonColor: AppColor.neutral140, + textColor: AppColor.neutral150, + fontSize: 12.toScreenWidth, + )); } } else { if (workOrderNextStepStatus == WorkOrderNextStepEnum.nTakeAction) { @@ -230,14 +222,11 @@ class FooterActionButton { // maxWidth: true, buttonColor: AppColor.green70, onPressed: () async { - int ?status = await requestDetailProvider.nurseConfirmArrival(workOrderId: requestDetailProvider.currentWorkOrder?.data?.requestId??0); - if(status==200){ - - } + int? status = await requestDetailProvider.nurseConfirmArrival(workOrderId: requestDetailProvider.currentWorkOrder?.data?.requestId ?? 0); + if (status == 200) {} }, )); } - } return const SizedBox(); } diff --git a/lib/service_request_latest/views/components/verify_arrival_view.dart b/lib/service_request_latest/views/components/verify_arrival_view.dart index 0baa10dd..227c0dce 100644 --- a/lib/service_request_latest/views/components/verify_arrival_view.dart +++ b/lib/service_request_latest/views/components/verify_arrival_view.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:fluttertoast/fluttertoast.dart'; import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -11,7 +10,7 @@ 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_lazy_loading.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; -import 'package:test_sa/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; import 'package:test_sa/service_request_latest/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'; @@ -33,7 +32,7 @@ class _VerifyArrivalViewState extends State { } Future getInitialData() async { - RequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); + ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); await requestDetailProvider.getArrivalVerificationType(); } @@ -42,7 +41,7 @@ class _VerifyArrivalViewState extends State { return Scaffold( appBar: DefaultAppBar(title: context.translation.verifyArrival), //backgroundColor: const Color(0xfff8f9fb), - body: Consumer(builder: (context, RequestDetailProvider requestDetailProvider, child) { + body: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { return SafeArea( child: requestDetailProvider.isArrivalLoading ? const CircularProgressIndicator(color: AppColor.primary10).center @@ -114,7 +113,7 @@ class _VerifyArrivalViewState extends State { ); } - void onItemTap({required int index, required RequestDetailProvider requestDetailProvider, required BuildContext context, int? verificationTypeId}) async { + void onItemTap({required int index, required ServiceRequestDetailProvider requestDetailProvider, required BuildContext context, int? verificationTypeId}) async { switch (index) { case 0: int? status; @@ -199,8 +198,7 @@ class _VerifyArrivalViewState extends State { Map resultJson = jsonDecode(result); print('result i got is ${resultJson}'); showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); - status = await requestDetailProvider.engineerConfirmArrival( - workOrderId: resultJson['WorkOrderId'], verificationTypeId: 5, workOrderCreatedById: resultJson['WorkOrderCreatedById']); + status = await requestDetailProvider.engineerConfirmArrival(workOrderId: resultJson['WorkOrderId'], verificationTypeId: 5, workOrderCreatedById: resultJson['WorkOrderCreatedById']); if (status == 200) { requestDetailProvider.getWorkOrderById(id: resultJson['WorkOrderId']); Navigator.pop(context); diff --git a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart index a3bb6206..43e73396 100644 --- a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart @@ -22,7 +22,7 @@ import 'package:test_sa/providers/service_request_providers/equipment_status_pro 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/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/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'; @@ -41,7 +41,7 @@ class VerifyAssetDetails extends StatefulWidget { } class _VerifyAssetDetailsState extends State with TickerProviderStateMixin { - RequestDetailProvider? _requestDetailProvider; + ServiceRequestDetailProvider? _requestDetailProvider; LoanAvailabilityProvider? _loanAvailabilityProvider; EquipmentStatusProvider? _equipmentStatusProvider; ReasonProvider? _reasonProvider; @@ -65,7 +65,7 @@ class _VerifyAssetDetailsState extends State with TickerProv } void assignValues() { - RequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); + ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); WorkOrderData currentWorkOrderData = requestDetailProvider.currentWorkOrder!.data!; requestDetailProvider.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel( workOrderId: currentWorkOrderData.requestId, @@ -94,7 +94,7 @@ class _VerifyAssetDetailsState extends State with TickerProv @override Widget build(BuildContext context) { if (_requestDetailProvider == null) { - _requestDetailProvider = Provider.of(context, listen: false); + _requestDetailProvider = Provider.of(context, listen: false); _reasonProvider = Provider.of(context, listen: false); _reasonProvider!.reset(); _loanAvailabilityProvider = Provider.of(context, listen: false); @@ -109,8 +109,8 @@ class _VerifyAssetDetailsState extends State with TickerProv return Scaffold( key: _scaffoldKey, - appBar: DefaultAppBar(title: context.translation.verify_asset_details), - body: Consumer(builder: (context, RequestDetailProvider requestDetailProvider, child) { + appBar: DefaultAppBar(title: context.translation.updateAssetDetails), + body: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -230,7 +230,7 @@ class _VerifyAssetDetailsState extends State with TickerProv padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight), color: AppColor.white10, child: AppFilledButton( - label: context.translation.verify_asset_details, + label: context.translation.updateAssetDetails, buttonColor: AppColor.primary10, onPressed: () async { if (validateForm(requestDetailProvider: requestDetailProvider)) { @@ -248,7 +248,7 @@ class _VerifyAssetDetailsState extends State with TickerProv ); } - bool validateForm({required RequestDetailProvider requestDetailProvider}) { + bool validateForm({required ServiceRequestDetailProvider requestDetailProvider}) { bool isValid = true; if (!widget.isEdit) { return true; diff --git a/lib/service_request_latest/views/service_request_detail_main_view.dart b/lib/service_request_latest/views/service_request_detail_main_view.dart index e72e26b6..1df22067 100644 --- a/lib/service_request_latest/views/service_request_detail_main_view.dart +++ b/lib/service_request_latest/views/service_request_detail_main_view.dart @@ -1,15 +1,12 @@ 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/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; -import 'package:test_sa/models/enums/user_types.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/service_request_latest/request_detail_provider.dart'; -import 'package:test_sa/service_request_latest/views/components/get_qr_code_view.dart'; +import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; import 'package:test_sa/service_request_latest/views/components/history_log_view.dart'; import 'components/service_request_detail_view.dart'; @@ -49,11 +46,10 @@ class _ServiceRequestDetailMainState extends State { @override Widget build(BuildContext context) { - print('user type i got is ${_userProvider?.user?.type}'); return WillPopScope( onWillPop: () async { // Implement custom back button handling logic here - RequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); + ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); if (requestDetailProvider.timer != null && requestDetailProvider.timer!.isActive) { requestDetailProvider.stopTimer(); } diff --git a/localization_error.txt b/localization_error.txt index 432e23b5..b7a7b76f 100644 --- a/localization_error.txt +++ b/localization_error.txt @@ -4,7 +4,6 @@ "signInToYour", "overdue", "newR", - "noDataFound", - "allWorkOrder" + "noDataFound" ] }