ppm timer improvement cont-1

design_3.0_latest
Sikander Saleem 9 months ago
parent 58fb4b3829
commit 0246bb1606

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

@ -114,8 +114,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
separatorBuilder: (czt, index) => 16.height,
itemBuilder: (context, index) {
if (activities[index].activityMaintenance != null) {
return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index])
.paddingOnly(top: 8, bottom: 8);
return maintenanceActivityCard(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/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/timer_model.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/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/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 '../../../../../models/lookup.dart';
import '../../../../../new_views/common_widgets/app_text_form_field.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);
super.initState();
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;
}
@ -50,12 +51,12 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
super.dispose();
}
@override
Widget build(BuildContext context) {
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(
child: Column(
children: [
@ -96,13 +97,18 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
AppTimer(
label: context.translation.timer,
timer: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel,
enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null,
// enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null,
timerProgress: (isRunning) {
print("timerProgress:$isRunning");
},
onChange: (timer) async {
requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel = timer;
if (timer.startAt != null && timer.endAt != null) {
requestDetailProvider.activityMaintenanceHelperModel?.timerModelList = requestDetailProvider.activityMaintenanceHelperModel?.timerModelList ?? [];
requestDetailProvider.activityMaintenanceHelperModel?.timerModelList!.add(timer);
}
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.
requestDetailProvider.activityMaintenanceHelperModel?.lastSituationId = 282;
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(
ActivityMaintenanceTimers(
id: 0,
@ -137,18 +149,16 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
}
bool validate({required ActivityMaintenanceHelperModel model}) {
if (model.activityStatus == null) {
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}");
return false;
}
if (model.activityMaintenanceTimerModel?.startAt == null) {
Fluttertoast.showToast(msg: "Working Hours Required");
Fluttertoast.showToast(msg: "Working Hours Required");
return false;
}
if (model.activityMaintenanceTimerModel?.endAt == null) {
Fluttertoast.showToast(msg: "Please Stop The Timer");
Fluttertoast.showToast(msg: "Please Stop The Timer");
return false;
}
// if (model.startTime == null) {
@ -163,7 +173,7 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.travelingHours}");
// return false;
// }
if (model.repairLocation == null) {
if (model.repairLocation == null) {
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}");
return false;
}

Loading…
Cancel
Save