import 'package:flutter/material.dart';
import 'package:kmobile/widgets/bank_logos.dart';
import 'package:kmobile/data/models/beneficiary.dart';
import 'package:kmobile/features/fund_transfer/screens/fund_transfer_amount_screen.dart';
import '../../../l10n/app_localizations.dart';
import '../../../di/injection.dart';
import 'package:kmobile/api/services/beneficiary_service.dart';
import 'package:shimmer/shimmer.dart';

class FundTransferBeneficiaryScreen extends StatefulWidget {
  final String creditAccountNo;
  final String remitterName;
  final bool isOwnBank;
  const FundTransferBeneficiaryScreen(
      {super.key,
      required this.creditAccountNo,
      required this.remitterName,
      required this.isOwnBank});

  @override
  State<FundTransferBeneficiaryScreen> createState() =>
      _FundTransferBeneficiaryScreenState();
}

class _FundTransferBeneficiaryScreenState
    extends State<FundTransferBeneficiaryScreen> {
  var service = getIt<BeneficiaryService>();
  bool _isLoading = true;
  List<Beneficiary> _beneficiaries = [];

  @override
  void initState() {
    super.initState();
    _loadBeneficiaries();
  }

  Future<void> _loadBeneficiaries() async {
    final data = await service.fetchBeneficiaryList();
    setState(() {
      _beneficiaries = data
          .where((b) => widget.isOwnBank
              ? b.bankName!.toLowerCase().contains('kangra central')
              : !b.bankName!.toLowerCase().contains('kangra central'))
          .toList();
      _isLoading = false;
    });
  }

  Widget _buildShimmerList() {
    return ListView.builder(
      itemCount: 6,
      itemBuilder: (context, index) => Shimmer.fromColors(
        baseColor: Colors.grey.shade300,
        highlightColor: Colors.grey.shade100,
        child: ListTile(
          leading: const CircleAvatar(
            radius: 24,
            backgroundColor: Colors.white,
          ),
          title: Container(
            height: 16,
            color: Colors.white,
            margin: const EdgeInsets.symmetric(vertical: 4),
          ),
          subtitle: Container(
            height: 14,
            color: Colors.white,
            margin: const EdgeInsets.symmetric(vertical: 4),
          ),
        ),
      ),
    );
  }

  Widget _buildBeneficiaryList() {
    if (_beneficiaries.isEmpty) {
      return Center(
          child: Text(AppLocalizations.of(context).noBeneficiaryFound));
    }
    return ListView.builder(
      itemCount: _beneficiaries.length,
      itemBuilder: (context, index) {
        final beneficiary = _beneficiaries[index];
        return ListTile(
          leading: CircleAvatar(
            radius: 24,
            backgroundColor: Colors.transparent,
            child: getBankLogo(beneficiary.bankName, context),
          ),
          title: Text(beneficiary.name),
          subtitle: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(beneficiary.accountNo),
              if (beneficiary.bankName != null &&
                  beneficiary.bankName!.isNotEmpty)
                Text(
                  beneficiary.bankName!,
                  style: TextStyle(fontSize: 12, color: Colors.grey[600]),
                ),
            ],
          ),
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => FundTransferAmountScreen(
                  debitAccountNo: widget.creditAccountNo,
                  creditBeneficiary: beneficiary,
                  remitterName: widget.remitterName,
                  isOwnBank: widget.isOwnBank,
                ),
              ),
            );
          },
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(AppLocalizations.of(context).beneficiaries),
      ),
      body: _isLoading ? _buildShimmerList() : _buildBeneficiaryList(),
    );
  }
}
