|
|
|
|
@ -1,32 +1,26 @@
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:fluttertoast/fluttertoast.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
import 'package:test_sa/controllers/providers/api/parts_provider.dart';
|
|
|
|
|
import 'package:test_sa/controllers/providers/api/service_requests_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/user_provider.dart';
|
|
|
|
|
import 'package:test_sa/controllers/providers/settings/setting_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/device/asset.dart';
|
|
|
|
|
import 'package:test_sa/models/helper_data_models/maintenance_request/activity_maintenance_model.dart';
|
|
|
|
|
import 'package:test_sa/models/service_request/service_report.dart';
|
|
|
|
|
import 'package:test_sa/models/service_request/service_request.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/providers/loading_list_notifier.dart';
|
|
|
|
|
import 'package:test_sa/providers/work_order/activity_status_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/views/components/action_button/footer_action_button.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/date_and_time/time_picker.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
|
|
|
|
import '../../../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
|
|
|
|
|
|
|
|
|
|
import '../../../../../controllers/providers/api/status_drop_down/report/service_types_provider.dart';
|
|
|
|
|
import '../../../../../models/lookup.dart';
|
|
|
|
|
import '../../../../../new_views/common_widgets/app_text_form_field.dart';
|
|
|
|
|
@ -49,7 +43,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
ActivityStatusProvider? _activityStatusProvider;
|
|
|
|
|
ServiceReport? _serviceReport;
|
|
|
|
|
bool _isLoading = false;
|
|
|
|
|
bool isCurrentUserIsAssignedEmployee=false;
|
|
|
|
|
bool isCurrentUserIsAssignedEmployee = false;
|
|
|
|
|
|
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
|
final TextEditingController _workingHoursController = TextEditingController();
|
|
|
|
|
@ -67,7 +61,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
_requestDetailProvider = Provider.of<RequestDetailProvider>(context, listen: false);
|
|
|
|
|
|
|
|
|
|
super.initState();
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
|
getInitialData();
|
|
|
|
|
});
|
|
|
|
|
// _isLoading = true;
|
|
|
|
|
@ -81,13 +75,13 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> getInitialData() async {
|
|
|
|
|
_activityStatusProvider?.getDate();
|
|
|
|
|
Provider.of<ServiceReportRepairLocationProvider>(context,listen: false).getTypes();
|
|
|
|
|
final user = Provider.of<UserProvider>(context).user!;
|
|
|
|
|
isCurrentUserIsAssignedEmployee = (user.userID != _requestDetailProvider?.currentWorkOrder?.data?.assignedEmployee?.userId);
|
|
|
|
|
if (isCurrentUserIsAssignedEmployee) {
|
|
|
|
|
// _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)];
|
|
|
|
|
}
|
|
|
|
|
_activityStatusProvider?.getDate();
|
|
|
|
|
Provider.of<ServiceReportRepairLocationProvider>(context, listen: false).getTypes();
|
|
|
|
|
final user = Provider.of<UserProvider>(context).user!;
|
|
|
|
|
isCurrentUserIsAssignedEmployee = (user.userID != _requestDetailProvider?.currentWorkOrder?.data?.assignedEmployee?.userId);
|
|
|
|
|
if (isCurrentUserIsAssignedEmployee) {
|
|
|
|
|
// _subWorkOrders.assistantEmployees = [widget.workOrder.assistantEmployees?.first?.copyWith(id: 0)];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void getRequestForWorkOrder() async {
|
|
|
|
|
@ -104,7 +98,6 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
|
|
|
|
|
return Consumer<RequestDetailProvider>(builder: (context, requestDetailProvider, child) {
|
|
|
|
|
return LoadingManager(
|
|
|
|
|
isLoading: _isLoading,
|
|
|
|
|
@ -177,13 +170,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
).then((selectedTime) {
|
|
|
|
|
// Handle the selected date and time here.
|
|
|
|
|
if (selectedTime != null) {
|
|
|
|
|
DateTime selectedDateTime = DateTime(
|
|
|
|
|
selectedDate.year,
|
|
|
|
|
selectedDate.month,
|
|
|
|
|
selectedDate.day,
|
|
|
|
|
selectedTime.hour,
|
|
|
|
|
selectedTime.minute,
|
|
|
|
|
);
|
|
|
|
|
DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
|
|
|
|
|
if (requestDetailProvider.activityMaintenanceHelperModel!.startTime != null &&
|
|
|
|
|
selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.startTime!)) {
|
|
|
|
|
"End Date time must be greater then start date".showToast;
|
|
|
|
|
@ -229,7 +216,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
16.height,
|
|
|
|
|
repairLocationWidget(context,requestDetailProvider),
|
|
|
|
|
repairLocationWidget(context, requestDetailProvider),
|
|
|
|
|
16.height,
|
|
|
|
|
AppTextFormField(
|
|
|
|
|
labelText: context.translation.assignedEmployee,
|
|
|
|
|
@ -260,7 +247,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
).toShadowContainer(context).paddingOnly(start: 13, end: 14, top: 12),
|
|
|
|
|
const AssistantEmployeeCard().toShadowContainer(context, paddingValue: const EdgeInsets.symmetric(horizontal: 16)).paddingOnly(start: 13, end: 14, top: 12),
|
|
|
|
|
const AssistantEmployeeCard().paddingOnly(start: 13, end: 14, top: 12),
|
|
|
|
|
100.height,
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
@ -280,7 +267,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget repairLocationWidget(BuildContext context,RequestDetailProvider requestDetailProvider) {
|
|
|
|
|
Widget repairLocationWidget(BuildContext context, RequestDetailProvider requestDetailProvider) {
|
|
|
|
|
return Consumer<ServiceReportRepairLocationProvider>(builder: (cxt, snapshot, _) {
|
|
|
|
|
try {
|
|
|
|
|
requestDetailProvider.activityMaintenanceHelperModel?.repairLocation ??= snapshot.reasons?.first;
|
|
|
|
|
@ -298,7 +285,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
runSpacing: 8,
|
|
|
|
|
spacing: 8,
|
|
|
|
|
children: [
|
|
|
|
|
for (var element in snapshot.reasons??[])
|
|
|
|
|
for (var element in snapshot.reasons ?? [])
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
|
|
children: [
|
|
|
|
|
@ -309,7 +296,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
value: element,
|
|
|
|
|
activeColor: Colors.red,
|
|
|
|
|
fillColor: WidgetStateColor.resolveWith((states) {
|
|
|
|
|
if (states.contains(WidgetState.selected)) return AppColor.primary10;
|
|
|
|
|
if (states.contains(WidgetState.selected)) return AppColor.primary10;
|
|
|
|
|
return AppColor.neutral130;
|
|
|
|
|
}),
|
|
|
|
|
groupValue: requestDetailProvider.activityMaintenanceHelperModel?.repairLocation,
|
|
|
|
|
@ -320,7 +307,7 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
}),
|
|
|
|
|
),
|
|
|
|
|
8.width,
|
|
|
|
|
Text(element.name??'', style: AppTextStyles.tinyFont.copyWith(color:AppColor.neutral120)),
|
|
|
|
|
Text(element.name ?? '', style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral120)),
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
@ -348,8 +335,9 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
requestDetailProvider.activityMaintenanceHelperModel!.workingHour = hours;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Future<bool> validate({required ActivityMaintenanceHelperModel model }) async {
|
|
|
|
|
if (model.activityStatus == null) {
|
|
|
|
|
|
|
|
|
|
Future<bool> validate({required ActivityMaintenanceHelperModel model}) async {
|
|
|
|
|
if (model.activityStatus == null) {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}");
|
|
|
|
|
return false;
|
|
|
|
|
} else if (model.startTime == null) {
|
|
|
|
|
@ -358,16 +346,15 @@ class _InternalMaintenanceRequestState extends State<InternalMaintenanceRequest>
|
|
|
|
|
} else if (model.endTime == null) {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.endTime}");
|
|
|
|
|
return false;
|
|
|
|
|
} else if (model.travelHours==null) {
|
|
|
|
|
} else if (model.travelHours == null) {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.travelingHours}");
|
|
|
|
|
return false;
|
|
|
|
|
}else if (model.repairLocation == null) {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//write all other missing conditions..
|
|
|
|
|
} else if (model.repairLocation == null) {
|
|
|
|
|
Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//write all other missing conditions..
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|