import 'package:flutter/material.dart';
import 'package:quickalert/quickalert.dart';
import '../Service/api_service.dart';
import '../Model/penitipan_model.dart';

class PenitipanFormSheet extends StatefulWidget {
  final int lokerId;
  final String? title;
  final String? buttonText;
  final void Function(PenitipanModel result)? onSuccess;

  const PenitipanFormSheet({
    Key? key,
    required this.lokerId,
    this.title,
    this.buttonText,
    this.onSuccess,
  }) : super(key: key);

  @override
  _PenitipanFormSheetState createState() => _PenitipanFormSheetState();
}

class _PenitipanFormSheetState extends State<PenitipanFormSheet> {
  final _formKey = GlobalKey<FormState>();
  final TextEditingController _userController = TextEditingController();
  bool isSubmitting = false;

  Future<void> _submit() async {
    if (!_formKey.currentState!.validate()) return;

    setState(() {
      isSubmitting = true;
    });

    try {
      // Kirim penitipan
      PenitipanModel result = await ApiService.kirimPenitipan(
        user: _userController.text,
        lokerId: widget.lokerId,
      );

      widget.onSuccess?.call(result);

      // Tampilkan popup sukses jika penitipan berhasil
      await QuickAlert.show(
        context: context,
        type: QuickAlertType.success,
        title: 'Berhasil!',
        text: 'Penitipan berhasil dikirim.',
        onConfirmBtnTap: () {
          Navigator.of(context).pop();
          Navigator.of(context).pop(); // Tutup popup setelah tombol konfirmasi
        },
      );

    } catch (e) {
      // Tampilkan popup error jika ada kegagalan
      await QuickAlert.show(
        context: context,
        type: QuickAlertType.error,
        title: 'Gagal',
        text: 'Gagal mengirim penitipan: $e',
        onConfirmBtnTap: () {
          Navigator.of(context).pop();
          Navigator.of(context).pop(); // Tutup popup setelah tombol konfirmasi
        },
      );
    } finally {
      setState(() {
        isSubmitting = false;
      });
    }
  }

  @override
  void dispose() {
    _userController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    final title = widget.title ?? 'Form Penitipan Loker ${widget.lokerId}';
    final buttonText = widget.buttonText ?? 'Kirim Penitipan';

    return Padding(
      padding: EdgeInsets.only(
        bottom: MediaQuery.of(context).viewInsets.bottom,
        left: 16,
        right: 16,
        top: 24,
      ),
      child: SingleChildScrollView(
        child: Form(
          key: _formKey,
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text(title, style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
              SizedBox(height: 16),
              TextFormField(
                controller: _userController,
                decoration: InputDecoration(labelText: 'Nama Pengguna'),
                validator: (value) =>
                    value == null || value.isEmpty ? 'Masukkan nama pengguna' : null,
              ),
              SizedBox(height: 20),

              // Tombol submit penitipan
              isSubmitting
                ? CircularProgressIndicator()
                : Row(
                    children: [
                      Expanded(
                        child: ElevatedButton(
                          onPressed: _submit,
                          child: Text(buttonText),
                        ),
                      ),
                      // SizedBox(width: 12),
                      // Expanded(
                      //   child: ElevatedButton.icon(
                      //     onPressed: () async {
                      //       try { 
                      //         bool success = await ApiService.updateLokerStatus(widget.lokerId, 'servis');
                      //         if (success) {
                      //           Navigator.of(context).pop();
                      //           ScaffoldMessenger.of(context).showSnackBar(
                      //             SnackBar(content: Text("Status loker diubah menjadi 'servis'")),
                      //           );
                      //         }
                      //       } catch (e) {
                      //         Navigator.of(context).pop();
                      //         ScaffoldMessenger.of(context).showSnackBar(
                      //           SnackBar(content: Text("Gagal ubah status: $e")),
                      //         );
                      //       }
                      //     },
                      //     icon: Icon(Icons.build),
                      //     label: Text('Servis'),
                      //     style: ElevatedButton.styleFrom(backgroundColor: Colors.orange),
                      //   ),
                      // ),
                    ],
                  ),

              SizedBox(height: 16),
            ],
          ),
        ),
      ),
    );
  }
}
