ppm timer improvement cont-1

design_3.0_demo_module
Sikander Saleem 1 year ago
parent 58fb4b3829
commit 0246bb1606

@ -1,5 +1,4 @@
import 'package:test_sa/models/lookup.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/new_models/assistant_employee.dart';
import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart';
import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart';
@ -9,14 +8,14 @@ import 'package:test_sa/models/timer_model.dart';
class ActivityMaintenanceHelperModel { class ActivityMaintenanceHelperModel {
int? id; int? id;
int? workOrderId; int? workOrderId;
//remove this //remove this
int? lastSituationId; int? lastSituationId;
Lookup? lastSituation; Lookup? lastSituation;
Lookup? activityStatus; Lookup? activityStatus;
DateTime? startTime; DateTime? startTime;
DateTime? endTime; DateTime? endTime;
num? workingHour; num? workingHour;
num? travelHours; num? travelHours;
Lookup? repairLocation; Lookup? repairLocation;
@ -28,40 +27,42 @@ class ActivityMaintenanceHelperModel {
DateTime? supplierStartTime; DateTime? supplierStartTime;
DateTime? supplierEndTime; DateTime? supplierEndTime;
num? supplierWorkingHour; num? supplierWorkingHour;
// AssignedEmployee? assignedEmployee; // AssignedEmployee? assignedEmployee;
WorkOrderAssignedEmployee? assignedEmployee; WorkOrderAssignedEmployee? assignedEmployee;
SuppEngineerWorkOrders? supEngineer; SuppEngineerWorkOrders? supEngineer;
ActivityMaintenanceAssistantEmployees? modelAssistantEmployees; ActivityMaintenanceAssistantEmployees? modelAssistantEmployees;
List<AssistantEmployees>? assistantEmployees; List<AssistantEmployees>? assistantEmployees;
List<ActivityMaintenanceTimers>? activityMaintenanceTimers=[]; List<ActivityMaintenanceTimers>? activityMaintenanceTimers = [];
TimerModel? activityMaintenanceTimerModel = TimerModel(); TimerModel? activityMaintenanceTimerModel = TimerModel();
List<TimerModel>? timerModelList = [];
ActivityMaintenanceHelperModel( ActivityMaintenanceHelperModel(
{this.id, {this.id,
this.workOrderId, this.workOrderId,
this.lastSituationId, this.lastSituationId,
this.lastSituation, this.lastSituation,
this.activityStatus, this.activityStatus,
this.startTime, this.startTime,
this.supplier, this.supplier,
this.endTime, this.endTime,
this.workingHour, this.workingHour,
this.activityMaintenanceTimerModel, this.activityMaintenanceTimerModel,
this.travelHours, this.travelHours,
this.repairLocation, this.repairLocation,
this.assignedEmployeeId, this.assignedEmployeeId,
this.technicalComment, this.technicalComment,
this.supplierId, this.supplierId,
this.supplierEngineerId, this.supplierEngineerId,
this.supplierStartTime, this.supplierStartTime,
this.supplierEndTime, this.supplierEndTime,
this.supplierWorkingHour, this.supplierWorkingHour,
this.assistantEmployees, this.assistantEmployees,
this.supEngineer, this.supEngineer,
this.assignedEmployee, this.assignedEmployee,
this.activityMaintenanceTimers, this.activityMaintenanceTimers,
this.modelAssistantEmployees}); this.timerModelList,
this.modelAssistantEmployees});
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{}; final Map<String, dynamic> data = <String, dynamic>{};
@ -82,14 +83,12 @@ class ActivityMaintenanceHelperModel {
data['supplierEndTime'] = supplierEndTime?.toIso8601String(); data['supplierEndTime'] = supplierEndTime?.toIso8601String();
data['supplierWorkingHour'] = supplierWorkingHour; data['supplierWorkingHour'] = supplierWorkingHour;
//TODO fix this properly... //TODO fix this properly...
data['activityMaintenanceTimers'] = activityMaintenanceTimers; data['activityMaintenanceTimers'] = activityMaintenanceTimers;
if (assistantEmployees != null&&assistantEmployees!.isNotEmpty) { if (assistantEmployees != null && assistantEmployees!.isNotEmpty) {
data['assistantEmployees'] = [modelAssistantEmployees?.toJson()]; data['assistantEmployees'] = [modelAssistantEmployees?.toJson()];
} } else {
else{ data['assistantEmployees'] = [];
data['assistantEmployees']=[];
} }
return data; return data;
} }
} }

@ -114,8 +114,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
separatorBuilder: (czt, index) => 16.height, separatorBuilder: (czt, index) => 16.height,
itemBuilder: (context, index) { itemBuilder: (context, index) {
if (activities[index].activityMaintenance != null) { if (activities[index].activityMaintenance != null) {
return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]) return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]);
.paddingOnly(top: 8, bottom: 8);
} }
return sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]); return sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]);
}, },

