cm feedback points,

design_3.0_latest
Sikander Saleem 9 months ago
parent 28b30d9fa8
commit 58fb4b3829

@ -15,6 +15,7 @@ class AppFilledButton extends StatelessWidget {
final Color? textColor; final Color? textColor;
final bool showBorder; final bool showBorder;
final double radius; final double radius;
final bool disableButton;
const AppFilledButton( const AppFilledButton(
{this.onPressed, {this.onPressed,
@ -25,6 +26,7 @@ class AppFilledButton extends StatelessWidget {
this.fontSize, this.fontSize,
this.loading = false, this.loading = false,
this.showBorder = false, this.showBorder = false,
this.disableButton = false,
this.buttonColor, this.buttonColor,
this.textColor, this.textColor,
this.radius = 10, this.radius = 10,
@ -39,7 +41,7 @@ class AppFilledButton extends StatelessWidget {
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: buttonColor ?? AppColor.blueStatus(context), color: disableButton ? AppColor.neutral140 : (buttonColor ?? AppColor.blueStatus(context)),
border: showBorder ? Border.all(color: textColor ?? AppColor.background(context)) : null, border: showBorder ? Border.all(color: textColor ?? AppColor.background(context)) : null,
), ),
child: loading child: loading
@ -58,10 +60,10 @@ class AppFilledButton extends StatelessWidget {
label.heading6(context).custom(color: textColor ?? AppColor.background(context)), label.heading6(context).custom(color: textColor ?? AppColor.background(context)),
]) ])
: label.heading6(context).custom( : label.heading6(context).custom(
color: textColor ?? AppColor.background(context), color: disableButton ? AppColor.neutral150 : (textColor ?? AppColor.background(context)),
align: TextAlign.center, align: TextAlign.center,
fontSize: fontSize ?? 16.toScreenWidth, fontSize: fontSize ?? 16.toScreenWidth,
), ),
).onPress(onPressed); ).onPress(disableButton ? null : (loading ? null : onPressed));
} }
} }

@ -55,10 +55,11 @@ class _AllRequestsFilterPageState extends State<AllRequestsFilterPage> {
search!.searchBySelectedValue = search?.requestNumber; search!.searchBySelectedValue = search?.requestNumber;
} }
final types = { final types = {
context.translation.serviceRequest: 1, context.translation.correctiveMaintenance: 1,
context.translation.gasRefill: 2, context.translation.gasRefill: 2,
context.translation.deviceTransfer: 3, context.translation.deviceTransfer: 3,
context.translation.preventiveMaintenance: 4, context.translation.preventiveMaintenance: 4,
context.translation.recurrentWo: 5,
}; };
final statuses = { final statuses = {
context.translation.allRequests: 0, context.translation.allRequests: 0,

@ -176,8 +176,9 @@ class FooterActionButton {
label: context.translation.markAsCompleted, label: context.translation.markAsCompleted,
// maxWidth: true, // maxWidth: true,
buttonColor: AppColor.green70, buttonColor: AppColor.green70,
onPressed: () async { onPressed: () {
ServiceRequestBottomSheet.feedBackBottomSheet(context: context); bool isValid = ServiceRequestBottomSheet.validateAssetSituation(Provider.of<ServiceRequestDetailProvider>(context, listen: false));
if (isValid) ServiceRequestBottomSheet.feedBackBottomSheet(context: context);
}, },
), ),
] ]

