import 'package:flutter/material.dart';

import 'package:provider/provider.dart';

import 'package:pshared/models/payment/methods/data.dart';
import 'package:pshared/models/payment/methods/type.dart';
import 'package:pshared/provider/recipient/pmethods.dart';

import 'package:pweb/pages/payment_methods/add/widget.dart';
import 'package:pweb/widgets/dialogs/confirmation_dialog.dart';

import 'package:pweb/generated/i18n/app_localizations.dart';


class PaymentConfigController {
  final BuildContext context;

  PaymentConfigController(this.context);

  Future<void> addMethod() async => showDialog<PaymentMethodData>(
    context: context,
    builder: (_) => const AddPaymentMethodDialog(),
  );

  Future<void> editMethod(PaymentMethod method) async {
    // TODO: implement edit functionality
  }

  Future<void> deleteMethod(PaymentMethod method) async {
    final methodsProvider = context.read<PaymentMethodsProvider>();
    final l10n = AppLocalizations.of(context)!;
    final confirmed = await showConfirmationDialog(
      context: context,
      title: l10n.delete,
      message: l10n.deletePaymentConfirmation,
      confirmLabel: l10n.delete,
    );
    if (confirmed) {
      methodsProvider.delete(method.id);
    }
  }

  void toggleEnabled(PaymentMethod method, bool value) {
    context.read<PaymentMethodsProvider>().setArchivedMethod(method: method, newIsArchived: value);
  }

  void makeMain(PaymentMethod method) {
    context.read<PaymentMethodsProvider>().makeMain(method);
  }

  void reorder(int oldIndex, int newIndex) {
    // TODO: rimplement on top of Indexable
    // context.read<PaymentMethodsProvider>().reorderMethods(oldIndex, newIndex);
  }
}