@ -3,16 +3,16 @@ import 'package:provider/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_report_repair_location_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/providers/service_request_providers/last_situation_provider.dart'; import 'package:test_sa/providers/service_request_providers/last_situation_provider.dart';
import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; import 'package:test_sa/service_request_latest/service_request_detail_provider.dart';
import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/timer/app_timer.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart';
import '../../../../../models/lookup.dart'; import '../../../../../models/lookup.dart';
import '../../../../../new_views/common_widgets/app_text_form_field.dart'; import '../../../../../new_views/common_widgets/app_text_form_field.dart';
import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
@ -38,7 +38,8 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
_requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false); _requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
_travellingHoursController.text= _requestDetailProvider?.activityMaintenanceHelperModel?.travelHours != null ? _requestDetailProvider!.activityMaintenanceHelperModel!.travelHours.toString() : ''; _travellingHoursController.text =
_requestDetailProvider?.activityMaintenanceHelperModel?.travelHours != null ? _requestDetailProvider!.activityMaintenanceHelperModel!.travelHours.toString() : '';
}); });
// _isLoading = true; // _isLoading = true;
} }
@ -50,12 +51,12 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
super.dispose(); super.dispose();
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<ServiceRequestDetailProvider>(builder: (context, requestDetailProvider, child) { return Consumer<ServiceRequestDetailProvider>(builder: (context, requestDetailProvider, child) {
double totalWorkingHours = _requestDetailProvider?.activityMaintenanceHelperModel?.activityMaintenanceTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? 0; double totalWorkingHours = _requestDetailProvider?.activityMaintenanceHelperModel?.activityMaintenanceTimers
?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ??
0;
return SingleChildScrollView( return SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
@ -96,13 +97,18 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
AppTimer( AppTimer(
label: context.translation.timer, label: context.translation.timer,
timer: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel, timer: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel,
enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null, // enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null,
timerProgress: (isRunning) { timerProgress: (isRunning) {
print("timerProgress:$isRunning"); print("timerProgress:$isRunning");
}, },
onChange: (timer) async { onChange: (timer) async {
requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel = timer; requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel = timer;
if (timer.startAt != null && timer.endAt != null) {
requestDetailProvider.activityMaintenanceHelperModel?.timerModelList = requestDetailProvider.activityMaintenanceHelperModel?.timerModelList ?? [];
requestDetailProvider.activityMaintenanceHelperModel?.timerModelList!.add(timer);
}
return true; return true;
}, },
), ),
@ -330,6 +336,4 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
); );
}); });
} }
} }

@ -99,9 +99,21 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
//TODO add this as dropdown not added in design yet Bhaa need to confirm with hussain then. //TODO add this as dropdown not added in design yet Bhaa need to confirm with hussain then.
requestDetailProvider.activityMaintenanceHelperModel?.lastSituationId = 282; requestDetailProvider.activityMaintenanceHelperModel?.lastSituationId = 282;
if (validate(model: requestDetailProvider.activityMaintenanceHelperModel!)) { if (validate(model: requestDetailProvider.activityMaintenanceHelperModel!)) {
requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers =requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers??[]; requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers = requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers ?? [];
requestDetailProvider.activityMaintenanceHelperModel?.timerModelList?.forEach((timer) {
int durationInSecond = timer.endAt!.difference(timer.startAt!).inSeconds;
requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers?.add(
ActivityMaintenanceTimers(
id: 0,
startTime: timer.startAt!.toIso8601String(), // Handle potential null
endTime: timer.endAt?.toIso8601String(), // Handle potential null
workingHours: ((durationInSecond) / 60 / 60),
),
);
});
requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers?.add( requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers?.add(
ActivityMaintenanceTimers( ActivityMaintenanceTimers(
id: 0, id: 0,
@ -137,18 +149,16 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
} }
bool validate({required ActivityMaintenanceHelperModel model}) { bool validate({required ActivityMaintenanceHelperModel model}) {
if (model.activityStatus == null) { if (model.activityStatus == null) {
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}"); Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}");
return false; return false;
} }
if (model.activityMaintenanceTimerModel?.startAt == null) { if (model.activityMaintenanceTimerModel?.startAt == null) {
Fluttertoast.showToast(msg: "Working Hours Required"); Fluttertoast.showToast(msg: "Working Hours Required");
return false; return false;
} }
if (model.activityMaintenanceTimerModel?.endAt == null) { if (model.activityMaintenanceTimerModel?.endAt == null) {
Fluttertoast.showToast(msg: "Please Stop The Timer"); Fluttertoast.showToast(msg: "Please Stop The Timer");
return false; return false;
} }
// if (model.startTime == null) { // if (model.startTime == null) {
@ -163,7 +173,7 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.travelingHours}"); // Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.travelingHours}");
// return false; // return false;
// } // }
if (model.repairLocation == null) { if (model.repairLocation == null) {
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}"); Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}");
return false; return false;
} }

Loading…
Cancel
Save