|
|
|
|
@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:fluttertoast/fluttertoast.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
|
|
|
|
import 'package:test_sa/models/lookup.dart';
|
|
|
|
|
import 'package:test_sa/models/service_request/search_work_order.dart';
|
|
|
|
|
import 'package:test_sa/models/subtitle.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/app_text_form_field.dart';
|
|
|
|
|
@ -13,14 +12,12 @@ import 'package:test_sa/views/widgets/status/report/service_report_repair_locati
|
|
|
|
|
|
|
|
|
|
import '../../../controllers/api_routes/http_status_manger.dart';
|
|
|
|
|
import '../../../controllers/localization/localization.dart';
|
|
|
|
|
import '../../../models/engineer.dart';
|
|
|
|
|
import '../../app_style/sizing.dart';
|
|
|
|
|
import '../../widgets/date_and_time/time_picker.dart';
|
|
|
|
|
import '../../widgets/status/report/service_report_all_users.dart';
|
|
|
|
|
import '../../widgets/titles/app_sub_title.dart';
|
|
|
|
|
|
|
|
|
|
class WorkOrderDetailsBottomSheet extends StatefulWidget {
|
|
|
|
|
final SearchWorkOrders workOrder;
|
|
|
|
|
final SearchWorkOrder workOrder;
|
|
|
|
|
const WorkOrderDetailsBottomSheet({this.workOrder, Key key}) : super(key: key);
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
@ -29,7 +26,7 @@ class WorkOrderDetailsBottomSheet extends StatefulWidget {
|
|
|
|
|
|
|
|
|
|
class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomSheet> {
|
|
|
|
|
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
|
|
|
|
|
SearchWorkOrders _workOrder;
|
|
|
|
|
SearchWorkOrder _workOrder;
|
|
|
|
|
bool _isLoading = false;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
@ -73,14 +70,14 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
|
|
|
|
|
const SizedBox(height: 8),
|
|
|
|
|
const ASubTitle("Assistant Employee"),
|
|
|
|
|
const SizedBox(height: 4),
|
|
|
|
|
ServiceReportAllUsers(
|
|
|
|
|
initialValue: _workOrder.assistantEmployees == null || _workOrder.assistantEmployees.isEmpty
|
|
|
|
|
? null
|
|
|
|
|
: Engineer(id: _workOrder.assistantEmployees?.first?.id, name: _workOrder.assistantEmployees?.first?.name),
|
|
|
|
|
onSelect: (engineer) {
|
|
|
|
|
_workOrder.assistantEmployees = [AssignedEmployee(id: engineer.id, name: engineer.name)];
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
// ServiceReportAllUsers(
|
|
|
|
|
// initialValue: _workOrder.assistantEmployees == null || _workOrder.assistantEmployees.isEmpty
|
|
|
|
|
// ? null
|
|
|
|
|
// : Engineer(id: _workOrder.assistantEmployees?.first?.id, name: _workOrder.assistantEmployees?.first?.name),
|
|
|
|
|
// onSelect: (engineer) {
|
|
|
|
|
// _workOrder.assistantEmployees = [AssignedEmployee(id: engineer.id, name: engineer.name)];
|
|
|
|
|
// },
|
|
|
|
|
// ),
|
|
|
|
|
const SizedBox(height: 8),
|
|
|
|
|
Row(
|
|
|
|
|
children: [
|
|
|
|
|
@ -93,11 +90,11 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
|
|
|
|
|
height: 8 * AppStyle.getScaleFactor(context),
|
|
|
|
|
),
|
|
|
|
|
ADateTimePicker(
|
|
|
|
|
date: DateTime.tryParse(_workOrder.startDate ?? ""),
|
|
|
|
|
date: DateTime.tryParse(_workOrder.startofWorkTime ?? ""),
|
|
|
|
|
from: DateTime.now().subtract(const Duration(days: 365)),
|
|
|
|
|
to: DateTime.now().add(const Duration(days: 365)),
|
|
|
|
|
onDateTimePicker: (date) {
|
|
|
|
|
_workOrder.startDate = date?.toIso8601String();
|
|
|
|
|
_workOrder.startofWorkTime = date?.toIso8601String();
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
@ -114,11 +111,11 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
|
|
|
|
|
height: 8 * AppStyle.getScaleFactor(context),
|
|
|
|
|
),
|
|
|
|
|
ADateTimePicker(
|
|
|
|
|
date: DateTime.tryParse(_workOrder.endDate ?? ""),
|
|
|
|
|
date: DateTime.tryParse(_workOrder.endofWorkTime ?? ""),
|
|
|
|
|
from: DateTime.now().subtract(const Duration(days: 365)),
|
|
|
|
|
to: DateTime.now().add(const Duration(days: 365)),
|
|
|
|
|
onDateTimePicker: (date) {
|
|
|
|
|
_workOrder.endDate = date?.toIso8601String();
|
|
|
|
|
_workOrder.endofWorkTime = date?.toIso8601String();
|
|
|
|
|
setState(() {});
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
@ -133,9 +130,12 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
|
|
|
|
|
ATextFormField(
|
|
|
|
|
initialValue: null,
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
hintText: _workOrder.startDate == null
|
|
|
|
|
hintText: _workOrder.startofWorkTime == null
|
|
|
|
|
? "0"
|
|
|
|
|
: ((DateTime.tryParse(_workOrder.endDate ?? "")?.difference(DateTime.tryParse(_workOrder.startDate ?? ""))?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? "0",
|
|
|
|
|
: ((DateTime.tryParse(_workOrder.endofWorkTime ?? "")?.difference(DateTime.tryParse(_workOrder.startofWorkTime ?? ""))?.inMinutes ?? 0) / 60)
|
|
|
|
|
?.toStringAsFixed(2)
|
|
|
|
|
?.toString() ??
|
|
|
|
|
"0",
|
|
|
|
|
enable: false,
|
|
|
|
|
style: Theme.of(context).textTheme.titleMedium,
|
|
|
|
|
// validator: (value) => Validator.isNumeric(value) ? null : _subtitle.requiredWord,
|
|
|
|
|
@ -180,18 +180,18 @@ class _WorkOrderDetailsBottomSheetState extends State<WorkOrderDetailsBottomShee
|
|
|
|
|
const ASubTitle("Repair Location"),
|
|
|
|
|
const SizedBox(height: 4),
|
|
|
|
|
ServiceReportRepairLocation(
|
|
|
|
|
initialValue: _workOrder.repairLocation != null ? Lookup(name: _workOrder.repairLocation) : null,
|
|
|
|
|
initialValue: _workOrder.repairLocation,
|
|
|
|
|
onSelect: (status) {
|
|
|
|
|
_workOrder.repairLocation = status.name;
|
|
|
|
|
_workOrder.repairLocation = status;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 8),
|
|
|
|
|
ATextFormField(
|
|
|
|
|
labelText: "Technical Comments",
|
|
|
|
|
initialValue: _workOrder.reviewComment,
|
|
|
|
|
initialValue: _workOrder.comment,
|
|
|
|
|
textInputType: TextInputType.multiline,
|
|
|
|
|
onSaved: (value) {
|
|
|
|
|
_workOrder.reviewComment = value;
|
|
|
|
|
_workOrder.comment = value;
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
const SizedBox(height: 24),
|
|
|
|
|
|