From 80796467289c76aa5fc24ad4fddc1cd32a806643 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 2 Jan 2024 16:08:28 +0300 Subject: [PATCH] timer on device transfer, --- .../pages/new_gas_refill_request_page.dart | 15 +- .../update_device_transfer.dart | 7 +- .../create_sub_workorder_page.dart | 22 +-- .../work_order/create_service_report.dart | 4 +- .../work_order/edit_service_report.dart | 4 +- .../status/assistant_employee_menu.dart | 36 +++-- ...ervice_report_assistant_employee_menu.dart | 130 ++++++++++++------ lib/views/widgets/timer/app_timer.dart | 4 + 8 files changed, 153 insertions(+), 69 deletions(-) diff --git a/lib/new_views/pages/new_gas_refill_request_page.dart b/lib/new_views/pages/new_gas_refill_request_page.dart index 83f67b4a..30327b4d 100644 --- a/lib/new_views/pages/new_gas_refill_request_page.dart +++ b/lib/new_views/pages/new_gas_refill_request_page.dart @@ -162,13 +162,14 @@ class _NewGasRefillRequestPageState extends State { }, ), 8.height, - AppFilledButton( - label: context.translation.add, - maxWidth: true, - textColor: Colors.white, - buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50, - onPressed: _add, - ), + if (_gasModel.gazRefillDetails?.isEmpty ?? true) + AppFilledButton( + label: context.translation.add, + maxWidth: true, + textColor: Colors.white, + buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50, + onPressed: _add, + ), 24.height, ListView.builder( shrinkWrap: true, diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 2f8c172d..12ed61ff 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -53,7 +53,7 @@ class _UpdateDeviceTransferState extends State { await Fluttertoast.showToast(msg: "Working Hours Required"); return false; } - if ((widget.isSender && _formModel?.senderTimer?.endAt == null) || (!widget.isSender && _formModel?.receiverTimer?.startAt == null)) { + if ((widget.isSender && _formModel?.senderTimer?.endAt == null) || (!widget.isSender && _formModel?.receiverTimer?.startAt == null || isTimerRunning)) { await Fluttertoast.showToast(msg: "Please Stop The Timer"); return false; } @@ -83,6 +83,8 @@ class _UpdateDeviceTransferState extends State { super.dispose(); } + bool isTimerRunning = false; + @override Widget build(BuildContext context) { _userProvider = Provider.of(context); @@ -128,6 +130,9 @@ class _UpdateDeviceTransferState extends State { label: context.translation.workingHours, timer: widget.isSender ? _formModel.senderTimer : _formModel.receiverTimer, enabled: widget.isSender ? _formModel.senderEndDate == null : _formModel.receiverEndDate == null, + timerProgress: (isRunning) { + isTimerRunning = isRunning; + }, onChange: (timer) async { if (widget.isSender) { _formModel.senderTimer = timer; 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 8d5f6069..89d8bb3a 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -13,6 +13,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/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/common_widgets/app_filled_button.dart'; @@ -132,10 +134,12 @@ class _CreateSubWorkOrderPageState extends State { @override Widget build(BuildContext context) { final user = Provider.of(context).user; - final isCurrentAssigned = user.id != ((widget.workOrder.assistantEmployees?.isNotEmpty ?? false) ? widget.workOrder.assistantEmployees?.first?.user?.id : null); + final isCurrentAssigned = (user.userID != widget.workOrder.assignedEmployee?.id); if (isCurrentAssigned) { - _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)]; + // _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)]; + _subWorkOrders.assistantEmployees = [AssistantEmployees(id: 0, user: AssignedEmployee(id: user.userID, name: user.username))]; } + print("isCurrentAssigned:$isCurrentAssigned:${_subWorkOrders.assistantEmployees?.length}"); if (_callRequestForWorkOrder == null) { _partsProvider = Provider.of(context); getAssetType(); @@ -310,12 +314,14 @@ class _CreateSubWorkOrderPageState extends State { ServiceReportAssistantEmployeeMenu( title: context.translation.assignAssistant, assetId: widget.workOrder?.callRequest?.asset?.id, - initialValue: isCurrentAssigned - ? (widget.workOrder.assistantEmployees.first) - : (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) - ? _subWorkOrders.assistantEmployees?.first - : null, - enabled: !isCurrentAssigned, + + initialValue: (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) ? _subWorkOrders.assistantEmployees?.first : null, + // initialValue: !isCurrentAssigned + // ? (widget.workOrder.assistantEmployees?.first) + // : (_subWorkOrders.assistantEmployees?.isNotEmpty ?? false) + // ? _subWorkOrders.assistantEmployees?.first + // : null, + enable: user.userID == _subWorkOrders.assignedEmployee.id, onSelect: (employee) { if (employee == null) { _subWorkOrders.assistantEmployees = []; diff --git a/lib/views/pages/user/requests/work_order/create_service_report.dart b/lib/views/pages/user/requests/work_order/create_service_report.dart index a6017e74..7feec9fd 100644 --- a/lib/views/pages/user/requests/work_order/create_service_report.dart +++ b/lib/views/pages/user/requests/work_order/create_service_report.dart @@ -204,7 +204,9 @@ class _CreateServiceReportState extends State with TickerPr SingleItemDropDownMenu( context: context, title: context.translation.serviceType, - onSelect: (value) {}, + onSelect: (value) { + + }, ), 8.height, ServiceReportLastCallsMenu( diff --git a/lib/views/pages/user/requests/work_order/edit_service_report.dart b/lib/views/pages/user/requests/work_order/edit_service_report.dart index 64ed6947..f0f56b23 100644 --- a/lib/views/pages/user/requests/work_order/edit_service_report.dart +++ b/lib/views/pages/user/requests/work_order/edit_service_report.dart @@ -189,7 +189,9 @@ class _EditServiceReportState extends State with TickerProvid SingleItemDropDownMenu( context: context, title: context.translation.serviceType, - onSelect: (value) {}, + onSelect: (value) { + + }, ), 8.height, ServiceReportLastCallsMenu( diff --git a/lib/views/widgets/status/assistant_employee_menu.dart b/lib/views/widgets/status/assistant_employee_menu.dart index f91238a3..521982d0 100644 --- a/lib/views/widgets/status/assistant_employee_menu.dart +++ b/lib/views/widgets/status/assistant_employee_menu.dart @@ -10,8 +10,9 @@ class AssistantEmployeeMenu extends StatefulWidget { final AssistantEmployees initialStatus; final Function(AssistantEmployees) onSelect; final String title; + final bool enable; - const AssistantEmployeeMenu({Key key, this.statuses, this.title, this.onSelect, this.initialStatus}) : super(key: key); + const AssistantEmployeeMenu({Key key, this.statuses, this.title, this.onSelect, this.initialStatus, this.enable = true}) : super(key: key); @override _SingleAssistantEmployeeMenuState createState() => _SingleAssistantEmployeeMenuState(); @@ -73,7 +74,12 @@ class _SingleAssistantEmployeeMenuState extends State { child: Stack( alignment: Alignment.center, children: [ - const PositionedDirectional(end: 0, child: Icon(Icons.keyboard_arrow_down_rounded)), + PositionedDirectional( + end: 0, + child: Icon( + Icons.keyboard_arrow_down_rounded, + color: widget.enable ? null : Colors.grey, + )), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, @@ -96,18 +102,30 @@ class _SingleAssistantEmployeeMenuState extends State { ), style: TextStyle(color: Theme.of(context).primaryColor), underline: const SizedBox.shrink(), - onChanged: (AssistantEmployees newValue) { - setState(() { - _selectedStatus = newValue; - }); - widget.onSelect(newValue); - }, + + onChanged: widget.enable + ? (AssistantEmployees newValue) { + setState(() { + _selectedStatus = newValue; + }); + widget.onSelect(newValue); + } + : null, + + // onChanged: (AssistantEmployees newValue) { + // setState(() { + // _selectedStatus = newValue; + // }); + // widget.onSelect(newValue); + // }, items: widget.statuses.map>((AssistantEmployees value) { return DropdownMenuItem( value: value, child: Text( value.user?.name ?? "NULL", - style: Theme.of(context).textTheme.bodyLarge, + style: Theme.of(context).textTheme.bodyLarge.copyWith( + color: widget.enable ? Theme.of(context).primaryColor : Colors.grey, + ), ), ); }).toList(), diff --git a/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart b/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart index 27bd46a9..0f3f2a82 100644 --- a/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart +++ b/lib/views/widgets/status/report/service_report_assistant_employee_menu.dart @@ -1,42 +1,23 @@ + + import 'package:flutter/material.dart'; import 'package:provider/provider.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/models/new_models/assistant_employee.dart'; +import 'package:test_sa/models/service_request/search_work_order.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/assistant_employee_menu.dart'; import '../../../../controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart'; -import '../../../../models/new_models/assistant_employee.dart'; -class ServiceReportAssistantEmployeeMenu extends StatefulWidget { +class ServiceReportAssistantEmployeeMenu extends StatelessWidget { final Function(AssistantEmployees) onSelect; final AssistantEmployees initialValue; + final String title; final num assetId; - final bool enabled; + final bool enable; - const ServiceReportAssistantEmployeeMenu({Key key, this.enabled = true, @required this.onSelect, @required this.assetId, this.title, this.initialValue}) : super(key: key); - - @override - State createState() => _ServiceReportAssistantEmployeeMenuState(); -} - -class _ServiceReportAssistantEmployeeMenuState extends State { - AssistantEmployees _initialValue; - - @override - void initState() { - _initialValue = widget.initialValue; - super.initState(); - } - - @override - void didUpdateWidget(covariant ServiceReportAssistantEmployeeMenu oldWidget) { - if (widget.initialValue != oldWidget.initialValue) { - _initialValue = widget.initialValue; - setState(() {}); - } - super.didUpdateWidget(oldWidget); - } + const ServiceReportAssistantEmployeeMenu({Key key, @required this.onSelect,this.title, this.initialValue, this.assetId, this.enable = true}) : super(key: key); @override Widget build(BuildContext context) { @@ -46,22 +27,87 @@ class _ServiceReportAssistantEmployeeMenuState extends State( - title: widget.title, - context: context, - enabled: widget.enabled, - initialValue: _initialValue, - staticData: menuProvider.assistantEmployees, - onSelect: widget.onSelect, + child: AssistantEmployeeMenu( + initialStatus: initialValue, + title: title, + statuses: menuProvider.assistantEmployees, + onSelect: onSelect, + enable: enable, ), - // child: AssistantEmployeeMenu( - // title: title, - // initialStatus: initialValue, - // statuses: menuProvider.assistantEmployees, - // onSelect: onSelect, - // ), ); } } + + + + +// import 'package:flutter/material.dart'; +// import 'package:provider/provider.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/views/widgets/loaders/loading_manager.dart'; +// +// import '../../../../controllers/providers/api/status_drop_down/report/service_report_assistants_employee_provider.dart'; +// import '../../../../models/new_models/assistant_employee.dart'; +// +// class ServiceReportAssistantEmployeeMenu extends StatefulWidget { +// final Function(AssistantEmployees) onSelect; +// final AssistantEmployees initialValue; +// final String title; +// final num assetId; +// final bool enabled; +// +// const ServiceReportAssistantEmployeeMenu({Key key, this.enabled = true, @required this.onSelect, @required this.assetId, this.title, this.initialValue}) : super(key: key); +// +// @override +// State createState() => _ServiceReportAssistantEmployeeMenuState(); +// } +// +// class _ServiceReportAssistantEmployeeMenuState extends State { +// AssistantEmployees _initialValue; +// +// @override +// void initState() { +// _initialValue = widget.initialValue; +// super.initState(); +// } +// +// @override +// void didUpdateWidget(covariant ServiceReportAssistantEmployeeMenu oldWidget) { +// if (widget.initialValue != oldWidget.initialValue) { +// _initialValue = widget.initialValue; +// setState(() {}); +// } +// super.didUpdateWidget(oldWidget); +// } +// +// @override +// Widget build(BuildContext context) { +// ServiceReportAssistantsEmployeeProvider menuProvider = Provider.of(context); +// return LoadingManager( +// isLoading: menuProvider.isLoading, +// isFailedLoading: menuProvider.assistantEmployees == null, +// stateCode: menuProvider.stateCode, +// onRefresh: () async { +// await menuProvider.getAssistantEmployees(widget.assetId); +// }, +// child: SingleItemDropDownMenu( +// title: widget.title, +// context: context, +// enabled: widget.enabled, +// initialValue: _initialValue, +// staticData: menuProvider.assistantEmployees, +// onSelect: widget.onSelect, +// ), +// // child: AssistantEmployeeMenu( +// // title: title, +// // initialStatus: initialValue, +// // statuses: menuProvider.assistantEmployees, +// // onSelect: onSelect, +// // ), +// ); +// } +// } diff --git a/lib/views/widgets/timer/app_timer.dart b/lib/views/widgets/timer/app_timer.dart index 5776950a..92e2eb9d 100644 --- a/lib/views/widgets/timer/app_timer.dart +++ b/lib/views/widgets/timer/app_timer.dart @@ -17,12 +17,15 @@ class AppTimer extends StatefulWidget { final bool enabled; final String label; + final Function(bool) timerProgress; + const AppTimer({ Key key, this.label, this.timer, this.onChange, this.style, + this.timerProgress, this.enabled = true, }) : super(key: key); @@ -80,6 +83,7 @@ class _AppTimerState extends State { } _loading = false; setState(() {}); + widget.timerProgress(_running); } @override