Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

design_3.0_internal_audit_module
nextwo 2 years ago
commit df147f3ef1

@ -128,6 +128,7 @@
"unite": "Unit",
"uniteRequired": "Unit Required",
"visitDate": "Visit Date",
"returnToService": "Return to service",
"whatsApp": "WhatsApp",
"workPerformed": "Work Performed",
"actualDate": "Actual Date",

@ -1,3 +1,5 @@
import 'dart:typed_data';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/service_report.dart';
import 'package:test_sa/models/service_request/spare_parts.dart';
@ -189,7 +191,9 @@ class SearchWorkOrder {
Lookup equipmentStatus;
List<SuppEngineerWorkOrders> suppEngineerWorkOrders;
String engSignature;
Uint8List localEngSignature;
String nurseSignature;
Uint8List localNurseSignature;
WoParent woParentDto;
TimerModel timer;
String mrNumber;

@ -57,7 +57,7 @@ class AppDrawer extends StatelessWidget {
],
),
8.height,
userProvider.user.username.heading3(context).custom(fontWeight: FontWeight.w600),
(userProvider.user?.username ?? "").heading3(context).custom(fontWeight: FontWeight.w600),
if ((userProvider.user?.email ?? "").isNotEmpty) (userProvider.user?.email).heading6(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
18.height,
1.divider,
@ -75,15 +75,15 @@ class AppDrawer extends StatelessWidget {
children: [
drawerItem("drawer_notification", context.translation.notifications, context).onPress(() => Navigator.of(context).pushNamed(NotificationsPage.id)),
18.height,
drawerItem("help_center", context.translation.helpCenter, context) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
18.height,
drawerItem("rate_us", context.translation.rateUs, context),
18.height,
// drawerItem("help_center", context.translation.helpCenter, context) /*.onPress(() => Navigator.of(context).pushNamed(HelpCenterPage.id))*/,
// 18.height,
// drawerItem("rate_us", context.translation.rateUs, context),
// 18.height,
drawerItem("setting", context.translation.settings, context).onPress(() => Navigator.of(context).pushNamed(SettingsPage.id)),
18.height,
drawerItem("report", context.translation.reportBg, context) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
18.height,
drawerItem("whats_new", context.translation.whatsNew, context),
// 18.height,
// drawerItem("report", context.translation.reportBg, context) /*.onPress(() => Navigator.of(context).pushNamed(ReportBugPage.id))*/,
// 18.height,
// drawerItem("whats_new", context.translation.whatsNew, context),
],
).expanded,
drawerItem("logout", context.translation.logout, context, color: AppColor.red50).onPress(() async {
@ -91,7 +91,7 @@ class AppDrawer extends StatelessWidget {
context: context,
builder: (_) => AAlertDialog(title: context.translation.signOut, content: context.translation.logoutAlert),
);
if (result) {
if (result ?? false) {
settingProvider.resetSettings();
userProvider.reset();
Navigator.of(context).pop();

@ -106,7 +106,7 @@ class _DashboardPageState extends State<DashboardPage> {
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
Text(
user.username ?? "Eng Mahmoud",
user?.username ?? "",
style: AppTextStyles.heading2.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50, fontWeight: FontWeight.w600),
),
24.height,

@ -64,53 +64,52 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
onRefresh: () async {},
child: Column(
children: [
_buildDetailsCard(
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
context.translation.transferDetails.heading5(context),
8.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName ??""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber??""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName??""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo??""}'),
],
),
8.height,
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
/// TBD
// Row(
// children: [
// /// TBD
// // StatusLabel(
// // label: "",
// // id: 0,
// // textColor: AColors.getPriorityStatusTextColor(0),
// // backgroundColor: AColors.getPriorityStatusColor(0)),
// 8.width,
//
// /// TBD
// //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
// ],
// ),
1.width,
Text(_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
],
),
],
).paddingAll(14),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
context.translation.transferDetails.heading5(context),
8.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.assetName} : ${_model?.assetName ?? ""}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model?.assetNumber ?? ""}'),
_buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'),
_buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'),
],
),
8.height,
],
).expanded,
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
/// TBD
// Row(
// children: [
// /// TBD
// // StatusLabel(
// // label: "",
// // id: 0,
// // textColor: AColors.getPriorityStatusTextColor(0),
// // backgroundColor: AColors.getPriorityStatusColor(0)),
// 8.width,
//
// /// TBD
// //StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
// ],
// ),
1.width,
Text(_model?.createdOn != null ? _model.createdOn.toServiceRequestCardFormat : "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral10 : Color(0xFF3B3D4A))),
],
),
],
).toShadowContainer(context),
8.height,
// sender card
_buildCard(
isSender: true,
@ -129,6 +128,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName)))
: null,
),
8.height,
// receiver card
_buildCard(
isSender: false,
@ -148,7 +148,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
: null,
),
],
),
).paddingAll(16),
),
);
}
@ -182,42 +182,39 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
],
),
if ((_userProvider.user?.type == UsersTypes.engineer))
if(isSender ? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed")
: (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed"))
CircleAvatar(
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
if (isSender
? (_model?.senderMachineStatusName?.toLowerCase() != "closed" && _model?.senderMachineStatusName?.toLowerCase() != "completed")
: (_model?.receiverMachineStatusName?.toLowerCase() != "closed" && _model?.receiverMachineStatusName?.toLowerCase() != "completed"))
CircleAvatar(
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
),
),
).onPress(isSender
? () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
}
: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
}),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.unite} : $unit'),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
_buildTextWidget(comment),
).onPress(isSender
? () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
}
: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)));
}),
],
),
8.height,
_buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.unite} : $unit'),
if (comment != null && comment.isNotEmpty) ...[
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
_buildTextWidget(comment),
]
],
).toShadowContainer(context).paddingOnly(top: 14, start: 14, end: 14);
).toShadowContainer(context);
}
int getIdstatus(String status) {

@ -174,7 +174,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
),
8.height,
ESignature(
title: "Signature",
oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature,
newSignature: _signature,
@ -184,8 +183,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
widget.isSender
? _formModel.senderEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}"
: _formModel.receiverEngSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
base64Encode(signature);
},
),
],

