service request detail ui changed.
parent
ec4d4a9193
commit
2d553b56e0
@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="21" viewBox="0 0 24 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M22.5707 8.52108L3.20688 0.761111C2.39112 0.434161 1.46951 0.577989 0.801771 1.13628C0.134036 1.69465 -0.145246 2.55499 0.0730043 3.38151L1.79655 9.90929H10.2353C10.6236 9.90929 10.9385 10.2133 10.9385 10.5884C10.9385 10.9634 10.6236 11.2675 10.2353 11.2675H1.79655L0.0730043 17.7953C-0.145246 18.6218 0.133989 19.4822 0.801771 20.0405C1.47087 20.5999 2.39257 20.742 3.20693 20.4157L22.5707 12.6557C23.4524 12.3024 24 11.5103 24 10.5884C24 9.66654 23.4524 8.87434 22.5707 8.52108Z" fill="#163A51"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 615 B |
@ -0,0 +1,2 @@
|
|||||||
|
assets:
|
||||||
|
- assets/images/
|
||||||
@ -1,548 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:intl/intl.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:test_sa/controllers/localization/localization.dart';
|
|
||||||
import 'package:test_sa/controllers/providers/api/service_requests_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/enums/translation_keys.dart';
|
|
||||||
import 'package:test_sa/models/enums/user_types.dart';
|
|
||||||
import 'package:test_sa/models/service_request/service_request.dart';
|
|
||||||
import 'package:test_sa/models/subtitle.dart';
|
|
||||||
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
|
|
||||||
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
|
|
||||||
import 'package:test_sa/views/app_style/colors.dart';
|
|
||||||
import 'package:test_sa/views/app_style/sizing.dart';
|
|
||||||
import 'package:test_sa/views/pages/user/requests/create_request.dart';
|
|
||||||
import 'package:test_sa/views/pages/user/requests/report/create_service_report.dart';
|
|
||||||
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
|
|
||||||
import 'package:test_sa/views/widgets/buttons/app_button.dart';
|
|
||||||
import 'package:test_sa/views/widgets/buttons/app_icon_button.dart';
|
|
||||||
import 'package:test_sa/views/widgets/images/files_list.dart';
|
|
||||||
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
|
|
||||||
import 'package:test_sa/views/widgets/requests/info_row.dart';
|
|
||||||
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
|
||||||
import 'package:test_sa/views/widgets/sound/sound_player.dart';
|
|
||||||
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
|
|
||||||
|
|
||||||
import '../../../../models/service_request/search_work_order.dart';
|
|
||||||
import 'report/future_service_report.dart';
|
|
||||||
|
|
||||||
class RequestDetailsPage extends StatelessWidget {
|
|
||||||
static const String id = "/call-details";
|
|
||||||
ServiceRequest serviceRequest;
|
|
||||||
|
|
||||||
RequestDetailsPage({Key key, this.serviceRequest}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
UserProvider _userProvider = Provider.of<UserProvider>(context);
|
|
||||||
SettingProvider _settingProvider = Provider.of<SettingProvider>(context);
|
|
||||||
List<SearchWorkOrder> workOrders = [];
|
|
||||||
ServiceRequestsProvider _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
|
||||||
_serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id);
|
|
||||||
|
|
||||||
Widget informationCard() {
|
|
||||||
return Container(
|
|
||||||
decoration: ShapeDecoration(
|
|
||||||
color: Colors.white,
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(20),
|
|
||||||
),
|
|
||||||
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
|
|
||||||
),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
Row(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
StatusLabel(
|
|
||||||
label: serviceRequest.priority.name,
|
|
||||||
id: serviceRequest.priority.id,
|
|
||||||
textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id),
|
|
||||||
backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id)),
|
|
||||||
8.width,
|
|
||||||
StatusLabel(
|
|
||||||
label: serviceRequest.statusLabel,
|
|
||||||
textColor: AColors.getRequestStatusTextColor(serviceRequest.statusValue),
|
|
||||||
backgroundColor: AColors.getRequestStatusColor(serviceRequest.statusValue)),
|
|
||||||
1.width.expanded,
|
|
||||||
Text(serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
8.height,
|
|
||||||
Text(serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
|
|
||||||
Text(
|
|
||||||
'${context.translation.assetNumber}: ${serviceRequest.device.assetNumber}',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Request Type: ${serviceRequest.type.name}',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Request No: ${serviceRequest.requestCode}',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
8.height,
|
|
||||||
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
|
||||||
8.height,
|
|
||||||
Text(
|
|
||||||
'Manufacture: ${serviceRequest.device.modelDefinition.manufacturerName}',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
Text(
|
|
||||||
'Model: ${serviceRequest.device.modelDefinition.modelName}',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
8.height,
|
|
||||||
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
|
||||||
8.height,
|
|
||||||
if ((serviceRequest.callComments ?? "").isNotEmpty) ...[
|
|
||||||
Text(
|
|
||||||
serviceRequest.callComments,
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
|
||||||
),
|
|
||||||
8.height,
|
|
||||||
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
|
||||||
],
|
|
||||||
if (serviceRequest.devicePhotos.isNotEmpty) ...[
|
|
||||||
FilesList(images: serviceRequest.devicePhotos),
|
|
||||||
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
|
||||||
],
|
|
||||||
if (serviceRequest.audio?.isNotEmpty == true) ...[
|
|
||||||
16.height,
|
|
||||||
ASoundPlayer(
|
|
||||||
audio: serviceRequest.audio,
|
|
||||||
),
|
|
||||||
16.height,
|
|
||||||
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
|
||||||
],
|
|
||||||
Row(
|
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
children: [
|
|
||||||
Text(
|
|
||||||
'View Comments',
|
|
||||||
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
|
|
||||||
),
|
|
||||||
4.width,
|
|
||||||
const Icon(
|
|
||||||
Icons.arrow_forward,
|
|
||||||
color: Color(0xFF4A8DB7),
|
|
||||||
size: 14,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
).paddingAll(16),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefaultTabController(
|
|
||||||
length: 2,
|
|
||||||
child: Scaffold(
|
|
||||||
appBar: DefaultAppBar(title: context.translation.serviceRequest),
|
|
||||||
backgroundColor: const Color(0xfff8f9fb),
|
|
||||||
body: SafeArea(
|
|
||||||
child: FutureBuilder(
|
|
||||||
future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id),
|
|
||||||
builder: (context, snap) {
|
|
||||||
if (snap.connectionState == ConnectionState.waiting) {
|
|
||||||
return const ALoading();
|
|
||||||
} else if (snap.hasData) {
|
|
||||||
serviceRequest = snap.data;
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Container(
|
|
||||||
color: AColors.primaryColor,
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
|
|
||||||
child: Row(
|
|
||||||
children: [
|
|
||||||
ABackButton(),
|
|
||||||
Expanded(
|
|
||||||
child: Center(
|
|
||||||
child: Text(
|
|
||||||
context.translation.details,
|
|
||||||
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
_userProvider.user.type == UsersTypes.normal_user
|
|
||||||
?
|
|
||||||
// AIconButton(
|
|
||||||
// iconData: Icons.warning_amber_rounded,
|
|
||||||
// color: AColors.white,
|
|
||||||
// buttonSize: 42,
|
|
||||||
// backgroundColor: AColors.deepOrange,
|
|
||||||
// onPressed: (){
|
|
||||||
// Navigator.of(context).push(
|
|
||||||
// MaterialPageRoute(
|
|
||||||
// builder: (_) => ReportIssuesPage(serviceRequest: serviceRequest,)
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// )
|
|
||||||
const SizedBox(
|
|
||||||
width: 48,
|
|
||||||
)
|
|
||||||
: AIconButton(
|
|
||||||
iconData: Icons.edit,
|
|
||||||
color: AColors.white,
|
|
||||||
buttonSize: 42,
|
|
||||||
backgroundColor: AColors.green,
|
|
||||||
onPressed: (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3)
|
|
||||||
? null
|
|
||||||
: () async {
|
|
||||||
Navigator.of(context).push(
|
|
||||||
MaterialPageRoute(builder: (_) => CreateRequestPage(serviceRequest: serviceRequest)),
|
|
||||||
);
|
|
||||||
// showModalBottomSheet(
|
|
||||||
// context: context,
|
|
||||||
// builder: (context) {
|
|
||||||
// return ServiceRequestsUpdateDialog(
|
|
||||||
// request: serviceRequest,
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
// DateTime picked = await showDatePicker(
|
|
||||||
// context: context,
|
|
||||||
// initialDate: DateTime.now(),
|
|
||||||
// firstDate: DateTime.now(),
|
|
||||||
// lastDate: DateTime.now().add(Duration(days: 182))
|
|
||||||
// );
|
|
||||||
// if(picked == null){return;}
|
|
||||||
// showDialog<void>(
|
|
||||||
// context: context,
|
|
||||||
// barrierDismissible: false,
|
|
||||||
// builder: (BuildContext context) {
|
|
||||||
// return CupertinoAlertDialog(
|
|
||||||
// title: Text(context.translation.updatingDots),
|
|
||||||
// content: Center(child: CircularProgressIndicator()),
|
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// );
|
|
||||||
// int status = await _serviceRequestsProvider.updateDate(
|
|
||||||
// user: _userProvider.user,
|
|
||||||
// host: _settingProvider.host,
|
|
||||||
// request: serviceRequest,
|
|
||||||
// newDate: picked.toString().split(" ").first
|
|
||||||
// );
|
|
||||||
// Navigator.of(context).pop();
|
|
||||||
// Fluttertoast.showToast(
|
|
||||||
// msg: HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation),
|
|
||||||
// );
|
|
||||||
},
|
|
||||||
),
|
|
||||||
SizedBox(
|
|
||||||
width: 16,
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
serviceRequest.devicePhotos.isEmpty
|
|
||||||
? const SizedBox.shrink()
|
|
||||||
: SizedBox(
|
|
||||||
height: 60 * AppStyle.getScaleFactor(context),
|
|
||||||
child: FilesList(
|
|
||||||
images: serviceRequest.devicePhotos,
|
|
||||||
),
|
|
||||||
).paddingOnly(top: 4, bottom: 4),
|
|
||||||
TabBar(labelColor: AColors.primaryColor, tabs: [
|
|
||||||
Tab(
|
|
||||||
text: context.translation.general,
|
|
||||||
),
|
|
||||||
Tab(
|
|
||||||
text: context.translation.serviceRequestInformation,
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
SizedBox(
|
|
||||||
height: 8,
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: TabBarView(
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
children: [
|
|
||||||
ListView(
|
|
||||||
padding: const EdgeInsets.all(16),
|
|
||||||
children: [
|
|
||||||
informationCard(),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.callId,
|
|
||||||
info: serviceRequest.requestCode,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: "Asset Number",
|
|
||||||
info: serviceRequest.deviceNumber,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.assetName,
|
|
||||||
info: serviceRequest.deviceEnName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.deviceModel,
|
|
||||||
info: serviceRequest.deviceModel,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.engineerName,
|
|
||||||
info: serviceRequest.engineerName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.engineerPhone,
|
|
||||||
info: serviceRequest.engineerMobile,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.date,
|
|
||||||
info: serviceRequest.date,
|
|
||||||
),
|
|
||||||
serviceRequest.nextVisitDate == null
|
|
||||||
? SizedBox.shrink()
|
|
||||||
: RequestInfoRow(
|
|
||||||
title: context.translation.next,
|
|
||||||
info: DateFormat('EE dd/MM/yyyy').format(serviceRequest.nextVisitDate),
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: Text(
|
|
||||||
"${context.translation.status} : ",
|
|
||||||
style: Theme.of(context).textTheme.subtitle1,
|
|
||||||
textScaleFactor: AppStyle.getScaleFactor(context),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
StatusLabel(label: serviceRequest.statusLabel, backgroundColor: AColors.getRequestStatusColor(serviceRequest.statusValue)),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
Divider(
|
|
||||||
color: Theme.of(context).primaryColor,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.hospital,
|
|
||||||
info: serviceRequest.hospitalName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.unite,
|
|
||||||
info: serviceRequest.departmentName,
|
|
||||||
),
|
|
||||||
// RequestInfoRow(
|
|
||||||
// title: context.translation.deviceArName,
|
|
||||||
// content: serviceRequest.deviceArName,
|
|
||||||
// ),
|
|
||||||
// RequestInfoRow(
|
|
||||||
// title: context.translation.deviceName,
|
|
||||||
// content: serviceRequest.deviceEnName,
|
|
||||||
// ),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.maintenanceIssue,
|
|
||||||
content: serviceRequest.callComments,
|
|
||||||
),
|
|
||||||
if (serviceRequest.audio?.isNotEmpty == true)
|
|
||||||
ASoundPlayer(
|
|
||||||
audio: serviceRequest.audio,
|
|
||||||
),
|
|
||||||
//
|
|
||||||
// Center(
|
|
||||||
// child: Padding(
|
|
||||||
// padding: EdgeInsets.all(32),
|
|
||||||
// child: AButton(
|
|
||||||
// text: context.translation.duplicateRequest,
|
|
||||||
// onPressed: () async {
|
|
||||||
// bool result = await showDialog(
|
|
||||||
// context: context,
|
|
||||||
// builder: (_) => AAlertDialog(
|
|
||||||
// title: context.translation.duplicateAlert,
|
|
||||||
// content: context.translation.duplicateAlertMessage,
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
// if(result == true){
|
|
||||||
// showDialog(
|
|
||||||
// context: context,
|
|
||||||
// builder: (context){
|
|
||||||
// return Center(child: CircularProgressIndicator());
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
// int status = await _serviceRequestsProvider.createDuplicatedReport(
|
|
||||||
// host: _settingProvider.host,
|
|
||||||
// user: _userProvider.user,
|
|
||||||
// request: serviceRequest
|
|
||||||
// );
|
|
||||||
// Navigator.of(context).pop();
|
|
||||||
// ScaffoldMessenger.of(context).showSnackBar(
|
|
||||||
// SnackBar(
|
|
||||||
// content: Text(
|
|
||||||
// HttpStatusManger.getStatusMessage(status: status, subtitle: context.translation)
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
// ),
|
|
||||||
// ),
|
|
||||||
// )
|
|
||||||
],
|
|
||||||
).expanded,
|
|
||||||
AppFilledButton(label: context.translation.login, maxWidth: true, onPressed: () {}).paddingOnly(start: 16, end: 16, bottom: 24),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
// workOrders.isEmpty ?
|
|
||||||
FutureBuilder(
|
|
||||||
future: _serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
|
|
||||||
builder: (context, snap) {
|
|
||||||
workOrders = snap.data as List<SearchWorkOrder>;
|
|
||||||
if (snap.connectionState == ConnectionState.waiting) return Center(child: CircularProgressIndicator());
|
|
||||||
if (snap.connectionState == ConnectionState.done && (snap.data?.length ?? 0) != 0) {
|
|
||||||
return SingleChildScrollView(
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
ListView.separated(
|
|
||||||
shrinkWrap: true,
|
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
|
||||||
padding: EdgeInsets.all(21),
|
|
||||||
itemCount: workOrders.length,
|
|
||||||
separatorBuilder: (czt, index) => 21.height,
|
|
||||||
itemBuilder: (context, index) {
|
|
||||||
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
|
|
||||||
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
|
|
||||||
|
|
||||||
return ElevatedButton(
|
|
||||||
style: ElevatedButton.styleFrom(
|
|
||||||
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8),
|
|
||||||
primary: itemColor.withOpacity(.7),
|
|
||||||
shape: RoundedRectangleBorder(
|
|
||||||
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
//padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8),
|
|
||||||
onPressed: () {
|
|
||||||
// onPressed(request);
|
|
||||||
},
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.callId,
|
|
||||||
content: serviceRequest.requestCode,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.orderWorkNumber,
|
|
||||||
info: workOrders[index].workOrderNo.toString(),
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.visitDate,
|
|
||||||
info: workOrders[index].visitDate,
|
|
||||||
),
|
|
||||||
RequestInfoRow(title: context.translation.assignedEmployee, info: workOrders[index].assignedEmployee?.name ?? ""),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.assetSN,
|
|
||||||
info: workOrders[index].callRequest.asset.assetSerialNo,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.assetName,
|
|
||||||
info: workOrders[index].callRequest.asset.modelDefinition.assetName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.assetNumber,
|
|
||||||
info: workOrders[index].callRequest.asset.assetNumber,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.model,
|
|
||||||
info: workOrders[index].callRequest.asset.modelDefinition.modelName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: context.translation.site,
|
|
||||||
info: workOrders[index].callRequest.asset.site.custName,
|
|
||||||
),
|
|
||||||
RequestInfoRow(
|
|
||||||
title: "Call last Situation",
|
|
||||||
info: workOrders[index].currentSituation.name ?? '',
|
|
||||||
),
|
|
||||||
_userProvider.user.type == UsersTypes.engineer && workOrders[index].workOrderNo != null
|
|
||||||
? Padding(
|
|
||||||
padding: EdgeInsets.all(32),
|
|
||||||
child: AButton(
|
|
||||||
text: context.translation.editServiceReport,
|
|
||||||
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
|
||||||
? null
|
|
||||||
: () {
|
|
||||||
Navigator.of(context).push(
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (_) => FutureServiceReport(
|
|
||||||
request: serviceRequest,
|
|
||||||
workOrder: workOrders[index],
|
|
||||||
)),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: SizedBox.shrink(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
if (_userProvider.user.type == UsersTypes.engineer)
|
|
||||||
Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.all(32),
|
|
||||||
child: AButton(
|
|
||||||
text: "Create Work Order",
|
|
||||||
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
|
||||||
? null
|
|
||||||
: () {
|
|
||||||
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return Column(
|
|
||||||
children: [
|
|
||||||
Expanded(
|
|
||||||
child: Center(
|
|
||||||
child: ASubTitle(context.translation.dataNotFound),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
if (_userProvider.user.type == UsersTypes.engineer)
|
|
||||||
Center(
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.all(32),
|
|
||||||
child: AButton(
|
|
||||||
text: "Create Work Order",
|
|
||||||
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
|
||||||
? null
|
|
||||||
: () {
|
|
||||||
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return const SizedBox();
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,228 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:test_sa/controllers/localization/localization.dart';
|
||||||
|
import 'package:test_sa/controllers/providers/api/service_requests_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/enums/translation_keys.dart';
|
||||||
|
import 'package:test_sa/models/enums/user_types.dart';
|
||||||
|
import 'package:test_sa/models/service_request/service_request.dart';
|
||||||
|
import 'package:test_sa/models/subtitle.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/new_views/common_widgets/default_app_bar.dart';
|
||||||
|
import 'package:test_sa/views/app_style/colors.dart';
|
||||||
|
import 'package:test_sa/views/app_style/sizing.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/create_request.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/work_order/future_service_report.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/work_order/work_orders_list_page.dart';
|
||||||
|
import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
|
||||||
|
import 'package:test_sa/views/widgets/buttons/app_button.dart';
|
||||||
|
import 'package:test_sa/views/widgets/buttons/app_icon_button.dart';
|
||||||
|
import 'package:test_sa/views/widgets/images/files_list.dart';
|
||||||
|
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
|
||||||
|
import 'package:test_sa/views/widgets/requests/info_row.dart';
|
||||||
|
import 'package:test_sa/views/widgets/requests/request_status.dart';
|
||||||
|
import 'package:test_sa/views/widgets/sound/sound_player.dart';
|
||||||
|
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
|
||||||
|
import '../../../../models/service_request/search_work_order.dart';
|
||||||
|
|
||||||
|
class ServiceRequestDetailsPage extends StatelessWidget {
|
||||||
|
static const String id = "/call-details";
|
||||||
|
ServiceRequest serviceRequest;
|
||||||
|
|
||||||
|
ServiceRequestDetailsPage({Key key, this.serviceRequest}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
UserProvider _userProvider = Provider.of<UserProvider>(context);
|
||||||
|
ServiceRequestsProvider _serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
||||||
|
// _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id);
|
||||||
|
|
||||||
|
Widget informationCard() {
|
||||||
|
return Container(
|
||||||
|
decoration: ShapeDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(20),
|
||||||
|
),
|
||||||
|
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
StatusLabel(
|
||||||
|
label: serviceRequest.priority.name,
|
||||||
|
id: serviceRequest.priority.id,
|
||||||
|
textColor: AColors.getPriorityStatusTextColor(serviceRequest.priority.id),
|
||||||
|
backgroundColor: AColors.getPriorityStatusColor(serviceRequest.priority.id)),
|
||||||
|
8.width,
|
||||||
|
StatusLabel(
|
||||||
|
label: serviceRequest.statusLabel,
|
||||||
|
textColor: AColors.getRequestStatusTextColor(serviceRequest.statusValue),
|
||||||
|
backgroundColor: AColors.getRequestStatusColor(serviceRequest.statusValue)),
|
||||||
|
1.width.expanded,
|
||||||
|
Text(serviceRequest.date.toServiceRequestCardFormat, textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
8.height,
|
||||||
|
Text(serviceRequest.deviceEnName, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
|
||||||
|
Text(
|
||||||
|
'${context.translation.assetNumber}: ${serviceRequest.device.assetNumber}',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Request Type: ${serviceRequest.type.name}',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Request No: ${serviceRequest.requestCode}',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
8.height,
|
||||||
|
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
||||||
|
8.height,
|
||||||
|
Text(
|
||||||
|
'Manufacture: ${serviceRequest.device.modelDefinition.manufacturerName}',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Model: ${serviceRequest.device.modelDefinition.modelName}',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
8.height,
|
||||||
|
if ((serviceRequest.callComments ?? "").isNotEmpty) ...[
|
||||||
|
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
||||||
|
8.height,
|
||||||
|
Text(
|
||||||
|
serviceRequest.callComments,
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
if (serviceRequest.devicePhotos.isNotEmpty) ...[
|
||||||
|
8.height,
|
||||||
|
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
||||||
|
FilesList(images: serviceRequest.devicePhotos),
|
||||||
|
],
|
||||||
|
if (serviceRequest.audio?.isNotEmpty ?? false) ...[
|
||||||
|
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
||||||
|
16.height,
|
||||||
|
ASoundPlayer(audio: serviceRequest.audio),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
).paddingAll(16),
|
||||||
|
(_userProvider.user.type == UsersTypes.normal_user
|
||||||
|
? Container(
|
||||||
|
height: 50,
|
||||||
|
padding: const EdgeInsets.only(left: 16, right: 16),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
width: double.infinity,
|
||||||
|
decoration: const ShapeDecoration(
|
||||||
|
color: Color(0xFFEAF1F4),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.only(
|
||||||
|
bottomLeft: Radius.circular(20),
|
||||||
|
bottomRight: Radius.circular(20),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'Comment here...',
|
||||||
|
style: AppTextStyles.heading6.copyWith(
|
||||||
|
color: AppColor.neutral50.withOpacity(.6),
|
||||||
|
),
|
||||||
|
).expanded,
|
||||||
|
SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
|
||||||
|
16.height,
|
||||||
|
Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'View Comments',
|
||||||
|
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
|
||||||
|
),
|
||||||
|
4.width,
|
||||||
|
const Icon(
|
||||||
|
Icons.arrow_forward,
|
||||||
|
color: Color(0xFF4A8DB7),
|
||||||
|
size: 14,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
).paddingOnly(bottom: 16, start: 16, end: 16))
|
||||||
|
.onPress(() {
|
||||||
|
// todo 'sikander' add comment bottom sheet
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
appBar: DefaultAppBar(title: context.translation.serviceRequest),
|
||||||
|
backgroundColor: const Color(0xfff8f9fb),
|
||||||
|
body: SafeArea(
|
||||||
|
child: FutureBuilder(
|
||||||
|
future: _serviceRequestsProvider.getServiceRequestObjectById(requestId: serviceRequest.id),
|
||||||
|
builder: (context, snap) {
|
||||||
|
if (snap.connectionState == ConnectionState.waiting) {
|
||||||
|
return const ALoading();
|
||||||
|
} else if (snap.hasData) {
|
||||||
|
serviceRequest = snap.data;
|
||||||
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SingleChildScrollView(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
child: informationCard(),
|
||||||
|
).expanded,
|
||||||
|
if (_userProvider.user.type != UsersTypes.engineer || (serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3))
|
||||||
|
(serviceRequest.firstAction == null
|
||||||
|
? AppFilledButton(
|
||||||
|
label: context.translation.firstAction,
|
||||||
|
maxWidth: true,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(builder: (_) => CreateRequestPage(serviceRequest: serviceRequest)),
|
||||||
|
);
|
||||||
|
})
|
||||||
|
: AppFilledButton(
|
||||||
|
label: context.translation.viewWorkOrder,
|
||||||
|
maxWidth: true,
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).pushNamed(WorkOrderListPage.id, arguments: serviceRequest);
|
||||||
|
}))
|
||||||
|
.paddingOnly(start: 16, end: 16, bottom: 24),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const SizedBox();
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,179 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
|
||||||
|
import 'package:test_sa/controllers/providers/api/user_provider.dart';
|
||||||
|
import 'package:test_sa/extensions/context_extension.dart';
|
||||||
|
import 'package:test_sa/extensions/int_extensions.dart';
|
||||||
|
import 'package:test_sa/models/enums/user_types.dart';
|
||||||
|
import 'package:test_sa/models/service_request/search_work_order.dart';
|
||||||
|
import 'package:test_sa/models/service_request/service_request.dart';
|
||||||
|
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
|
||||||
|
import 'package:test_sa/views/app_style/sizing.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/work_order/create_service_report.dart';
|
||||||
|
import 'package:test_sa/views/pages/user/requests/work_order/future_service_report.dart';
|
||||||
|
import 'package:test_sa/views/widgets/buttons/app_button.dart';
|
||||||
|
import 'package:test_sa/views/widgets/requests/info_row.dart';
|
||||||
|
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
|
||||||
|
|
||||||
|
class WorkOrderListPage extends StatelessWidget {
|
||||||
|
static const String id = "/work-order-list";
|
||||||
|
ServiceRequest serviceRequest;
|
||||||
|
|
||||||
|
WorkOrderListPage({Key key, this.serviceRequest}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
// UserProvider _userProvider = Provider.of<UserProvider>(context);
|
||||||
|
// SettingProvider _settingProvider = Provider.of<SettingProvider>(context);
|
||||||
|
List<SearchWorkOrder> workOrders = [];
|
||||||
|
ServiceRequestsProvider serviceRequestsProvider;
|
||||||
|
UserProvider _userProvider = Provider.of<UserProvider>(context);
|
||||||
|
if (serviceRequestsProvider == null) {
|
||||||
|
serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
||||||
|
serviceRequest = ModalRoute.of(context).settings.arguments;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
appBar: DefaultAppBar(title: context.translation.workOrder),
|
||||||
|
backgroundColor: const Color(0xfff8f9fb),
|
||||||
|
body: SafeArea(
|
||||||
|
child: FutureBuilder(
|
||||||
|
future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
|
||||||
|
builder: (context, snap) {
|
||||||
|
workOrders = snap.data as List<SearchWorkOrder>;
|
||||||
|
if (snap.connectionState == ConnectionState.waiting) return Center(child: CircularProgressIndicator());
|
||||||
|
if (snap.connectionState == ConnectionState.done && (snap.data?.length ?? 0) != 0) {
|
||||||
|
return SingleChildScrollView(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
ListView.separated(
|
||||||
|
shrinkWrap: true,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
padding: EdgeInsets.all(21),
|
||||||
|
itemCount: workOrders.length,
|
||||||
|
separatorBuilder: (czt, index) => 21.height,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
|
||||||
|
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
|
||||||
|
|
||||||
|
return ElevatedButton(
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8),
|
||||||
|
primary: itemColor.withOpacity(.7),
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
//padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8),
|
||||||
|
onPressed: () {
|
||||||
|
// onPressed(request);
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.callId,
|
||||||
|
content: serviceRequest.requestCode,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.orderWorkNumber,
|
||||||
|
info: workOrders[index].workOrderNo.toString(),
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.visitDate,
|
||||||
|
info: workOrders[index].visitDate,
|
||||||
|
),
|
||||||
|
RequestInfoRow(title: context.translation.assignedEmployee, info: workOrders[index].assignedEmployee?.name ?? ""),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.assetSN,
|
||||||
|
info: workOrders[index].callRequest.asset.assetSerialNo,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.assetName,
|
||||||
|
info: workOrders[index].callRequest.asset.modelDefinition.assetName,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.assetNumber,
|
||||||
|
info: workOrders[index].callRequest.asset.assetNumber,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.model,
|
||||||
|
info: workOrders[index].callRequest.asset.modelDefinition.modelName,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: context.translation.site,
|
||||||
|
info: workOrders[index].callRequest.asset.site.custName,
|
||||||
|
),
|
||||||
|
RequestInfoRow(
|
||||||
|
title: "Call last Situation",
|
||||||
|
info: workOrders[index].currentSituation.name ?? '',
|
||||||
|
),
|
||||||
|
_userProvider.user.type == UsersTypes.engineer && workOrders[index].workOrderNo != null
|
||||||
|
? Padding(
|
||||||
|
padding: EdgeInsets.all(32),
|
||||||
|
child: AButton(
|
||||||
|
text: context.translation.editServiceReport,
|
||||||
|
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (_) => FutureServiceReport(
|
||||||
|
request: serviceRequest,
|
||||||
|
workOrder: workOrders[index],
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: SizedBox.shrink(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
if (_userProvider.user.type == UsersTypes.engineer)
|
||||||
|
Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(32),
|
||||||
|
child: AButton(
|
||||||
|
text: "Create Work Order",
|
||||||
|
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
|
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Center(
|
||||||
|
child: ASubTitle(context.translation.dataNotFound),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (_userProvider.user.type == UsersTypes.engineer)
|
||||||
|
Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(32),
|
||||||
|
child: AButton(
|
||||||
|
text: "Create Work Order",
|
||||||
|
onPressed: serviceRequest.statusValue == 5 || serviceRequest.statusValue == 3
|
||||||
|
? null
|
||||||
|
: () {
|
||||||
|
Navigator.of(context).push(MaterialPageRoute(builder: (_) => CreateServiceReport(request: serviceRequest)));
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue