import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; import 'package:uco_mobile_poc/app/core/constants/app_assets.dart'; import 'package:uco_mobile_poc/app/core/constants/form_field_constants.dart'; import 'package:uco_mobile_poc/app/core/constants/translation_keys.dart'; import 'package:uco_mobile_poc/app/custom_widgets/Fields/input_field.dart'; import 'package:uco_mobile_poc/app/custom_widgets/custom_app_bar.dart'; import 'package:uco_mobile_poc/app/custom_widgets/custom_no_record.dart'; import 'package:uco_mobile_poc/app/custom_widgets/custom_text.dart'; import 'package:uco_mobile_poc/app/models/u_recived_responce_model.dart'; import 'package:uco_mobile_poc/app/res/app_colors.dart'; import '../controllers/u_received_controller.dart'; class UReceivedView extends GetView { const UReceivedView({Key? key, this.showAppBar = true}) : super(key: key); final bool showAppBar; @override Widget build(BuildContext context) { String className = runtimeType.toString().split('.').last; controller.className = className; return Scaffold( appBar: showAppBar ? DashBoardAppBar( title: TranslationKeys.makeTranslation( TranslationKeys.textUReceived, ), onBackButtonPressed: () { Get.back(); }, ) : null, body: Obx(() { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 0), child: controller.depositAccountField = InputField( refKey: FormFieldConstants.instance().getFormKey( "${className}depositAccountField", ), controller: FormFieldConstants.instance().getController( "${className}depositAccountField", ), labelText: "Select Account", suffixIcon: const Icon(Icons.keyboard_arrow_down, size: 25), isDropDown: true, hintText: "Select account", dropDownType: DropDownType.SPECIAL, items: controller.allDepositAccounts, onItemSelected: (item) { controller.updateSelectedDeposit(item!); }, ), ), const SizedBox(height: 10), Padding( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10), child: Text( TranslationKeys.makeTranslation( TranslationKeys.textPendingRemittance, ), style: Theme.of(context).textTheme.bodyMedium, ), ), controller.uReceivedData.isNotEmpty ? Expanded( flex: 1, child: ListView.builder( itemCount: controller.uReceivedData.length, itemBuilder: (context, index) { UReceivedResponseData data = controller.uReceivedData[index]; return Padding( padding: const EdgeInsets.symmetric( vertical: 3.0, horizontal: 15.0, ), child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.all( Radius.circular(5.0), ), border: Border.all( color: AppColors.colorGrey350, width: 1.5, ), ), child: ExpansionTile( collapsedBackgroundColor: Colors.white, tilePadding: const EdgeInsets.symmetric( vertical: 0, horizontal: 10, ), dense: false, // onExpansionChanged: controller.toggleExpansion(), maintainState: true, expandedAlignment: Alignment.topLeft, expandedCrossAxisAlignment: CrossAxisAlignment.start, childrenPadding: const EdgeInsets.all(10), //tilePadding: EdgeInsets.all(8.0), collapsedShape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(5), ), // collapsedBackgroundColor: AppColors.colorGrey350, shape: const Border(), backgroundColor: AppColors.white, leading: Padding( padding: const EdgeInsets.only(top: 3.0), child: Text( "${data.drPcrCurrshort} ${data.sgtGntramt}", style: Theme.of(context).textTheme.bodyMedium ?.copyWith( color: AppColors.colorDialogBG, ), ), ), trailing: const Icon( Icons.keyboard_arrow_down_outlined, size: 25, color: AppColors.colorGrey700, ), title: Text( data.drmbmBkmstitle ?? "-", style: Theme.of(context).textTheme.labelMedium, ), children: [ Text( "${data.drPcrCurrshort} ${data.sgtGntramt}", style: Theme.of(context).textTheme.titleSmall ?.copyWith(color: AppColors.colorButton), ), const SizedBox(height: 5), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "Memo: ", style: Theme.of( context, ).textTheme.labelSmall, ), Expanded( child: Text( data.toString(), style: Theme.of( context, ).textTheme.labelSmall, maxLines: 2, overflow: TextOverflow.ellipsis, ), ), ], ), const SizedBox(height: 5), Row( children: [ Text( "Sent: ", style: Theme.of( context, ).textTheme.labelSmall, ), Text( data.drSgtGntrdate.toString(), style: Theme.of( context, ).textTheme.labelSmall, ), ], ), const SizedBox(height: 5), Text( "Expires Date: ${data.expSgtGntrdate} ", style: Theme.of(context).textTheme.labelSmall, ), const SizedBox(height: 5), Text( "Transaction-ID: ${data.sgtSentGntrnumber.toString()}${data.sgtSentNodeId}", style: Theme.of(context).textTheme.labelSmall, ), const SizedBox(height: 5), Text( "Sender: ${data.drmbmBkmstitle}", style: Theme.of(context).textTheme.labelSmall, ), const SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ InkWell( onTap: () { controller.reverseTransactionRequest( data.sgtSentGntrnumber, data.sgtSentNodeId, ); }, child: Column( children: [ SvgPicture.asset( AppAssets.ic_cross_option, height: 22, width: 22, ), const SizedBox(height: 5), CustomText( TranslationKeys.makeTranslation( TranslationKeys.textReverse, ), ), ], ), ), const SizedBox(width: 30), InkWell( onTap: () { controller.acceptTransaction(data); }, child: Column( children: [ SvgPicture.asset( AppAssets.ic_tick_option, height: 22, width: 22, ), const SizedBox(height: 5), CustomText( TranslationKeys.makeTranslation( TranslationKeys.textReceived, ), ), ], ), ), ], ), ], ), ), ); }, ), ) : const Center( child: CustomNoRecord( title: "No Record Found", description: "We couldn't find any activity at this moment", ), ), ], ); }), ); } }