From 7ecd90a556537d4c878bf8c4e6f1627e20ca2a4a Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 13 Nov 2023 11:51:54 +0300 Subject: [PATCH] gas refill flow added. --- lib/controllers/api_routes/urls.dart | 1 + .../providers/api/gas_refill_provider.dart | 13 ++++ .../requests/gas_refill_item_view.dart | 9 ++- .../user/gas_refill/gas_refill_details.dart | 66 +++++++++++-------- 4 files changed, 61 insertions(+), 28 deletions(-) diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 09bdea74..f3e608bc 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -94,6 +94,7 @@ class URLs { static get requestGasRefill => "$_baseUrl/GazRefill/AddGazRefill"; // get static get updateGasRefill => "$_baseUrl/GazRefill/UpdateGazRefill"; // get static get getGasRefill => "$_baseUrl/GazRefill/GetGazRefills"; // get + static get getGasRefillById => "$_baseUrl/GazRefill/GetGazRefillById"; // get //device transfer static get requestDeviceTransfer => "$_baseUrl/AssetTransfer/AddAssetTransfer"; // get diff --git a/lib/controllers/providers/api/gas_refill_provider.dart b/lib/controllers/providers/api/gas_refill_provider.dart index ff4f190e..3f2118a3 100644 --- a/lib/controllers/providers/api/gas_refill_provider.dart +++ b/lib/controllers/providers/api/gas_refill_provider.dart @@ -45,6 +45,19 @@ class GasRefillProvider extends ChangeNotifier { // failed _loading = false bool isLoading; + Future getGasRefillObjectById(num id) async { + try { + Response response = await ApiManager.instance.get(URLs.getGasRefillById + "?gazRefillId=$id"); + if (response.statusCode >= 200 && response.statusCode < 300) { + return GasRefillModel.fromJson(json.decode(response.body)["data"]); + } else { + return null; + } + } catch (error) { + return null; + } + } + /// return -2 if request in progress /// return -1 if error happen when sending request /// return state code if request complete may be 200, 404 or 403 diff --git a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart index 027750dd..9972cdaa 100644 --- a/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart +++ b/lib/new_views/pages/land_page/requests/gas_refill_item_view.dart @@ -5,8 +5,10 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/all_requests_and_count_model.dart'; +import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; +import 'package:test_sa/views/pages/user/gas_refill/gas_refill_details.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; class GasRefillItemView extends StatelessWidget { @@ -61,6 +63,11 @@ class GasRefillItemView extends StatelessWidget { ], ), ], - ).toShadowContainer(context, showShadow: showShadow).onPress(() {}); + ).toShadowContainer(context, showShadow: showShadow).onPress(() { + Navigator.of(context).push(MaterialPageRoute( + builder: (_) => GasRefillDetailsPage( + model: GasRefillModel(id: request.id), + ))); + }); } } diff --git a/lib/views/pages/user/gas_refill/gas_refill_details.dart b/lib/views/pages/user/gas_refill/gas_refill_details.dart index 5688996f..1ee8f6f6 100644 --- a/lib/views/pages/user/gas_refill/gas_refill_details.dart +++ b/lib/views/pages/user/gas_refill/gas_refill_details.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; @@ -8,7 +9,9 @@ import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart'; +import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/loaders/no_item_found.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; import '../../../../extensions/text_extensions.dart'; @@ -37,35 +40,44 @@ class _GasRefillDetailsPageState extends State { @override void initState() { - _model.fromGasRefillModel(widget.model); + // _model.fromGasRefillModel(gasRefillModel); super.initState(); } @override Widget build(BuildContext context) { _userProvider = Provider.of(context); + GasRefillProvider _gasRefillProvider = Provider.of(context); return Scaffold( appBar: DefaultAppBar(title: context.translation.gasRefillDetails), key: _scaffoldKey, body: SafeArea( - child: Form( - key: _formKey, - child: LoadingManager( - isLoading: _isLoading, - isFailedLoading: false, - stateCode: 200, - onRefresh: () async {}, - child: Column( - children: [informationCard()], - ), - ), + child: FutureBuilder( + future: _gasRefillProvider.getGasRefillObjectById(widget.model.id), + builder: (context, snap) { + if (snap.connectionState == ConnectionState.waiting) { + return const ALoading(); + } else if (!snap.hasData) { + _model = snap.data; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: informationCard(_model), + ).expanded, + ], + ); + } + return NoItemFound(message: context.translation.noDataFound); + }, ), ), ); } - Widget informationCard() { + Widget informationCard(GasRefillModel gasRefillModel) { return Column( children: [ Column( @@ -87,24 +99,24 @@ class _GasRefillDetailsPageState extends State { //), // 8.width, StatusLabel( - label: widget.model.status?.name ?? "", - textColor: AColors.getRequestStatusTextColor(widget.model.status?.value ?? 0), - backgroundColor: AColors.getRequestStatusColor(widget.model.status?.value ?? 0)), + label: gasRefillModel.status?.name ?? "", + textColor: AColors.getRequestStatusTextColor(gasRefillModel.status?.value ?? 0), + backgroundColor: AColors.getRequestStatusColor(gasRefillModel.status?.value ?? 0)), 8.height, context.translation.gasRefillRequest.heading5(context), 8.height, ///TBD - context.translation.gasRequest.bodyText(context), - '${context.translation.cylinderSize}: ${widget.model.gazRefillDetails[0].cylinderSize.value}'.bodyText(context), - '${context.translation.site}: ${widget.model.site.name}'.bodyText(context), + context.translation.gasRequest.bodyText(context), + '${context.translation.cylinderSize}: ${gasRefillModel.gazRefillDetails[0].cylinderSize.value}'.bodyText(context), + '${context.translation.site}: ${gasRefillModel.site.name}'.bodyText(context), ], ), 1.width.expanded, Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ - if (_userProvider.user.type == UsersTypes.engineer && (widget.model.status?.value ?? 0) != 2) + if (_userProvider.user.type == UsersTypes.engineer && (gasRefillModel.status?.value ?? 0) != 2) CircleAvatar( radius: 25, backgroundColor: AppColor.neutral30, @@ -118,13 +130,13 @@ class _GasRefillDetailsPageState extends State { ), ).onPress( () async { - _model?.fromGasRefillModel(widget.model); + _model?.fromGasRefillModel(gasRefillModel); // setState(() {}); Navigator.push( context, MaterialPageRoute( builder: (context) => RequestGasRefill( - gasRefillModel: widget.model, + gasRefillModel: gasRefillModel, ), ), ).then((value) { @@ -135,7 +147,7 @@ class _GasRefillDetailsPageState extends State { setState(() {}); }, ), - Text(widget.model.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), + Text(gasRefillModel.startDate?.toServiceRequestCardFormat ?? "", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))), ], ) ], @@ -143,8 +155,8 @@ class _GasRefillDetailsPageState extends State { 8.height, const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1), 8.height, - '${context.translation.requestedQuantity}: ${widget.model.gazRefillDetails[0].requestedQty}'.bodyText(context), - '${context.translation.deliveredQuantity}: ${widget.model.gazRefillDetails[0].deliverdQty}'.bodyText(context), + '${context.translation.requestedQuantity}: ${gasRefillModel.gazRefillDetails[0].requestedQty}'.bodyText(context), + '${context.translation.deliveredQuantity}: ${gasRefillModel.gazRefillDetails[0].deliverdQty}'.bodyText(context), 8.height, ], ).paddingAll(16), @@ -173,7 +185,7 @@ class _GasRefillDetailsPageState extends State { color: AppColor.neutral50.withOpacity(.6), ), ).expanded, - SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 24 * AppStyle.getScaleFactor(context), color: AppColor.primary70), + SvgPicture.asset("assets/images/comment_send.svg", width: 24 * AppStyle.getScaleFactor(context), height: 20 * AppStyle.getScaleFactor(context), color: AppColor.primary70), ], ), ) @@ -202,6 +214,6 @@ class _GasRefillDetailsPageState extends State { ).paddingOnly(bottom: 16, start: 16, end: 16)) .onPress(() {}), ], - ).toShadowContainer(context).paddingAll(16); + ).toShadowContainer(context, padding: 0); } }