timer issue fixed.

design_3.0_task_module_new
Sikander Saleem 4 months ago
parent 60979b7f95
commit 407c913002

@ -80,37 +80,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
children: [ children: [
(activities.isEmpty && reOrderActivities.isEmpty) (activities.isEmpty && reOrderActivities.isEmpty)
? NoDataFound(message: context.translation.noDataFound).center.expanded ? NoDataFound(message: context.translation.noDataFound).center.expanded
: : ListView.separated(
// : showReorderView
// ? ReorderableListView(
// padding: const EdgeInsets.all(16),
// children: [
// for (int index = 0; index < reOrderActivities.length; index++)
// if (reOrderActivities[index].activityMaintenance != null)
// ReorderWidget(
// key: ValueKey(index),
// child: maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: reOrderActivities[index])
// .paddingOnly(top: 8, bottom: 8),
// )
// else
// ReorderWidget(
// key: ValueKey(index),
// child: sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: reOrderActivities[index])
// .paddingOnly(top: 8, bottom: 8),
// )
// ],
// onReorder: (oldIndex, newIndex) {
// setState(() {
// if (oldIndex < newIndex) {
// newIndex -= 1;
// }
// final Activities item = reOrderActivities.removeAt(oldIndex);
// reOrderActivities.insert(newIndex, item);
// });
// }).expanded
// :
ListView.separated(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
itemCount: activities.length, itemCount: activities.length,
separatorBuilder: (czt, index) => 16.height, separatorBuilder: (czt, index) => 16.height,
@ -131,17 +101,6 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
loading: requestDetailProvider.isLoading, loading: requestDetailProvider.isLoading,
disableButton: disableNewActivity, disableButton: disableNewActivity,
onPressed: () async { onPressed: () async {
// if (showReorderView) {
// // requestDetailProvider.currentWorkOrder!.data!.activities = reOrderActivities;
// List<Map<String, dynamic>> data = [];
// for (int i = 0; i < reOrderActivities.length; i++) {
// data.add({"id": reOrderActivities[i].id, "orderNo": i});
// }
// reOrderActivities = [];
// requestDetailProvider.reOrderActivities(workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, reOrderActivityDTOs: data);
// showReorderView = false;
// return;
// }
ServiceRequestBottomSheet.activityTypeBottomSheet(context: context); ServiceRequestBottomSheet.activityTypeBottomSheet(context: context);
}, },
)) ))
@ -152,6 +111,11 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
} }
Widget sparePartActivityCard({required ServiceRequestDetailProvider requestDetailProvider, required UserProvider userProvider, required BuildContext context, required Activities activity}) { Widget sparePartActivityCard({required ServiceRequestDetailProvider requestDetailProvider, required UserProvider userProvider, required BuildContext context, required Activities activity}) {
bool showActionButtons = userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId &&
userProvider.user!.type == UsersTypes.engineer &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 3;
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -167,10 +131,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
backgroundColor: AppColor.primary10, backgroundColor: AppColor.primary10,
), ),
// "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160), // "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160),
if (userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId && if (showActionButtons)
userProvider.user!.type == UsersTypes.engineer &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -225,10 +186,10 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
], ],
], ],
).toShadowContainer(context, padding: 12, showShadow: false).onPress(() { ).toShadowContainer(context, padding: 12, showShadow: false).onPress(() {
if (showActionButtons) return;
if (requestDetailProvider.isReadOnlyRequest) { if (requestDetailProvider.isReadOnlyRequest) {
editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
} } else if (userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId) {
else if(userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId) {
requestDetailProvider.isReadOnlyRequest = true; requestDetailProvider.isReadOnlyRequest = true;
editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editSparePartRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
} }
@ -239,6 +200,10 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
double totalWorkingHours = double totalWorkingHours =
activity.activityMaintenance?.activityMaintenanceTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? 0; activity.activityMaintenance?.activityMaintenanceTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? 0;
bool showActionButtons = userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId &&
userProvider.user!.type == UsersTypes.engineer &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 3;
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -268,10 +233,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
), ),
// "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160), // "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160),
if (userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId && if (showActionButtons)
userProvider.user!.type == UsersTypes.engineer &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 &&
requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -338,10 +300,10 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
// ] // ]
], ],
).toShadowContainer(context, padding: 12, showShadow: false).onPress(() { ).toShadowContainer(context, padding: 12, showShadow: false).onPress(() {
if (showActionButtons) return;
if (requestDetailProvider.isReadOnlyRequest) { if (requestDetailProvider.isReadOnlyRequest) {
editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
} } else if (userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId) {
else if(userProvider.user!.userID == requestDetailProvider.currentWorkOrder?.data?.assignedEmployee?.userId) {
requestDetailProvider.isReadOnlyRequest = true; requestDetailProvider.isReadOnlyRequest = true;
editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity); editMaintenanceRequest(context: context, requestDetailProvider: requestDetailProvider, activity: activity);
} }
@ -399,7 +361,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
if (activity.activityMaintenance?.supplier != null) { if (activity.activityMaintenance?.supplier != null) {
requestDetailProvider.activityMaintenanceHelperModel?.supplier?.suppPersons = await requestDetailProvider.getSupplierEngineerData(supplierName: activity.activityMaintenance!.supplier!.name!); requestDetailProvider.activityMaintenanceHelperModel?.supplier?.suppPersons = await requestDetailProvider.getSupplierEngineerData(supplierName: activity.activityMaintenance!.supplier!.name!);
} }
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); // requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
// return; // return;
} catch (e) { } catch (e) {
print("Edit error $e"); print("Edit error $e");

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/api_routes/api_manager.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';
@ -168,14 +169,44 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
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) {
Fluttertoast.showToast(msg: "Working Hours Required"); bool isTimerPickerEnable = ApiManager.instance.assetGroup?.enabledEngineerTimer ?? false;
return false;
} if (isTimerPickerEnable) {
if (model.activityMaintenanceTimerModel?.endAt == null) { if (model.activityMaintenanceTimerModel?.startAt == null && model.activityTimePicker == null) {
Fluttertoast.showToast(msg: "Please Stop The Timer"); Fluttertoast.showToast(msg: "Working Hours Required");
return false; return false;
}
if (model.activityTimePicker == null) {
if (model.activityMaintenanceTimerModel?.startAt == null) {
Fluttertoast.showToast(msg: "Working Hours Required");
return false;
}
if (model.activityMaintenanceTimerModel?.endAt == null) {
Fluttertoast.showToast(msg: "Please Stop The Timer");
return false;
}
}
} else {
if (model.activityMaintenanceTimerModel?.startAt == null) {
Fluttertoast.showToast(msg: "Working Hours Required");
return false;
}
if (model.activityMaintenanceTimerModel?.endAt == null) {
Fluttertoast.showToast(msg: "Please Stop The Timer");
return false;
}
} }
//
// if (model.activityMaintenanceTimerModel?.startAt == null) {
// Fluttertoast.showToast(msg: "Working Hours Required");
// return false;
// }
// if (model.activityMaintenanceTimerModel?.endAt == null) {
// Fluttertoast.showToast(msg: "Please Stop The Timer");
// return false;
// }
// if (model.startTime == null) { // if (model.startTime == null) {
// Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.startTime}"); // Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.startTime}");
// return false; // return false;

@ -166,7 +166,7 @@ class _AppTimerState extends State<AppTimer> {
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: _pickerStartAt, date: _pickerStartAt,
from: widget.pickerFromDate, from: widget.pickerFromDate,
enable: _tempPickerTimer == null, enable: widget.enabled ? _tempPickerTimer == null:false,
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
@ -185,7 +185,7 @@ class _AppTimerState extends State<AppTimer> {
label: context.translation.endTime, label: context.translation.endTime,
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
enable: _pickerStartAt != null, enable: widget.enabled? _pickerStartAt != null:false,
from:_pickerStartAt, from:_pickerStartAt,
date: _pickerEndAt, date: _pickerEndAt,
to: DateTime.now(), to: DateTime.now(),

Loading…
Cancel
Save