|
|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
@ -31,6 +32,7 @@ import 'package:test_sa/views/widgets/equipment/asset_picker.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/sound/TextSpeechRecordWidget.dart';
|
|
|
|
|
|
|
|
|
|
import '../../../../../../new_views/common_widgets/default_app_bar.dart';
|
|
|
|
|
|
|
|
|
|
class CreateNewRequest extends StatefulWidget {
|
|
|
|
|
@ -81,15 +83,17 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
isFirstActionSubmitted = _serviceRequest.firstAction != null;
|
|
|
|
|
// _isLoading = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Future<void> getInitialData() async {
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async{
|
|
|
|
|
await Provider.of<PriorityProvider>(context,listen: false).getDate();
|
|
|
|
|
await Provider.of<EquipmentStatusProvider>(context,listen: false).getDate();
|
|
|
|
|
await Provider.of<RequestedThroughProvider>(context,listen: false).getDate();
|
|
|
|
|
await Provider.of<TypeOfRequestProvider>(context,listen: false).getDate();
|
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
|
|
|
if(Provider.of<SettingProvider>(context, listen: false).showPriority) {
|
|
|
|
|
await Provider.of<PriorityProvider>(context, listen: false).getDate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await Provider.of<EquipmentStatusProvider>(context, listen: false).getDate();
|
|
|
|
|
await Provider.of<RequestedThroughProvider>(context, listen: false).getDate();
|
|
|
|
|
await Provider.of<TypeOfRequestProvider>(context, listen: false).getDate();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
@ -143,9 +147,11 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
showPendingRequests();
|
|
|
|
|
}),
|
|
|
|
|
],
|
|
|
|
|
21.height,
|
|
|
|
|
highPriorityWidget(),
|
|
|
|
|
20.height,
|
|
|
|
|
if (Provider.of<SettingProvider>(context, listen: false).showPriority) ...[
|
|
|
|
|
16.height,
|
|
|
|
|
highPriorityWidget(),
|
|
|
|
|
],
|
|
|
|
|
16.height,
|
|
|
|
|
assetStatusWidget(context),
|
|
|
|
|
24.height,
|
|
|
|
|
MultiFilesPicker(
|
|
|
|
|
@ -167,9 +173,9 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
// label: context.translation.submitRequest,
|
|
|
|
|
buttonColor: AppColor.primary10,
|
|
|
|
|
label:
|
|
|
|
|
// (pendingAssetServiceRequest != null && (pendingAssetServiceRequest!.details?.isNotEmpty ?? false))
|
|
|
|
|
// ? context.translation.duplicateRequest : // @FM said show create work order button text to create request not duplicate request
|
|
|
|
|
context.translation.createWorkOrder,
|
|
|
|
|
// (pendingAssetServiceRequest != null && (pendingAssetServiceRequest!.details?.isNotEmpty ?? false))
|
|
|
|
|
// ? context.translation.duplicateRequest : // @FM said show create work order button text to create request not duplicate request
|
|
|
|
|
context.translation.createWorkOrder,
|
|
|
|
|
onPressed: checkPendingRequest ? null : _submit,
|
|
|
|
|
// buttonColor: AppColor.primary10,
|
|
|
|
|
),
|
|
|
|
|
@ -210,7 +216,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
height: 24,
|
|
|
|
|
child: Radio(
|
|
|
|
|
value: element,
|
|
|
|
|
activeColor:AppColor.primary10,
|
|
|
|
|
activeColor: AppColor.primary10,
|
|
|
|
|
fillColor: WidgetStateColor.resolveWith((states) {
|
|
|
|
|
if (states.contains(WidgetState.selected)) {
|
|
|
|
|
return AppColor.primary10; // Thumb color when selected
|
|
|
|
|
@ -225,7 +231,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
}),
|
|
|
|
|
),
|
|
|
|
|
8.width,
|
|
|
|
|
Text(element.name??'', style: AppTextStyles.tinyFont.copyWith(color:AppColor.neutral120)),
|
|
|
|
|
Text(element.name ?? '', style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral120)),
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
@ -257,11 +263,11 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
children: [
|
|
|
|
|
context.translation.highPriority.bodyText(context).custom(color: AppColor.black20),
|
|
|
|
|
Consumer<PriorityProvider>(builder: (cxt, snapshot, _) {
|
|
|
|
|
if(snapshot.items.isNotEmpty){
|
|
|
|
|
if (snapshot.items.isNotEmpty) {
|
|
|
|
|
_serviceRequest.priority ??= snapshot.items.firstWhere((element) => element.value == 0, orElse: () => Lookup());
|
|
|
|
|
}
|
|
|
|
|
return CupertinoSwitch(
|
|
|
|
|
thumbColor:_serviceRequest.priority?.value != 0? AppColor.red70:AppColor.neutral10,
|
|
|
|
|
thumbColor: _serviceRequest.priority?.value != 0 ? AppColor.red70 : AppColor.neutral10,
|
|
|
|
|
activeColor: AppColor.red30.withOpacity(0.4),
|
|
|
|
|
value: _serviceRequest.priority?.value != 0,
|
|
|
|
|
onChanged: (state) {
|
|
|
|
|
@ -287,8 +293,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
serviceRequest?.audio = audio;
|
|
|
|
|
},
|
|
|
|
|
enabled: serviceRequest == null ? true : false,
|
|
|
|
|
)
|
|
|
|
|
.paddingOnly(start: 16, end: 16,bottom: 16);
|
|
|
|
|
).paddingOnly(start: 16, end: 16, bottom: 16);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool checkPendingRequest = false;
|
|
|
|
|
@ -329,7 +334,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
_serviceRequest.requestedThrough = Provider.of<RequestedThroughProvider>(context, listen: false).items.firstWhere((element) => element.value == 3, orElse: null);
|
|
|
|
|
_serviceRequest.type = Provider.of<TypeOfRequestProvider>(context, listen: false).items.firstWhere((element) => element.value == 1, orElse: null);
|
|
|
|
|
|
|
|
|
|
if (_formKey.currentState!.validate() && await _serviceRequest.validateNewRequest(context)) {
|
|
|
|
|
if (_formKey.currentState!.validate() && await _serviceRequest.validateNewRequest(context)) {
|
|
|
|
|
_formKey.currentState!.save();
|
|
|
|
|
|
|
|
|
|
// bool canSubmitRequest = await checkAssetForPendingServiceRequest(_serviceRequest.device.id);
|
|
|
|
|
@ -337,7 +342,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList();
|
|
|
|
|
// _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList();
|
|
|
|
|
if (_serviceRequest.audio != null) {
|
|
|
|
|
if (_isLocalUrl(_serviceRequest.audio!)) {
|
|
|
|
|
final File file = File(_serviceRequest.audio!);
|
|
|
|
|
@ -348,27 +353,26 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
|
|
|
|
|
for (var item in _deviceImages) {
|
|
|
|
|
attachement.add(WorkOrderAttachments(id: 0, name: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}"));
|
|
|
|
|
}
|
|
|
|
|
_requestDetailProvider.workOrderHelperModel = WorkOrderHelperModel(
|
|
|
|
|
assetId: _serviceRequest.device?.id,
|
|
|
|
|
priorityId: _serviceRequest.priority?.id,
|
|
|
|
|
equipmentStatusId: _serviceRequest.defectType?.id,
|
|
|
|
|
voiceNote: _serviceRequest.audio,
|
|
|
|
|
workOrderAttachments: attachement,
|
|
|
|
|
comments: _serviceRequest.callComments,
|
|
|
|
|
//add attachments also...
|
|
|
|
|
);
|
|
|
|
|
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
|
|
|
_requestDetailProvider.workOrderHelperModel = WorkOrderHelperModel(
|
|
|
|
|
assetId: _serviceRequest.device?.id,
|
|
|
|
|
priorityId: _serviceRequest.priority?.id,
|
|
|
|
|
equipmentStatusId: _serviceRequest.defectType?.id,
|
|
|
|
|
voiceNote: _serviceRequest.audio,
|
|
|
|
|
workOrderAttachments: attachement,
|
|
|
|
|
comments: _serviceRequest.callComments,
|
|
|
|
|
//add attachments also...
|
|
|
|
|
);
|
|
|
|
|
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
|
|
|
|
|
|
|
|
|
|
int status = await _requestDetailProvider.createWorkOrder();
|
|
|
|
|
if(status==200){
|
|
|
|
|
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
|
|
|
|
|
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
}
|
|
|
|
|
else{
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
}
|
|
|
|
|
int status = await _requestDetailProvider.createWorkOrder();
|
|
|
|
|
if (status == 200) {
|
|
|
|
|
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context, listen: false);
|
|
|
|
|
dashBoardProvider.refreshDashboard(context: context, userType: UsersTypes.nurse);
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
} else {
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// await _serviceRequestsProvider.createRequest(
|
|
|
|
|
// context: context,
|
|
|
|
|
|