code improvements.

design_3.0_latest
Sikander Saleem 1 year ago
parent 1f30aec2ff
commit 01e0d054e6

@ -141,6 +141,8 @@ class AppColor {
return green70.withOpacity(.5);
case "fixed":
return green70.withOpacity(.5);
case "reject":
return red30;
default:
return Colors.white;
}
@ -209,7 +211,7 @@ class AppColor {
switch (id) {
//low priority
case 81:
return Colors.white;
return green15;
case 370:
return green15;
case 82:

@ -11,8 +11,7 @@ class LoanAvailabilityProvider extends LoadingListNotifier<Lookup> {
@override
Future getDate() async {
if (loading == true) return -2;
loading = true;
notifyListeners();
loading = true;
notifyListeners();
try {

@ -16,8 +16,6 @@ class ReasonProvider extends LoadingListNotifier<Lookup> {
if (loading == true) return -2;
loading = true;
notifyListeners();
loading = true;
notifyListeners();
try {
Response response = await ApiManager.instance.get(URLs.getServiceReportReasonsNew+"&serviceRequestId=$serviceRequestId");
stateCode = response.statusCode;

@ -65,9 +65,9 @@ class FooterActionButton {
onPressed: () async {
//TODO need to discuss getData is not called by default...
if (context.mounted) {
RejectReasonProvider rejectionReasonProvider = Provider.of<RejectReasonProvider>(context, listen: false);
rejectionReasonProvider.reset();
rejectionReasonProvider.getDate();
RejectReasonProvider rejectionReasonProvider = Provider.of<RejectReasonProvider>(context, listen: false);
rejectionReasonProvider.reset();
//rejectionReasonProvider.getDate();
}
ServiceRequestBottomSheet.rejectRequestBottomSheet(context: context);
},

@ -468,7 +468,7 @@ class ServiceRequestBottomSheet {
SingleItemDropDownMenu<Lookup, RejectReasonProvider>(
context: context,
title: context.translation.reason,
backgroundColor: AppColor.neutral100,
backgroundColor: AppColor.neutral100,showShadow: false,
initialValue: requestDetailProvider.engineerRejectHelperModel?.rejectionReason,
onSelect: (value) {
if (value != null) {
@ -482,7 +482,7 @@ class ServiceRequestBottomSheet {
backgroundColor: AppColor.neutral100,
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
alignLabelWithHint: true,showShadow: false,
labelStyle: AppTextStyles.textFieldLabelStyle,
onChange: (text) {
requestDetailProvider.engineerRejectHelperModel?.feedback = text;

@ -16,18 +16,6 @@ class HistoryLogView extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<HistoryLogModel> dummyList = [
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: 'Status update to In Progress'),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: 'Status updated to Closed'),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
HistoryLogModel(message: 'Requester acknowledged adc dld a', date: DateTime.now(), status: null),
];
return Consumer<RequestDetailProvider>(builder: (context, requestProvider, _) {
String status = "";
return requestProvider.isLoading
@ -119,6 +107,8 @@ class HistoryLogView extends StatelessWidget {
return "Status update to Completed".addTranslation;
} else if (status == "fixed") {
return "Status update to Fixed".addTranslation;
} else if (status == "reject") {
return "Status update to Rejected".addTranslation;
} else
return status;
}

@ -209,62 +209,62 @@ class WorkOrderDetailView extends StatelessWidget {
],
],
).paddingOnly(start: 16, end: 16, top: 16, bottom: 8),
(userProvider.user!.type == UsersTypes.normal_user
? Container(
height: 50,
padding: const EdgeInsets.only(left: 16, right: 16),
alignment: Alignment.center,
width: double.infinity,
decoration: ShapeDecoration(
color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(20),
bottomRight: Radius.circular(20),
),
),
),
child: Row(
children: [
Text(
'${context.translation.commentHere}...',
style: AppTextStyles.heading6.copyWith(
color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6),
),
).expanded,
"comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70),
],
),
)
: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider().defaultStyle(context),
16.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
context.translation.viewComments,
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
),
4.width,
Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
],
),
],
).paddingOnly(bottom: 16, start: 16, end: 16))
.onPress(() {
// showModalBottomSheet(
// context: context,
// useSafeArea: true,
// isScrollControlled: true,
// useRootNavigator: true,
// backgroundColor: Colors.transparent,
// builder: (context) => CommentsBottomSheet(requestId: serviceRequest.id!),
// );
}),
// (userProvider.user!.type == UsersTypes.normal_user
// ? Container(
// height: 50,
// padding: const EdgeInsets.only(left: 16, right: 16),
// alignment: Alignment.center,
// width: double.infinity,
// decoration: ShapeDecoration(
// color: context.isDark ? AppColor.neutral50 : AppColor.neutral30,
// shape: const RoundedRectangleBorder(
// borderRadius: BorderRadius.only(
// bottomLeft: Radius.circular(20),
// bottomRight: Radius.circular(20),
// ),
// ),
// ),
// child: Row(
// children: [
// Text(
// '${context.translation.commentHere}...',
// style: AppTextStyles.heading6.copyWith(
// color: (context.isDark ? AppColor.neutral30 : AppColor.neutral50).withOpacity(.6),
// ),
// ).expanded,
// "comment_send".toSvgAsset(width: 24, color: context.isDark ? AppColor.primary50 : AppColor.primary70),
// ],
// ),
// )
// : Column(
// mainAxisSize: MainAxisSize.min,
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// const Divider().defaultStyle(context),
// 16.height,
// Row(
// mainAxisSize: MainAxisSize.min,
// children: [
// Text(
// context.translation.viewComments,
// style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context)),
// ),
// 4.width,
// Icon(Icons.arrow_forward, color: AppColor.blueStatus(context), size: 14)
// ],
// ),
// ],
// ).paddingOnly(bottom: 16, start: 16, end: 16))
// .onPress(() {
// // showModalBottomSheet(
// // context: context,
// // useSafeArea: true,
// // isScrollControlled: true,
// // useRootNavigator: true,
// // backgroundColor: Colors.transparent,
// // builder: (context) => CommentsBottomSheet(requestId: serviceRequest.id!),
// // );
// }),
//set condition for show asset detail button...
if (workOrder.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.verifyAssetDetail ||
workOrder.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.activity && userProvider.user?.type == UsersTypes.engineer) ...[

@ -23,7 +23,6 @@ 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/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/equipment/pick_asset.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../../../../models/lookup.dart';
import '../../../../../../new_views/common_widgets/default_app_bar.dart';
@ -53,185 +52,177 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
@override
void initState() {
super.initState();
scheduleMicrotask(() async {
await getInitialData();
});
// WidgetsBinding.instance.addPostFrameCallback((_) {
// });
}
Future<void> getInitialData() async {
//TODO ask skinder how to called getdata methods automatically...
_isLoading = true;
_requestDetailProvider = Provider.of<RequestDetailProvider>(context, listen: false);
_reasonProvider = Provider.of<ReasonProvider>(context, listen: false);
_faultDescriptionProvider = Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false);
_loanAvailabilityProvider = Provider.of<LoanAvailabilityProvider>(context, listen: false);
_equipmentStatusProvider = Provider.of<EquipmentStatusProvider>(context, listen: false);
_reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString();
_faults = await Provider.of<FaultDescriptionProvider>(context, listen: false).getFaultDescriptionList(assetId: _requestDetailProvider?.currentWorkOrder?.data?.asset?.id);
_reasonProvider?.getDate();
_equipmentStatusProvider?.getDate();
_loanAvailabilityProvider?.getDate();
Provider.of<FaultDescriptionProvider>(context, listen: false).getFaultDescriptionList(assetId: _requestDetailProvider?.currentWorkOrder?.data?.asset?.id).then((List<FaultDescription>? data) {
if (data?.isNotEmpty ?? false) {
_faults = data!;
setState(() {});
}
});
//TODO no need to create seprate models just write a method in workorder model...
WorkOrderData currentWorkOrderData = _requestDetailProvider!.currentWorkOrder!.data!;
_requestDetailProvider?.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
workOrderId: currentWorkOrderData.requestId,
equipmentStatus: currentWorkOrderData.equipmentStatus,
loanAvailability: currentWorkOrderData.loanAvailablity,
failureReason: currentWorkOrderData.failureReasone,
// faultDescription: currentWorkOrderData.problemDescription,
solution: currentWorkOrderData.solution?.name,
returnToService: currentWorkOrderData.returnToService,
serviceType: currentWorkOrderData.serviceType,
);
_requestDetailProvider?.updateEngineerUpdateWorkOrderHelperModel(_requestDetailProvider?.engineerUpdateWorkOrderHelperModel);
_isLoading = false;
}
@override
Widget build(BuildContext context) {
if (_requestDetailProvider == null) {
_requestDetailProvider = Provider.of<RequestDetailProvider>(context, listen: false);
_reasonProvider = Provider.of<ReasonProvider>(context, listen: false);
_reasonProvider!.reset();
_loanAvailabilityProvider = Provider.of<LoanAvailabilityProvider>(context, listen: false);
_loanAvailabilityProvider!.reset();
_faultDescriptionProvider = Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false);
_equipmentStatusProvider = Provider.of<EquipmentStatusProvider>(context, listen: false);
_equipmentStatusProvider!.reset();
_equipmentStatusProvider!.getDate();
_reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString();
WorkOrderData currentWorkOrderData = _requestDetailProvider!.currentWorkOrder!.data!;
_requestDetailProvider?.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
workOrderId: currentWorkOrderData.requestId,
equipmentStatus: currentWorkOrderData.equipmentStatus,
loanAvailability: currentWorkOrderData.loanAvailablity,
failureReason: currentWorkOrderData.failureReasone,
// faultDescription: currentWorkOrderData.problemDescription,
solution: currentWorkOrderData.solution?.name,
returnToService: currentWorkOrderData.returnToService,
serviceType: currentWorkOrderData.serviceType,
);
_requestDetailProvider?.updateEngineerUpdateWorkOrderHelperModel(_requestDetailProvider?.engineerUpdateWorkOrderHelperModel);
getInitialData();
}
return Scaffold(
key: _scaffoldKey,
appBar: DefaultAppBar(title: context.translation.verify_asset_details),
body: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) {
return SafeArea(
child: LoadingManager(
isLoading: _isLoading,
isFailedLoading: false,
stateCode: 200,
onRefresh: () async {},
child: Form(
key: _formKey,
child: Column(
children: [
SingleChildScrollView(
child: Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
equipmentStatusWidget(context: context, workOrderData: requestDetailProvider.engineerUpdateWorkOrderHelperModel!),
24.height,
ADatePicker(
label: context.translation.returnToService,
hideShadow: true,
backgroundColor: AppColor.neutral100,
date: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService ?? ""),
formatDateWithTime: true,
onDatePicker: (selectedDate) {
showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
).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,
);
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService != null &&
selectedDateTime.isBefore(DateTime.parse(requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService!))) {
"Visit Date time must be greater then previous date".showToast;
return;
}
setState(() {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService = selectedDateTime.toIso8601String();
});
}
});
},
),
12.height,
SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
context: context,
title: context.translation.loanAvailability,
backgroundColor: AppColor.neutral100,
height: 56.toScreenHeight,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability,
onSelect: (status) {
if (status != null) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability = status;
if (status.value != 1) {
loanAvailabilityAsset = null;
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAssetId = null;
}
}
setState(() {});
},
),
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.value == 1) 8.height,
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.value == 1)
PickAsset(
device: loanAvailabilityAsset, // ?? _serviceReport.device,
cardColor: AppColor.neutral100,
onPickAsset: (asset) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAssetId = asset.id;
setState(() {
loanAvailabilityAsset = asset;
});
},
),
12.height,
SingleItemDropDownMenu<Lookup, ReasonProvider>(
context: context,
title: context.translation.failureReason,
backgroundColor: AppColor.neutral100,
height: 56.toScreenHeight,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason,
onSelect: (value) {
if (value != null) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason = value;
}
},
),
12.height,
SingleItemDropDownMenu<FaultDescription, NullableLoadingProvider>(
context: context,
title: context.translation.faultDescription,
backgroundColor: AppColor.neutral100,
staticData: _faults,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription,
onSelect: (fault) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription = fault;
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution = fault?.workPerformed;
if (mounted) {
requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel);
}
},
),
12.height,
context.translation.solutions.heading6(context).custom(color: AppColor.neutral50),
8.height,
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution != null
? requestDetailProvider.engineerUpdateWorkOrderHelperModel!.solution!.bodyText2(context).custom(color: AppColor.neutral120)
: const SizedBox(),
],
).paddingOnly(start: 13, end: 13, top: 16, bottom: 16),
).paddingOnly(top: 17, start: 14, end: 14),
).expanded,
Container(
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight),
color: AppColor.white10,
child: AppFilledButton(
label: context.translation.verify_asset_details,
buttonColor: AppColor.primary10,
onPressed: () async {
await requestDetailProvider.engineerUpdateWorkOrder();
Navigator.pop(context);
},
),
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
equipmentStatusWidget(context: context, workOrderData: requestDetailProvider.engineerUpdateWorkOrderHelperModel!),
12.height,
ADatePicker(
label: context.translation.returnToService,
hideShadow: true,
backgroundColor: AppColor.neutral100,
date: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService ?? ""),
formatDateWithTime: true,
onDatePicker: (selectedDate) {
showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
).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,
);
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService != null &&
selectedDateTime.isBefore(DateTime.parse(requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService!))) {
"Visit Date time must be greater then previous date".showToast;
return;
}
setState(() {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService = selectedDateTime.toIso8601String();
});
}
});
},
),
12.height,
SingleItemDropDownMenu<Lookup, LoanAvailabilityProvider>(
context: context,
title: context.translation.loanAvailability,
backgroundColor: AppColor.neutral100,
height: 56.toScreenHeight,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability,
onSelect: (status) {
if (status != null) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability = status;
if (status.value != 1) {
loanAvailabilityAsset = null;
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAssetId = null;
}
}
// setState(() {});
},
),
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.value == 1) 8.height,
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.value == 1)
PickAsset(
device: loanAvailabilityAsset, // ?? _serviceReport.device,
cardColor: AppColor.neutral100,
onPickAsset: (asset) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAssetId = asset.id;
//setState(() {
loanAvailabilityAsset = asset;
// });
},
),
],
12.height,
SingleItemDropDownMenu<Lookup, ReasonProvider>(
context: context,
title: context.translation.failureReason,
backgroundColor: AppColor.neutral100,
height: 56.toScreenHeight,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason,
onSelect: (value) {
if (value != null) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason = value;
}
},
),
12.height,
SingleItemDropDownMenu<FaultDescription, NullableLoadingProvider>(
context: context,
title: context.translation.faultDescription,
backgroundColor: AppColor.neutral100,
staticData: _faults,
showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription,
onSelect: (fault) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription = fault;
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution = fault?.workPerformed;
if (mounted) {
requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel);
}
},
),
12.height,
context.translation.solutions.heading6(context).custom(color: AppColor.neutral50),
8.height,
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution != null
? requestDetailProvider.engineerUpdateWorkOrderHelperModel!.solution!.bodyText2(context).custom(color: AppColor.neutral120)
: const SizedBox(),
],
).toShadowContainer(context).paddingAll(16),
Container(
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 16.toScreenHeight),
color: AppColor.white10,
child: AppFilledButton(
label: context.translation.verify_asset_details,
buttonColor: AppColor.primary10,
onPressed: () async {
await requestDetailProvider.engineerUpdateWorkOrder();
Navigator.pop(context);
},
),
),
),
],
);
}),
);

Loading…
Cancel
Save