import 'package:flutter/material.dart';
import 'package:kmobile/data/models/user.dart';
import 'package:kmobile/features/yojna/screens/apy_register_screen.dart';
import 'package:kmobile/l10n/app_localizations.dart';

class APYScreen extends StatefulWidget {
  final List<User> users;
  final int selectedIndex;
  const APYScreen({
    super.key,
    required this.users,
    required this.selectedIndex,
  });

  @override
  State<APYScreen> createState() => _APYScreenState();
}

class _APYScreenState extends State<APYScreen> {
  User? _selectedAccount;
  List<User> _filteredUsers = [];
  final _formKey = GlobalKey<FormState>();

  @override
  void initState() {
    super.initState();
    _filteredUsers = widget.users
        .where((user) => ['SA', 'SB', 'CA', 'CC'].contains(user.accountType))
        .toList();
        
    // Pre-fill the account number if possible
    if (widget.users.isNotEmpty && widget.selectedIndex < widget.users.length) {
      if (_filteredUsers.isNotEmpty) {
        if (_filteredUsers.contains(widget.users[widget.selectedIndex])) {
          _selectedAccount = widget.users[widget.selectedIndex];
        } else {
          _selectedAccount = _filteredUsers.first;
        }
      } else {
        _selectedAccount = widget.users[widget.selectedIndex];
      }
    } else {
      if (_filteredUsers.isNotEmpty) {
        _selectedAccount = _filteredUsers.first;
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    final l10n = AppLocalizations.of(context);
    return Scaffold(
      appBar: AppBar(
        title: Text(l10n.apyRegistration),
        centerTitle: false,
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              Card(
                elevation: 2,
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Text(
                    l10n.apyDescription,
                    style: Theme.of(context).textTheme.titleMedium,
                  ),
                ),
              ),
              const SizedBox(height: 16),
              Card(
                elevation: 2,
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      DropdownButtonFormField<User>(
                        value: _selectedAccount,
                        decoration: InputDecoration(
                          labelText: l10n.accountNumber,
                          border: const OutlineInputBorder(),
                          contentPadding: const EdgeInsets.symmetric(
                              vertical: 20, horizontal: 12),
                        ),
                        items: _filteredUsers.map((user) {
                          return DropdownMenuItem<User>(
                            value: user,
                            child: Text(user.accountNo.toString()),
                          );
                        }).toList(),
                        onChanged: (User? newUser) {
                          setState(() {
                            _selectedAccount = newUser;
                          });
                        },
                        validator: (value) {
                          if (value == null) {
                            return l10n.accountNumberRequired;
                          }
                          return null;
                        },
                      ),
                    ],
                  ),
                ),
              ),
              const SizedBox(height: 24),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    final mockData = {
                      "accountno": _selectedAccount?.accountNo ?? "50069506061",
                      "customerfirstname": "TAMANA",
                      "customermiddlename": "",
                      "customerlastname": "",
                      "availablebalance": "634000",
                      "customerdob": "06061998",
                      "emailid": "",
                      "gender": "F",
                      "married": "Y",
                      "nomineename": "shubham Kada",
                      "relationwithsubscriber": "S",
                      "mobilenumber": "",
                      "nomineeminor": "N",
                      "customerno": "30028309887",
                      "beneficaryofothersociatysecurityschemes": "N",
                      "whetherincometaxpayer": "N",
                      "customertitle": "02",
                      "aadharno": "",
                      "nameofspouse": "shubham kada",
                      "ageofjoining": "27",
                      "pensionamtoptedfor": "1000",
                      "montlycontributioncalculate": "90",
                      "collectionchannel": "1",
                      "subsequentContributionDebitDate": "02012026",
                      "secondnomineeminor": "N",
                      "secondnomineename": "shubham kad",
                      "secondrelationshipwithsubscriber": "",
                      "pincode": "176215",
                      "fatcacrsapplicable": "N",
                      "countryofbirth": "India",
                      "countryofcitizenship": "India",
                      "countryofresidencefortaxpurpose": "India",
                      "uspersonflag": "N",
                      "fatcadeclarationcount": "",
                      "documentevidencingcitizenshipflag": "",
                      "reasonfornoevidence": "",
                      "nameofdocumentforcitizenshipevidence": "",
                      "modeofcollection": "Transfer Voucher",
                      "contributionType": "C"
                    };

                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => APYRegisterScreen(initialData: mockData),
                      ),
                    );
                  }
                },
                style: ElevatedButton.styleFrom(
                  backgroundColor:
                      Theme.of(context).colorScheme.primaryContainer,
                  foregroundColor:
                      Theme.of(context).colorScheme.onPrimaryContainer,
                  minimumSize: const Size(double.infinity, 50),
                  elevation: 4,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(8),
                  ),
                ),
                child: Text(
                  l10n.proceedButton,
                  style: const TextStyle(
                      fontSize: 16, fontWeight: FontWeight.bold),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