@ -25,6 +25,7 @@ import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import '../../../attachment.dart';
import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import '../../../models/service_request/spare_parts.dart';
import '../../../models/service_request/supp_engineer_work_orders.dart';
import '../../../models/service_request/supplier_details.dart';
@ -35,6 +36,7 @@ import '../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../providers/loading_list_notifier.dart';
import '../../../providers/work_order/reason_provider.dart';
import '../../widgets/date_and_time/date_picker.dart';
import '../../widgets/e_signature/e_signature.dart';
import '../../widgets/status/report/service_report_assistant_employee_menu.dart';
import '../../widgets/status/report/service_report_last_call.dart';
import '../../widgets/timer/app_timer.dart';
@ -57,6 +59,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
bool _isLoading = false;
bool _showVendorFields = false;
SuppEngineerWorkOrders engineer;
SupplierDetails initialSupplier;
@override
void initState() {
@ -79,6 +82,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
CallRequest _callRequestForWorkOrder;
Future getAssetType() async {
Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset();
final serviceRequestProvider = Provider.of<ServiceRequestsProvider>(context);
Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false).reset();
assetTypesProvider = Provider.of<ServiceStatusProvider>(context, listen: false);
@ -88,6 +92,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
_subWorkOrders.copyDetails(subWoDetails);
_serviceReport.equipmentStatus = subWoDetails.equipmentStatus;
_serviceReport.reason = subWoDetails.reason;
initialSupplier = subWoDetails.supplier;
// _serviceReport.faultDescription = subWoDetails.faultDescription;
}
await assetTypesProvider.getTypes();
@ -140,7 +145,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
// WorkOrderDetails(item: widget.workOrder, assetType: _subWorkOrders?.assetType),
8.height,
ADatePicker(
label: context.translation.visitDate,
label: context.translation.returnToService,
date: DateTime.tryParse(_subWorkOrders.visitDate ?? ""),
onDatePicker: (date) {
_subWorkOrders.visitDate = date?.toIso8601String();
@ -179,12 +184,14 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
ServiceReportLastCallsMenu(
report: _serviceReport,
title: context.translation.callLastSituation,
parentId: widget.workOrder?.callRequest?.id?.toString(),
parentId: widget.workOrder?.id?.toString(),
onSelect: (status) {
_serviceReport.calllastSituation = status;
if (checkVendorFieldsVisibility(status)) {
_subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id);
engineer = null;
} else {
_subWorkOrders.supplier = initialSupplier;
}
if (status?.value == 12 || _subWorkOrders.calllastSituation?.value == 12) {
_subWorkOrders.calllastSituation = status;
@ -195,6 +202,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
setState(() {});
},
),
if (_subWorkOrders.calllastSituation?.value == 12) const SizedBox(height: 8),
if (_subWorkOrders.calllastSituation?.value == 12)
AppTextFormField(
labelText: context.translation.mrNumber,
@ -272,6 +280,20 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
),
8.height,
MultiFilesPicker(label: context.translation.attachImage, files: _files),
8.height,
ESignature(
title: context.translation.engSign,
oldSignature: _subWorkOrders.engSignature,
newSignature: _subWorkOrders.localEngSignature,
onSaved: (signature) {
// if (signature == null || signature.isEmpty) {
// setState(() {});
// return;
// }
_subWorkOrders.localEngSignature = signature;
_subWorkOrders.engSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
},
),
],
),
),

