From 763c101f5848086336e540f9ed0d01605c28b288 Mon Sep 17 00:00:00 2001 From: Nilanjan Chakrabarti Date: Fri, 8 Aug 2025 15:43:08 +0530 Subject: [PATCH] Manage Beneficiary --- lib/api/services/beneficiary_service.dart | 12 ++--- lib/data/models/beneficiary.dart | 19 +++++++- lib/data/models/beneficiary_recieve.dart | 45 +++++++++++++++++++ lib/features/auth/screens/welcome_screen.dart | 9 ++-- .../screens/manage_beneficiaries_screen.dart | 15 +++---- .../dashboard/screens/dashboard_screen.dart | 4 +- 6 files changed, 83 insertions(+), 21 deletions(-) create mode 100644 lib/data/models/beneficiary_recieve.dart diff --git a/lib/api/services/beneficiary_service.dart b/lib/api/services/beneficiary_service.dart index 3021a2e..dfd64f7 100644 --- a/lib/api/services/beneficiary_service.dart +++ b/lib/api/services/beneficiary_service.dart @@ -103,20 +103,20 @@ class BeneficiaryService { return false; } - Future> fetchBeneficiaryList() async { + Future> fetchBeneficiaryList() async{ try { final response = await _dio.get( - "/api/beneficiaries/get", // replace with actual path - options: Options( + "/api/beneficiary/get", + options: Options( headers: { "Content-Type": "application/json", }, ), ); - + if (response.statusCode == 200) { - // Assuming API returns JSON array of beneficiaries - return response.data as List; + return Beneficiary.listFromJson(response.data); + } else { throw Exception("Failed to fetch beneficiaries"); } diff --git a/lib/data/models/beneficiary.dart b/lib/data/models/beneficiary.dart index 37a511a..b32f704 100644 --- a/lib/data/models/beneficiary.dart +++ b/lib/data/models/beneficiary.dart @@ -1,26 +1,35 @@ + + class Beneficiary { final String accountNo; final String accountType; final String name; final String ifscCode; - + final String? bankName; + final String? branchName; Beneficiary({ required this.accountNo, required this.accountType, required this.name, required this.ifscCode, + this.bankName, + this.branchName, }); factory Beneficiary.fromJson(Map json) { + print('=============================='); + print(json); return Beneficiary( accountNo: json['accountNo'] ?? '', accountType: json['accountType'] ?? '', name: json['name'] ?? '', ifscCode: json['ifscCode'] ?? '', + bankName: json['bankName'] ?? '', + branchName: json['branchName'] ?? '', ); } - + Map toJson() { return { 'accountNo': accountNo, @@ -30,6 +39,12 @@ class Beneficiary { }; } + static List listFromJson(List jsonList) { + final beneficiaryList = jsonList.map((beneficiary) => Beneficiary.fromJson(beneficiary)).toList(); + print(beneficiaryList); + return beneficiaryList; + } + @override String toString() { return 'Beneficiary(accountNo: $accountNo, accountType: $accountType, ifscCode: $ifscCode, name: $name)'; diff --git a/lib/data/models/beneficiary_recieve.dart b/lib/data/models/beneficiary_recieve.dart new file mode 100644 index 0000000..7de2674 --- /dev/null +++ b/lib/data/models/beneficiary_recieve.dart @@ -0,0 +1,45 @@ +class BeneficiaryRecieve { + final String accountNo; + final String accountType; + final String name; + final String ifscCode; + final String bankName; + final String branchName; + + + BeneficiaryRecieve({ + required this.accountNo, + required this.accountType, + required this.name, + required this.ifscCode, + required this.bankName, + required this.branchName, + }); + + factory BeneficiaryRecieve.fromJson(Map json) { + return BeneficiaryRecieve( + accountNo: json['account_no'] ?? '', + accountType: json['account_type'] ?? '', + name: json['name'] ?? '', + ifscCode: json['ifsc_code'] ?? '', + bankName: json['bank_name'] ?? '', + branchName: json['branch_name'] ?? '', + ); + } + + Map toJson() { + return { + 'account_no': accountNo, + 'account_type': accountType, + 'name': name, + 'ifsc_code' : ifscCode, + 'bank_name' : bankName, + 'branch_name' : branchName + }; + } + + @override + String toString() { + return 'ListBeneficiary(accountNo: $accountNo, accountType: $accountType, ifscCode: $ifscCode, name: $name, bankName: $bankName, branchName: $branchName)'; + } +} \ No newline at end of file diff --git a/lib/features/auth/screens/welcome_screen.dart b/lib/features/auth/screens/welcome_screen.dart index b6ad571..10cc05d 100644 --- a/lib/features/auth/screens/welcome_screen.dart +++ b/lib/features/auth/screens/welcome_screen.dart @@ -18,9 +18,12 @@ class _WelcomeScreenState extends State { super.initState(); // Automatically go to login after 6 seconds - Timer(const Duration(seconds: 6), () { - widget.onContinue(); - }); + // Timer(const Duration(seconds: 6), () { + + + // } + // ); + widget.onContinue(); } @override diff --git a/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart b/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart index d2b85c1..1ce2b6d 100644 --- a/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart +++ b/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; +import 'package:kmobile/data/models/beneficiary.dart'; import 'package:kmobile/features/beneficiaries/screens/add_beneficiary_screen.dart'; -import 'package:material_symbols_icons/material_symbols_icons.dart'; import '../../../l10n/app_localizations.dart'; import '../../../di/injection.dart'; import 'package:kmobile/api/services/beneficiary_service.dart'; @@ -103,7 +102,7 @@ class _ManageBeneficiariesScreen extends State { var service = getIt(); //final BeneficiaryService _service = BeneficiaryService(); bool _isLoading = true; - List _beneficiaries = []; + List _beneficiaries = []; @override void initState() { @@ -114,7 +113,7 @@ class _ManageBeneficiariesScreen extends State { Future _loadBeneficiaries() async { final data = await service.fetchBeneficiaryList(); setState(() { - _beneficiaries = data; + _beneficiaries = data ; _isLoading = false; }); } @@ -158,14 +157,14 @@ class _ManageBeneficiariesScreen extends State { radius: 24, backgroundColor: Theme.of(context).primaryColor.withOpacity(0.2), child: Text( - item['name'] != null && item['name'].isNotEmpty - ? item['name'][0].toUpperCase() + item.name.isNotEmpty + ? item.name[0].toUpperCase() : '?', style: const TextStyle(fontWeight: FontWeight.bold), ), ), - title: Text(item['name'] ?? 'Unknown'), - subtitle: Text(item['accountNumber'] ?? 'No account number'), + title: Text(item.name ?? 'Unknown'), + subtitle: Text(item.accountNo ?? 'No account number'), ); }, ); diff --git a/lib/features/dashboard/screens/dashboard_screen.dart b/lib/features/dashboard/screens/dashboard_screen.dart index 118cf6a..8dc1b59 100644 --- a/lib/features/dashboard/screens/dashboard_screen.dart +++ b/lib/features/dashboard/screens/dashboard_screen.dart @@ -202,7 +202,7 @@ class _DashboardScreenState extends State { backgroundColor:Theme.of(context).scaffoldBackgroundColor, automaticallyImplyLeading: false, title: Text( - AppLocalizations.of(context).kMobile, + AppLocalizations.of(context).kconnect, style: TextStyle( color: Theme.of(context).primaryColor, fontWeight: FontWeight.w500, @@ -482,7 +482,7 @@ class _DashboardScreenState extends State { MaterialPageRoute( builder: (context) => const FundTransferBeneficiaryScreen())); - }, disable: true), + }, disable: false), _buildQuickLink(Symbols.server_person, AppLocalizations.of(context).accountInfo, () { Navigator.push(