implement changes mentioned in testing document

design_3.0_latest
WaseemAbbasi22 1 year ago
parent 7f563e8292
commit da664e957b

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -62,6 +62,13 @@ class DashBoardProvider extends ChangeNotifier {
_requestDetailList = null; _requestDetailList = null;
dashboardCount = null; dashboardCount = null;
} }
void refreshDashboard({required UsersTypes userType,required BuildContext context}) {
setTabs(userType:userType,context: context);
getDashBoardCount(usersType: userType);
resetRequestDataList();
getRequestDetail(usersType: userType, status: tabs[currentListIndex].tag);
// notifyListeners();
}
void resetRequestDataList() { void resetRequestDataList() {
pageNum = 1; pageNum = 1;
@ -222,7 +229,7 @@ class CategoryTabs {
static List<CategoryTabs> getTabs({required UsersTypes userType, required BuildContext context}) { static List<CategoryTabs> getTabs({required UsersTypes userType, required BuildContext context}) {
List<CategoryTabs> tabs = []; List<CategoryTabs> tabs = [];
if (userType == UsersTypes.engineer) { if (userType == UsersTypes.engineer) {
tabs.add(CategoryTabs('New Request', 1)); tabs.add(CategoryTabs('Open Request', 1));
tabs.add(CategoryTabs('In Progress', 2)); tabs.add(CategoryTabs('In Progress', 2));
tabs.add(CategoryTabs('Completed', 3)); tabs.add(CategoryTabs('Completed', 3));
return tabs; return tabs;
@ -230,7 +237,7 @@ class CategoryTabs {
tabs.add(CategoryTabs('Open Request', 1)); tabs.add(CategoryTabs('Open Request', 1));
tabs.add(CategoryTabs('In Progress', 2)); tabs.add(CategoryTabs('In Progress', 2));
tabs.add(CategoryTabs('Acknowledged', 3)); tabs.add(CategoryTabs('Acknowledged', 3));
tabs.add(CategoryTabs('Rejected', 6)); tabs.add(CategoryTabs('Canceled', 6));
return tabs; return tabs;
} }
} }

@ -114,7 +114,6 @@ class _DashboardViewState extends State<DashboardView> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool isNurse = (Provider.of<UserProvider>(context, listen: false).user!.type) == UsersTypes.normal_user; bool isNurse = (Provider.of<UserProvider>(context, listen: false).user!.type) == UsersTypes.normal_user;
print('user data is ${Provider.of<UserProvider>(context, listen: false).user?.toJson()}');
return Scaffold( return Scaffold(
// backgroundColor: AppColor.background(context), // backgroundColor: AppColor.background(context),
appBar: PreferredSize( appBar: PreferredSize(

@ -19,7 +19,7 @@ class RequestCategoryFragment extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<DashBoardProvider>(builder: (context, dashboardProvider, child) { return Consumer<DashBoardProvider>(builder: (context, dashboardProvider, child) {
return Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ return Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[
context.translation.allRequests.heading4(context).paddingOnly(start: 16, end: 16), context.translation.allWorkOrder.heading4(context).paddingOnly(start: 16, end: 16),
getTabs( getTabs(
requestsProvider: dashboardProvider, requestsProvider: dashboardProvider,
context: context, context: context,

@ -34,7 +34,7 @@ class RequestsFragment extends StatelessWidget {
context.isDark ? AppColor.redStatus(context) : AppColor.red30, context.isDark ? AppColor.redStatus(context) : AppColor.red30,
), ),
listItem(snapshot.dashboardCount?.data?.countOverdue ?? 0, "overdue", context.translation.overdue, context, snapshot.isAllCountLoading, 1, AppColor.yellowIcon(context)), listItem(snapshot.dashboardCount?.data?.countOverdue ?? 0, "overdue", context.translation.overdue, context, snapshot.isAllCountLoading, 1, AppColor.yellowIcon(context)),
listItem(snapshot.dashboardCount?.data?.countOpen ?? 0, "new_request", ApiManager.instance.user!.type == UsersTypes.engineer ? context.translation.inProgress : context.translation.newR, listItem(snapshot.dashboardCount?.data?.countOpen ?? 0, "new_request", ApiManager.instance.user?.type == UsersTypes.engineer ? context.translation.inProgress : context.translation.newR,
context, snapshot.isAllCountLoading, 2, AppColor.primary10), context, snapshot.isAllCountLoading, 2, AppColor.primary10),
listItem(snapshot.dashboardCount?.data?.countComplete ?? 0, "complete_request", context.translation.completed, context, snapshot.isAllCountLoading, 3, AppColor.greenStatus(context)), listItem(snapshot.dashboardCount?.data?.countComplete ?? 0, "complete_request", context.translation.completed, context, snapshot.isAllCountLoading, 3, AppColor.greenStatus(context)),
], ],

@ -149,6 +149,13 @@
"reason2": "يقوم المهندس بتغيير موعد الزيارة دون التنسيق معي", "reason2": "يقوم المهندس بتغيير موعد الزيارة دون التنسيق معي",
"reason3": "لم يحضر المهندس في التاريخ / الوقت", "reason3": "لم يحضر المهندس في التاريخ / الوقت",
"reason4": "لا يمكنني الوصول إلى المهندس عن طريق الهاتف أو الرسائل القصيرة", "reason4": "لا يمكنني الوصول إلى المهندس عن طريق الهاتف أو الرسائل القصيرة",
"requestSparePart": "طلب قطعة غيار",
"selectAction": "اختر إجراء",
"requestSparePartForYourAsset": "اطلب قطعة غيار لأصلك",
"addNewActivity": "أضف نشاطًا جديدًا",
"addNewActivityToYourWorkOrder": "أضف نشاطًا جديدًا إلى أمر العمل الخاص بك",
"markAsCompleted": "وضع علامة كمكتمل",
"cmNumber": "رقم الصيانة التصحيحية",
"reason5": "هناك تأخير في إحضار قطع الغيار", "reason5": "هناك تأخير في إحضار قطع الغيار",
"repaired": "تم الاصلاح", "repaired": "تم الاصلاح",
"repeated": "معاد", "repeated": "معاد",
@ -158,6 +165,11 @@
"serviceRequestInformation": "معلومات طلب الخدمة", "serviceRequestInformation": "معلومات طلب الخدمة",
"serviceRequests": "طلبات الخدمة", "serviceRequests": "طلبات الخدمة",
"correctiveMaintenance": "الصيانة التصحيحية", "correctiveMaintenance": "الصيانة التصحيحية",
"cmDetails": "تفاصيل الصيانة التصحيحية",
"assetInformation": "معلومات الأصول",
"callDetails": "تفاصيل الاتصال",
"assetStatus": "حالة الأصول",
"selectWorkOrder": "اختر أمر العمل",
"shareAntherIssue": "مشاركة قضية أخرى", "shareAntherIssue": "مشاركة قضية أخرى",
"shareApp": "مشاركة التطبيق", "shareApp": "مشاركة التطبيق",
"sn": "الرقم التسلسلي", "sn": "الرقم التسلسلي",
@ -464,6 +476,7 @@
"trackAssetTransfer" : "تتبع نقل اجهزة", "trackAssetTransfer" : "تتبع نقل اجهزة",
"total" : "مجموع", "total" : "مجموع",
"allRequests" : "كل الطلبات", "allRequests" : "كل الطلبات",
"allWorkOrders": "جميع أوامر العمل",
"requestStatus" : "حالة الطلب", "requestStatus" : "حالة الطلب",
"createSubWorkOrder" : "إنشاء أمر عمل فرعي", "createSubWorkOrder" : "إنشاء أمر عمل فرعي",
"mrNumber" : "MR Number", "mrNumber" : "MR Number",

@ -328,12 +328,17 @@
"firstAction" : "First Action", "firstAction" : "First Action",
"rejectionReason" : "Rejection Reason", "rejectionReason" : "Rejection Reason",
"workOrder" : "Work Order", "workOrder" : "Work Order",
"cmDetails": "CM Details",
"assetInformation": "Asset Information",
"callDetails": "Call Details",
"assetStatus": "Asset Status",
"workOrders" : "Work Orders", "workOrders" : "Work Orders",
"viewWorkOrder" : "View All Work Order", "viewWorkOrder" : "View All Work Order",
"createWorkOrder" : "Create Work Order", "createWorkOrder" : "Create Work Order",
"serviceDetails": "Service Details", "serviceDetails": "Service Details",
"setVisitDate": "Set Date Of Visit", "setVisitDate": "Set Date Of Visit",
"verifyArrival": "Verify Arrival", "verifyArrival": "Verify Arrival",
"selectWorkOrder": "Select Work Order",
"scanQr": "Scan QR", "scanQr": "Scan QR",
"scanQrDetail": "Scan QR Code of the device", "scanQrDetail": "Scan QR Code of the device",
"askRequester": "Ask Requester to Verify", "askRequester": "Ask Requester to Verify",
@ -345,6 +350,13 @@
"lastSituationStatus": "Last Situation Status", "lastSituationStatus": "Last Situation Status",
"priority" : "Request Priority", "priority" : "Request Priority",
"equipmentStatus" : "Equipment Status", "equipmentStatus" : "Equipment Status",
"requestSparePart": "Request Spare Part",
"selectAction": "Select Action",
"requestSparePartForYourAsset": "Request spare part for your asset",
"addNewActivity": "Add New Activity",
"addNewActivityToYourWorkOrder": "Add new activity to your work order",
"markAsCompleted": "Mark As Completed",
"cmNumber": "CM Number",
"jopStatus" : "Jop Status", "jopStatus" : "Jop Status",
"attachImage" : "Attach Image", "attachImage" : "Attach Image",
"callComments" : "Call Comments", "callComments" : "Call Comments",
@ -464,6 +476,7 @@
"createSubWorkOrder" : "Create Sub Work Order", "createSubWorkOrder" : "Create Sub Work Order",
"mrNumber" : "MR Number", "mrNumber" : "MR Number",
"vendorEng" : "Vendor Engineer", "vendorEng" : "Vendor Engineer",
"allWorkOrder": "All Work Orders",
"vendorName" : "Vendor Name", "vendorName" : "Vendor Name",
"reset" : "Reset", "reset" : "Reset",
"solution" : "Solution", "solution" : "Solution",

@ -89,6 +89,7 @@ class EngineerUpdateWorkOrderHelperModel {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{}; final Map<String, dynamic> data = <String, dynamic>{};
data['workOrderId'] = workOrderId; data['workOrderId'] = workOrderId;
data['equipmentStatusId'] = equipmentStatus?.id; data['equipmentStatusId'] = equipmentStatus?.id;
data['returnToService'] = returnToService; data['returnToService'] = returnToService;

@ -27,7 +27,7 @@ class AppBottomNavigationBar extends StatelessWidget {
backgroundColor: Colors.white, backgroundColor: Colors.white,
items: <BottomNavigationBarItem>[ items: <BottomNavigationBarItem>[
navBarItem(context, index: 0, iconName: "overview", label: context.translation.overview), navBarItem(context, index: 0, iconName: "overview", label: context.translation.overview),
navBarItem(context, index: 1, iconName: "request_icon", label: context.translation.request), navBarItem(context, index: 1, iconName: "request_icon", label: context.translation.workOrder),
if (!isEngineer) navBarItem(context, index: 2, iconName: "add_icon", label: context.translation.calendar, showLabel: false), if (!isEngineer) navBarItem(context, index: 2, iconName: "add_icon", label: context.translation.calendar, showLabel: false),
navBarItem(context, index: !isEngineer ? 3 : 2, iconName: "assets", label: context.translation.assets), navBarItem(context, index: !isEngineer ? 3 : 2, iconName: "assets", label: context.translation.assets),
navBarItem(context, index: !isEngineer ? 4 : 3, iconName: "contact", label: context.translation.contact), navBarItem(context, index: !isEngineer ? 4 : 3, iconName: "contact", label: context.translation.contact),

@ -19,7 +19,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
"Select Request".heading4(context), context.translation.selectWorkOrder.heading4(context),
16.height, 16.height,
GridView( GridView(
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
@ -30,7 +30,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
listCard( listCard(
context: context, context: context,
icon: 'add_icon', icon: 'add_icon',
label: '${context.translation.create}\n${context.translation.serviceRequest}', label: context.translation.correctiveMaintenance,
onTap: () { onTap: () {
Navigator.pushReplacementNamed(context, CreateNewRequest.id); Navigator.pushReplacementNamed(context, CreateNewRequest.id);
}, },
@ -38,7 +38,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
listCard( listCard(
context: context, context: context,
icon: 'add_icon', icon: 'add_icon',
label: '${context.translation.create}\n${context.translation.gasRefill}', label: context.translation.gasRefill,
onTap: () { onTap: () {
//NewGasRefillRequestPage.routeName) //NewGasRefillRequestPage.routeName)
Navigator.pushReplacementNamed(context, NewGasRefillRequestPage.routeName); Navigator.pushReplacementNamed(context, NewGasRefillRequestPage.routeName);
@ -47,7 +47,7 @@ class CreateRequestTypeBottomSheet extends StatelessWidget {
listCard( listCard(
context: context, context: context,
icon: 'add_icon', icon: 'add_icon',
label: '${context.translation.create}\n${context.translation.deviceTransfer}', label: context.translation.deviceTransfer,
onTap: () async { onTap: () async {
Navigator.pushReplacementNamed(context, RequestDeviceTransfer.id); Navigator.pushReplacementNamed(context, RequestDeviceTransfer.id);
}, },

@ -32,8 +32,8 @@ class _MyRequestsPageState extends State<MyRequestsPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (_provider == null) { if (_provider == null) {
requestsList = [ requestsList = [
context.translation.allRequests, context.translation.allWorkOrder,
context.translation.serviceRequest, context.translation.correctiveMaintenance,
context.translation.gasRefillRequest, context.translation.gasRefillRequest,
context.translation.deviceTransferRequest, context.translation.deviceTransferRequest,
context.translation.preventiveMaintenance, context.translation.preventiveMaintenance,

@ -46,10 +46,10 @@ class ServiceRequestItemView extends StatelessWidget {
], ],
), ),
8.height, 8.height,
(requestData!.typeTransaction ?? context.translation.serviceRequest).heading5(context), (requestData!.typeTransaction ?? context.translation.correctiveMaintenance).heading5(context),
'${context.translation.assetName}: ${requestData!.assetName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), '${context.translation.assetName}: ${requestData!.assetName?.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context),
// '${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context), // '${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context),
'${context.translation.requestType}: ${requestData!.requestTypeName}'.bodyText(context), // '${context.translation.requestType}: ${requestData!.requestTypeName}'.bodyText(context),
'${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context), '${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context),
8.height, 8.height,
Row( Row(
@ -97,7 +97,7 @@ class ServiceRequestItemView extends StatelessWidget {
], ],
), ),
8.height, 8.height,
(requestDetails!.nameOfType ?? context.translation.serviceRequest).heading5(context), (requestDetails!.nameOfType ?? context.translation.correctiveMaintenance).heading5(context),
'${context.translation.assetName}: ${requestDetails!.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}'.bodyText(context), '${context.translation.assetName}: ${requestDetails!.assetName?.cleanupWhitespace?.capitalizeFirstOfEach}'.bodyText(context),
'${context.translation.assetNumber}: ${requestDetails!.assetNo}'.bodyText(context), '${context.translation.assetNumber}: ${requestDetails!.assetNo}'.bodyText(context),
'${context.translation.requestType}: ${requestDetails!.requestType}'.bodyText(context), '${context.translation.requestType}: ${requestDetails!.requestType}'.bodyText(context),

@ -217,18 +217,13 @@ class _LoginPageState extends State<LoginPage> {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
SizedBox( SizedBox(
height: 146.toScreenHeight, height: 100.toScreenHeight,
), ),
// RoundedBackButton( "logo_white".toPngAsset(),
// icon: Icons.arrow_back_ios, 25.height,
// onPressed: () {
// ///There is no previous screen
// },
// backgroundColor: context.isDark ? AppColor.primary80 : AppColor.primary80),
context.translation.signInToYour.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500), context.translation.signInToYour.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500),
context.translation.account.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500), context.translation.account.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500),
25.height, 15.height,
context.translation.letSignInToAccount.customHeadingText(context).custom(color: Colors.white, fontWeight: FontWeight.w500, fontSize: 12), context.translation.letSignInToAccount.customHeadingText(context).custom(color: Colors.white, fontWeight: FontWeight.w500, fontSize: 12),
], ],
), ),

@ -157,7 +157,7 @@ class FooterActionButton {
if (showMarkAsFixedButton) ...[ if (showMarkAsFixedButton) ...[
8.height, 8.height,
AppFilledButton( AppFilledButton(
label: context.translation.markAsFixed, label: context.translation.markAsCompleted,
// maxWidth: true, // maxWidth: true,
buttonColor: AppColor.green70, buttonColor: AppColor.green70,
onPressed: () async { onPressed: () async {

@ -364,8 +364,8 @@ class ServiceRequestBottomSheet {
static Future activityTypeBottomSheet({required BuildContext context}) { static Future activityTypeBottomSheet({required BuildContext context}) {
final List<Map<String, String>> items = [ final List<Map<String, String>> items = [
{'heading': context.translation.sparePartRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.sparePartIcon}, {'heading': context.translation.requestSparePart, 'subHeading': context.translation.requestSparePartForYourAsset, 'icon': AppAsset.sparePartIcon},
{'heading': context.translation.maintenanceRequest, 'subHeading': context.translation.sparePartRequestDetail, 'icon': AppAsset.maintenanceIcon}, {'heading': context.translation.addNewActivity, 'subHeading': context.translation.addNewActivityToYourWorkOrder, 'icon': AppAsset.maintenanceIcon},
]; ];
Widget customListItem({ Widget customListItem({
required BuildContext context, required BuildContext context,
@ -449,7 +449,7 @@ class ServiceRequestBottomSheet {
8.height, 8.height,
Align( Align(
alignment: AlignmentDirectional.centerStart, alignment: AlignmentDirectional.centerStart,
child: context.translation.selectActivityType.bottomSheetHeadingTextStyle(context), child: context.translation.selectAction.bottomSheetHeadingTextStyle(context),
), ),
16.height, 16.height,
ListView.builder( ListView.builder(

@ -31,7 +31,6 @@ class WorkOrderDetailView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
UserProvider _userProvider = Provider.of<UserProvider>(context, listen: false); UserProvider _userProvider = Provider.of<UserProvider>(context, listen: false);
return Consumer<RequestDetailProvider>(builder: (pContext, requestProvider, _) { return Consumer<RequestDetailProvider>(builder: (pContext, requestProvider, _) {
return requestProvider.isLoading return requestProvider.isLoading
? const CircularProgressIndicator(color: AppColor.primary10).center ? const CircularProgressIndicator(color: AppColor.primary10).center
: requestProvider.currentWorkOrder == null : requestProvider.currentWorkOrder == null
@ -118,7 +117,7 @@ class WorkOrderDetailView extends StatelessWidget {
], ],
), ),
Text( Text(
context.translation.assetDetails, context.translation.assetInformation,
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,
@ -173,7 +172,7 @@ class WorkOrderDetailView extends StatelessWidget {
//... request details starts here.... //... request details starts here....
Text( Text(
context.translation.requestDetail, context.translation.callDetails,
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,
@ -193,13 +192,18 @@ class WorkOrderDetailView extends StatelessWidget {
'${context.translation.date}: ${workOrder.requestedDate!.toString().toServiceRequestDetailsFormat}', '${context.translation.date}: ${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),
), ),
//TODO confirm the value...
Text(
'${context.translation.cmNumber}: ${workOrder.workOrderNo}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120),
),
8.height, 8.height,
if ((workOrder.comments ?? "").isNotEmpty) ...[ if ((workOrder.comments ?? "").isNotEmpty) ...[
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
8.height, 8.height,
Text( Text(
workOrder.comments!, '${context.translation.callComments}: ${workOrder.comments!}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
), ),
], ],
@ -319,28 +323,27 @@ class WorkOrderDetailView extends StatelessWidget {
} }
} }
} }
Widget assetDetailCard({required RequestDetailProvider requestDetailProvider, required UserProvider userProvider}) { Widget assetDetailCard({required RequestDetailProvider requestDetailProvider, required UserProvider userProvider}) {
//TODO add proper check to hide and show that widget //TODO add proper check to hide and show that widget
// if (requestDetailProvider.currentWorkOrder!.data!.needAVisitDateTime != null && if (userProvider.user?.type == UsersTypes.engineer &&
// userProvider.user?.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.activity) {
// requestDetailProvider.currentWorkOrder?.data?.nextStep!.workOrderNextStepEnum == WorkOrderNextStepEnum.verifyAssetDetail) { WorkOrderData currentWorkOrderData = requestDetailProvider.currentWorkOrder!.data!;
WorkOrderData currentWorkOrderData = requestDetailProvider.currentWorkOrder!.data!; requestDetailProvider.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
requestDetailProvider.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel( workOrderId: currentWorkOrderData.requestId,
workOrderId: currentWorkOrderData.requestId, equipmentStatus: currentWorkOrderData.equipmentStatus,
equipmentStatus: currentWorkOrderData.equipmentStatus, loanAvailability: currentWorkOrderData.loanAvailablity,
loanAvailability: currentWorkOrderData.loanAvailablity, failureReason: currentWorkOrderData.failureReasone,
failureReason: currentWorkOrderData.failureReasone, // faultDescription: currentWorkOrderData.fa,
// faultDescription: currentWorkOrderData.fa, solution: currentWorkOrderData.solution?.name,
solution: currentWorkOrderData.solution?.name, returnToService: currentWorkOrderData.returnToService,
returnToService: currentWorkOrderData.returnToService, serviceType: currentWorkOrderData.serviceType,
serviceType: currentWorkOrderData.serviceType, );
); return const AssetDetailCard();
// requestDetailProvider.updateNeedVisitHelperModel(requestDetailProvider.needVisitHelperModel); }
return const AssetDetailCard(); else {
// } return const SizedBox();
// else { }
// return const SizedBox();
// }
} }
} }

@ -53,10 +53,11 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
@override @override
void initState() { void initState() {
super.initState(); super.initState();
assignValues();
} }
Future<void> getFaultDescription() async { Future<void> getFaultDescription({required int? assetId}) async {
Provider.of<FaultDescriptionProvider>(context, listen: false).getFaultDescriptionList(assetId: _requestDetailProvider?.currentWorkOrder?.data?.asset?.id).then((List<FaultDescription>? data) { Provider.of<FaultDescriptionProvider>(context, listen: false).getFaultDescriptionList(assetId: assetId).then((List<FaultDescription>? data) {
if (data?.isNotEmpty ?? false) { if (data?.isNotEmpty ?? false) {
_faults = data!; _faults = data!;
setState(() {}); setState(() {});
@ -64,6 +65,22 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
}); });
} }
void assignValues() {
RequestDetailProvider requestDetailProvider = Provider.of<RequestDetailProvider>(context, listen: false);
WorkOrderData currentWorkOrderData = requestDetailProvider.currentWorkOrder!.data!;
requestDetailProvider.engineerUpdateWorkOrderHelperModel = EngineerUpdateWorkOrderHelperModel(
workOrderId: currentWorkOrderData.requestId,
equipmentStatus: currentWorkOrderData.equipmentStatus,
loanAvailability: currentWorkOrderData.loanAvailablity,
failureReason: currentWorkOrderData.failureReasone,
// faultDescription: currentWorkOrderData.fa,
solution: currentWorkOrderData.solution?.name,
returnToService: currentWorkOrderData.returnToService,
serviceType: currentWorkOrderData.serviceType,
);
getFaultDescription(assetId: requestDetailProvider.currentWorkOrder?.data?.asset?.id);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (_requestDetailProvider == null) { if (_requestDetailProvider == null) {
@ -79,25 +96,14 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
_equipmentStatusProvider!.getDate(); _equipmentStatusProvider!.getDate();
}); });
_reasonProvider?.serviceRequestId = _requestDetailProvider?.currentWorkOrder!.data!.requestId.toString(); _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.fa,
solution: currentWorkOrderData.solution?.name,
returnToService: currentWorkOrderData.returnToService,
serviceType: currentWorkOrderData.serviceType,
);
// _requestDetailProvider?.updateEngineerUpdateWorkOrderHelperModel(_requestDetailProvider?.engineerUpdateWorkOrderHelperModel);
getFaultDescription();
} }
return Scaffold( return Scaffold(
key: _scaffoldKey, key: _scaffoldKey,
appBar: DefaultAppBar(title: context.translation.verify_asset_details), appBar: DefaultAppBar(title: context.translation.verify_asset_details),
body: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) { body: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) {
print('description model i got is ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription?.toJson()}');
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
@ -193,10 +199,14 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
showShadow: false, showShadow: false,
initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription, initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription,
onSelect: (fault) { onSelect: (fault) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription = fault; if (fault != null) {
requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution = fault?.workPerformed; requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription = fault;
if (mounted) { requestDetailProvider.engineerUpdateWorkOrderHelperModel?.solution = fault.workPerformed;
requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel); if (mounted) {
print('model updated...');
requestDetailProvider.updateEngineerUpdateWorkOrderHelperModel(requestDetailProvider.engineerUpdateWorkOrderHelperModel);
}
print('description i got is ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription?.toJson()}');
} }
}, },
), ),
@ -215,11 +225,12 @@ class _VerifyAssetDetailsState extends State<VerifyAssetDetails> with TickerProv
label: context.translation.verify_asset_details, label: context.translation.verify_asset_details,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
onPressed: () async { onPressed: () async {
//TODO add loader.. print('description model i got is ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription?.toJson()}');
showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading()); print('update model i got is ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.toJson()}');
await requestDetailProvider.engineerUpdateWorkOrder(); // showDialog(context: context, barrierDismissible: false, builder: (context) => const AppLazyLoading());
Navigator.pop(context); // await requestDetailProvider.engineerUpdateWorkOrder();
Navigator.pop(context); // Navigator.pop(context);
// Navigator.pop(context);
}, },
), ),
), ),

@ -7,10 +7,12 @@ import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_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/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/pending_service_request_model.dart'; import 'package:test_sa/models/service_request/pending_service_request_model.dart';
@ -43,7 +45,6 @@ class CreateNewRequest extends StatefulWidget {
//TODO remove unnecessary code //TODO remove unnecessary code
class _CreateNewRequestState extends State<CreateNewRequest> with TickerProviderStateMixin { class _CreateNewRequestState extends State<CreateNewRequest> with TickerProviderStateMixin {
AssetProvider? _devicesProvider;
late TextEditingController _commentController; late TextEditingController _commentController;
late UserProvider _userProvider; late UserProvider _userProvider;
late SettingProvider _settingProvider; late SettingProvider _settingProvider;
@ -108,7 +109,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
key: _scaffoldKey, key: _scaffoldKey,
appBar: DefaultAppBar(title: context.translation.createNewRequest), appBar: DefaultAppBar(title: context.translation.createWorkOrder),
body: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) { body: Consumer<ServiceRequestsProvider>(builder: (context, serviceRequestProvider, child) {
return SafeArea( return SafeArea(
child: LoadingManager( child: LoadingManager(
@ -146,7 +147,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
21.height, 21.height,
highPriorityWidget(), highPriorityWidget(),
20.height, 20.height,
equipmentStatusWidget(context), assetStatusWidget(context),
24.height, 24.height,
MultiFilesPicker( MultiFilesPicker(
label: context.translation.attachImage, label: context.translation.attachImage,
@ -168,7 +169,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
label: (pendingAssetServiceRequest != null && (pendingAssetServiceRequest!.details?.isNotEmpty ?? false)) label: (pendingAssetServiceRequest != null && (pendingAssetServiceRequest!.details?.isNotEmpty ?? false))
? context.translation.duplicateRequest ? context.translation.duplicateRequest
: context.translation.createNewRequest, : context.translation.createWorkOrder,
onPressed: checkPendingRequest ? null : _submit, onPressed: checkPendingRequest ? null : _submit,
// buttonColor: AppColor.primary10, // buttonColor: AppColor.primary10,
), ),
@ -182,7 +183,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
); );
} }
Widget equipmentStatusWidget(BuildContext context) { Widget assetStatusWidget(BuildContext context) {
return Consumer<EquipmentStatusProvider>(builder: (cxt, snapshot, _) { return Consumer<EquipmentStatusProvider>(builder: (cxt, snapshot, _) {
try { try {
_serviceRequest.defectType ??= snapshot.items.first; _serviceRequest.defectType ??= snapshot.items.first;
@ -194,7 +195,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
context.translation.equipmentStatus.bodyText(context).custom(color: AppColor.black20), context.translation.assetStatus.bodyText(context).custom(color: AppColor.black20),
8.height, 8.height,
Wrap( Wrap(
runSpacing: 8, runSpacing: 8,
@ -209,10 +210,12 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
height: 24, height: 24,
child: Radio( child: Radio(
value: element, value: element,
activeColor: Colors.red, activeColor:AppColor.primary10,
fillColor: WidgetStateColor.resolveWith((states) { fillColor: WidgetStateColor.resolveWith((states) {
if (states.contains(WidgetState.selected)) return AppColor.primary10; if (states.contains(WidgetState.selected)) {
return AppColor.neutral130; return AppColor.primary10; // Thumb color when selected
}
return Colors.grey; // Thumb color when unselected (grey)
}), }),
groupValue: _serviceRequest.defectType, groupValue: _serviceRequest.defectType,
onChanged: (state) { onChanged: (state) {
@ -258,7 +261,7 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
_serviceRequest.priority ??= snapshot.items.firstWhere((element) => element.value == 0, orElse: () => Lookup()); _serviceRequest.priority ??= snapshot.items.firstWhere((element) => element.value == 0, orElse: () => Lookup());
} }
return CupertinoSwitch( return CupertinoSwitch(
thumbColor: AppColor.red70, thumbColor:_serviceRequest.priority?.value != 0? AppColor.red70:AppColor.neutral10,
activeColor: AppColor.red30.withOpacity(0.4), activeColor: AppColor.red30.withOpacity(0.4),
value: _serviceRequest.priority?.value != 0, value: _serviceRequest.priority?.value != 0,
onChanged: (state) { onChanged: (state) {
@ -359,7 +362,8 @@ class _CreateNewRequestState extends State<CreateNewRequest> with TickerProvider
int status = await _requestDetailProvider.createWorkOrder(); int status = await _requestDetailProvider.createWorkOrder();
if(status==200){ if(status==200){
//pop dialoge... DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
Navigator.pop(context); Navigator.pop(context);
Navigator.pop(context); Navigator.pop(context);
} }

@ -67,7 +67,7 @@ class _RequestDetailMainState extends State<RequestDetailMain> {
}), }),
10.width, 10.width,
Text( Text(
context.translation.serviceDetails , context.translation.cmDetails ,
style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
).expanded, ).expanded,
], ],
@ -96,7 +96,7 @@ class _RequestDetailMainState extends State<RequestDetailMain> {
// setState(() {}); // setState(() {});
}, },
tabs: [ tabs: [
Tab(text: context.translation.requestDetail, height: 57.toScreenHeight), Tab(text: context.translation.details, height: 57.toScreenHeight),
Tab(text: context.translation.historyLogs, height: 57.toScreenHeight), Tab(text: context.translation.historyLogs, height: 57.toScreenHeight),
], ],
), ),

@ -49,7 +49,6 @@ class _ServiceRequestDetailsPageState extends State<ServiceRequestDetailsPage> {
WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async { WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) async {
Provider.of<CommentsProvider>(context, listen: false).reset(); Provider.of<CommentsProvider>(context, listen: false).reset();
serviceRequest = await Provider.of<ServiceRequestsProvider>(context, listen: false).getServiceRequestObjectById(requestId: widget.serviceRequest.id!); serviceRequest = await Provider.of<ServiceRequestsProvider>(context, listen: false).getServiceRequestObjectById(requestId: widget.serviceRequest.id!);
print('service request i got is ${serviceRequest?.id}');
loading = false; loading = false;
setState(() {}); setState(() {});
}); });

@ -4,6 +4,7 @@
"signInToYour", "signInToYour",
"overdue", "overdue",
"newR", "newR",
"noDataFound" "noDataFound",
"allWorkOrder"
] ]
} }

Loading…
Cancel
Save