@ -189,6 +189,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
@ -204,8 +205,8 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
'${context.translation.quantity}: ${widget.gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context),
'${context.translation.site}: ${widget.gasRefillModel.site.name}'.bodyText(context),
],
).paddingAll(16),
12.height,
).toShadowContainer(context),
8.height,
AppTimer(
label: context.translation.workingHours,
timer: _formModel.timer,
@ -215,7 +216,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
return true;
},
),
12.height,
8.height,
SingleItemDropDownMenu<Lookup, GasStatusProvider>(
context: context,
title: context.translation.reportStatus,
@ -224,7 +225,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
_formModel.status = value;
},
),
12.height,
8.height,
AppTextFormField(
labelText: context.translation.deliveredQuantity,
onSaved: (value) {
@ -234,7 +235,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
controller: _deliveredQuantityController,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
),
12.height,
8.height,
/// TBD
AppTextFormField(
@ -269,7 +270,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
},
),
],
).toShadowContainer(context).paddingAll(16),
),
).expanded,
AppFilledButton(
label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update,

@ -23,6 +23,7 @@ import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart';
import 'package:test_sa/views/widgets/status/report/service_report_last_call.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 '../../../../../models/service_request/spare_parts.dart';
@ -69,6 +70,9 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
sparePartsWorkOrders: [],
);
super.initState();
if (context.mounted) {
Provider.of<ServiceReportLastCallsProvider>(context, listen: false).reset();
}
// _isLoading = true;
}
@ -135,7 +139,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
),
8.height,
ADatePicker(
label: context.translation.visitDate,
label: context.translation.returnToService,
date: DateTime.tryParse(_serviceReport.visitDate ?? ""),
onDatePicker: (date) {
_serviceReport.visitDate = date?.toIso8601String();

@ -124,7 +124,7 @@ class _EditServiceReportState extends State<EditServiceReport> with TickerProvid
),
8.height,
ADatePicker(
label: context.translation.visitDate,
label: context.translation.returnToService,
date: DateTime.tryParse(_serviceReport.visitDate ?? ""),
onDatePicker: (date) {
_serviceReport.visitDate = date?.toIso8601String();

@ -16,6 +16,7 @@ import 'package:test_sa/new_views/common_widgets/default_app_bar.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/update_service_report.dart';
import 'package:test_sa/views/pages/user/requests/work_order/work_order_details_page.dart';
import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
class WorkOrderListPage extends StatelessWidget {
@ -43,93 +44,92 @@ class WorkOrderListPage extends StatelessWidget {
child: FutureBuilder(
future: serviceRequestsProvider.searchWorkOrders(callId: serviceRequest.requestCode),
builder: (context, snap) {
workOrders = snap.data as List<SearchWorkOrder>;
if (snap.connectionState == ConnectionState.waiting) return const Center(child: CircularProgressIndicator());
workOrders = snap.data as List<SearchWorkOrder>;
return Column(
children: [
ListView.separated(
padding: const EdgeInsets.all(16),
itemCount: workOrders?.length ?? 0,
separatorBuilder: (czt, index) => 8.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;
(workOrders.isEmpty)
? NoItemFound(message: context.translation.noDataFound).expanded
: ListView.separated(
padding: const EdgeInsets.all(16),
itemCount: workOrders.length,
separatorBuilder: (czt, index) => 8.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 Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
],
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],
),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
],
).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
],
),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
],
).onPress(() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
);
}),
],
).onPress(() {
// onPressed(request);
}),
],
).toShadowContainer(context);
},
).expanded,
return Column(
children: [
Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
StatusLabel(label: workOrders[index].currentSituation.name, textColor: AppColor.orange60, backgroundColor: AppColor.orange40),
8.height,
Text(serviceRequest.requestCode, style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
],
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3)
context.translation.edit.toSvgAsset(height: 48, width: 48).onPress(() {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => UpdateServiceReport(request: serviceRequest, workOrder: workOrders[index])),
);
})
],
),
8.height,
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${context.translation.assetName}: ${workOrders[index].callRequest.asset.modelDefinition.assetName}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
Text(
'${context.translation.status}: ${workOrders[index].currentSituation.name}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : const Color(0xFF757575)),
),
],
).expanded,
Text(workOrders[index].visitDate?.toServiceRequestCardFormat ?? "",
textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: context.isDark ? AppColor.neutral30 : const Color(0xFF3B3D4A))),
],
),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewDetails,
style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
),
4.width,
const Icon(Icons.arrow_forward, color: Color(0xFF4A8DB7), size: 14)
],
),
],
).onPress(() {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => WorkOrderDetailsPage(workOrder: workOrders[index], serviceRequest: serviceRequest)),
);
}),
],
).toShadowContainer(context);
},
).expanded,
if (_userProvider.user.type == UsersTypes.engineer && (serviceRequest.statusValue != 5 && serviceRequest.statusValue != 3))
AppFilledButton(
label: context.translation.createWorkOrder,

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:signature/signature.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
@ -15,6 +16,7 @@ class ESignature extends StatefulWidget {
final Function(Uint8List) onSaved;
final Function(Uint8List) onChange;
final String title;
const ESignature({Key key, this.title, this.oldSignature, this.onSaved, this.onChange, this.newSignature}) : super(key: key);
@override
@ -50,6 +52,7 @@ class _ESignatureState extends State<ESignature> {
@override
Widget build(BuildContext context) {
print(widget.oldSignature);
return FormField<String>(onSaved: (_) async {
widget.onSaved(signature);
}, builder: (FormFieldState<String> state) {
@ -59,7 +62,7 @@ class _ESignatureState extends State<ESignature> {
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
decoration: BoxDecoration(
color: context.isDark?Theme.of(context).cardColor:Colors.white,
color: context.isDark ? Theme.of(context).cardColor : Colors.white,
borderRadius: _editable ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)) : BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),
@ -98,7 +101,7 @@ class _ESignatureState extends State<ESignature> {
height: 135.toScreenHeight,
width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.only(bottom: 8),
child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: widget.oldSignature),
child: signature != null ? Image.memory(signature) : ImageLoader(boxFit: BoxFit.contain, url: URLs.getFileUrl(widget.oldSignature)),
)
: AbsorbPointer(
absorbing: !_editable,

@ -108,7 +108,7 @@ class _AppTimerState extends State<AppTimer> {
height: 56.toScreenHeight,
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth),
decoration: BoxDecoration(
color: context.isDark?AppColor.neutral50:Theme.of(context).cardColor,
color: context.isDark ? AppColor.neutral50 : Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(10),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
),
@ -125,7 +125,7 @@ class _AppTimerState extends State<AppTimer> {
mainAxisAlignment: MainAxisAlignment.center,
children: [
(widget.label ?? "Timer").tinyFont(context),
value.bodyText(context).custom(color: AppColor.neutral50),
value.bodyText(context).custom(color: widget.enabled ? AppColor.neutral50 : AppColor.neutral20),
],
);
},

Loading…
Cancel
Save