@ -54,6 +54,8 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
List<Activities> activities = []; List<Activities> activities = [];
bool disableNewActivity = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
UserProvider userProvider = Provider.of<UserProvider>(context); UserProvider userProvider = Provider.of<UserProvider>(context);
@ -66,11 +68,11 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
//backgroundColor: const Color(0xfff8f9fb), //backgroundColor: const Color(0xfff8f9fb),
body: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { body: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) {
activities = requestDetailProvider.currentWorkOrder!.data!.activities; activities = requestDetailProvider.currentWorkOrder!.data!.activities;
// if (showReorderView && reOrderActivities.isEmpty) { if (activities.isNotEmpty && (activities.last.activityStatus!.value == 14 || activities.last.activityStatus!.value == 19)) {
// reOrderActivities = requestDetailProvider.currentWorkOrder!.data!.activities; disableNewActivity = true;
// } else { } else {
// disableNewActivity = false;
// } }
return Column( return Column(
children: [ children: [
@ -126,6 +128,7 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
maxWidth: true, maxWidth: true,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
loading: requestDetailProvider.isLoading, loading: requestDetailProvider.isLoading,
disableButton: disableNewActivity,
onPressed: () async { onPressed: () async {
// if (showReorderView) { // if (showReorderView) {
// // requestDetailProvider.currentWorkOrder!.data!.activities = reOrderActivities; // // requestDetailProvider.currentWorkOrder!.data!.activities = reOrderActivities;

@ -3,6 +3,7 @@ import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/app_strings/app_asset.dart'; import 'package:test_sa/app_strings/app_asset.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
@ -300,7 +301,7 @@ class ServiceRequestBottomSheet {
requestDetailProvider.engineerUpdateNeedVisit(); requestDetailProvider.engineerUpdateNeedVisit();
try { try {
DateTime visitDateTime = requestDetailProvider.needVisitHelperModel!.visitDate!; DateTime visitDateTime = requestDetailProvider.needVisitHelperModel!.visitDate!;
int ?reminderMinutes = requestDetailProvider.currentWorkOrder!.data!.setReminder?.value; int? reminderMinutes = requestDetailProvider.currentWorkOrder!.data!.setReminder?.value;
DateTime updatedDateTime = visitDateTime.subtract(Duration(minutes: reminderMinutes ?? 0)); DateTime updatedDateTime = visitDateTime.subtract(Duration(minutes: reminderMinutes ?? 0));
if (updatedDateTime.isAfter(DateTime.now())) { if (updatedDateTime.isAfter(DateTime.now())) {
// ServiceRequestUtils.scheduleNotification(context: context, scheduleDateTime: updatedDateTime); // ServiceRequestUtils.scheduleNotification(context: context, scheduleDateTime: updatedDateTime);
@ -310,8 +311,7 @@ class ServiceRequestBottomSheet {
end: visitDateTime, end: visitDateTime,
title: context.translation.needAVisit, title: context.translation.needAVisit,
workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!);
} } else {
else{
// "Visit date is before the reminder time selected".showToast; // "Visit date is before the reminder time selected".showToast;
} }
} catch (e) { } catch (e) {
@ -446,9 +446,7 @@ class ServiceRequestBottomSheet {
workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!);
// uncommit this to add schedule notification need to confirm what to do in case of update.... // uncommit this to add schedule notification need to confirm what to do in case of update....
// ServiceRequestUtils.scheduleOrUpdateNotification(context: context, scheduleDateTime: updatedDateTime,workOrderId: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); // ServiceRequestUtils.scheduleOrUpdateNotification(context: context, scheduleDateTime: updatedDateTime,workOrderId: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!);
} else {
}
else{
"Visit date is before the reminder time selected".showToast; "Visit date is before the reminder time selected".showToast;
} }
} catch (e) { } catch (e) {
@ -837,7 +835,20 @@ class ServiceRequestBottomSheet {
); );
} }
static bool validateAssetSituation(ServiceRequestDetailProvider requestDetailProvider) {
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) {
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) {
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) {
Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG);
return false;
}
}
}
return true;
}
static Future feedBackBottomSheet({required BuildContext context}) { static Future feedBackBottomSheet({required BuildContext context}) {
String feedback = ''; String feedback = '';
TextEditingController _commentController = TextEditingController(); TextEditingController _commentController = TextEditingController();
return buildBottomSheetParent( return buildBottomSheetParent(
@ -1068,7 +1079,6 @@ class ServiceRequestBottomSheet {
static Future nurseVerifyArrivalBottomSheet({required BuildContext context}) { static Future nurseVerifyArrivalBottomSheet({required BuildContext context}) {
return buildBottomSheetParent( return buildBottomSheetParent(
context: context, context: context,
childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
@ -1131,7 +1141,7 @@ class ServiceRequestBottomSheet {
context: context, context: context,
isDismissible: false, isDismissible: false,
childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { childWidget: Consumer<ServiceRequestDetailProvider>(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) {
return WillPopScope( return WillPopScope(
onWillPop: () async { onWillPop: () async {
// Return `false` to block back navigation // Return `false` to block back navigation
@ -1147,12 +1157,9 @@ class ServiceRequestBottomSheet {
"Waiting...".heading4(context), "Waiting...".heading4(context),
Container( Container(
padding: EdgeInsets.all(5.toScreenHeight), padding: EdgeInsets.all(5.toScreenHeight),
decoration: const BoxDecoration( decoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral80),
shape: BoxShape.circle,
color: AppColor.neutral80
),
child: const Icon(Icons.close), child: const Icon(Icons.close),
).onPress((){ ).onPress(() {
Navigator.pop(context); Navigator.pop(context);
}), }),
], ],

@ -191,7 +191,7 @@ class ServiceRequestDetailView extends StatelessWidget {
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
), ),
Text( Text(
'${context.translation.date}: ${workOrder.requestedDate!.toString().toServiceRequestDetailsFormat}', 'Date/Time: ${workOrder.requestedDate!.toString().toServiceRequestDetailsFormat}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
), ),
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
@ -203,11 +203,7 @@ class ServiceRequestDetailView extends StatelessWidget {
), ),
8.height, 8.height,
Text( Text(
'${context.translation.serviceType}: ${workOrder.serviceType?.name ?? '-'}', '${context.translation.assignedTo}: ${workOrder.assignedEmployee?.userName ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.userName ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
), ),
@ -225,7 +221,7 @@ class ServiceRequestDetailView extends StatelessWidget {
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
8.height, 8.height,
Text( Text(
context.translation.callComments, "Call Comment",
style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
), ),
8.height, 8.height,

@ -118,6 +118,7 @@ class _AssetRetiredState extends State<AssetRetired> with TickerProviderStateMix
child: AppFilledButton( child: AppFilledButton(
label: context.translation.submit, label: context.translation.submit,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
loading: requestDetailProvider.isLoading,
onPressed: () async { onPressed: () async {
requestDetailProvider.assetRetiredHelperModel?.activityAssetToBeRetiredAttachments = []; requestDetailProvider.assetRetiredHelperModel?.activityAssetToBeRetiredAttachments = [];
for (var file in _files) { for (var file in _files) {

@ -253,14 +253,14 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
if (!widget.isEdit) { if (!widget.isEdit) {
return true; return true;
} }
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) { // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) {
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) { // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) {
if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) { // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) {
Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG); // Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG);
return false; // return false;
} // }
} // }
} // }
return isValid; return isValid;
} }

@ -17,7 +17,7 @@ class NotificationsList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (notifications.isEmpty) { if (notifications.isEmpty) {
return NoDataFound(message: context.translation.notificationsNotFound); return NoDataFound(message: context.translation.notificationsNotFound).center;
} }
return LazyLoading( return LazyLoading(
nextPage: nextPage, nextPage: nextPage,

Loading…
Cancel
Save