// ignore_for_file: must_be_immutable

import 'package:flutter/material.dart';
import 'package:yoshi_papas_app/views/categoria_producto/categoria_producto_screen.dart';
import 'package:yoshi_papas_app/views/pedido/pedido_screen.dart';
import 'package:yoshi_papas_app/views/producto/producto_screen.dart';
import 'package:yoshi_papas_app/views/sucursal/sucursal_screen.dart';
import 'package:yoshi_papas_app/views/variable/variable_screen.dart';
import 'package:yoshi_papas_app/views/venta/venta_screen.dart';
import 'package:provider/provider.dart';
import '../themes/themes.dart';
import '../viewmodels/login_view_model.dart';
import '../views/descuento/descuento_screen.dart';
import 'widgets_components.dart';

class AppDrawer extends StatelessWidget {
  AppDrawer({super.key});

  Future<bool> _showExitConfirmationDialog(BuildContext context) async {
    bool shouldPop = false;
    await showDialog(
      context: context,
      builder: (context) => AlertDialog(
        surfaceTintColor: AppTheme.secondary,
        title: const Text('¿Cerrar sesión?'),
        content: const Text('¿Estás seguro de que quieres cerrar la sesión?'),
        actions: [
          TextButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: const Text('Cancelar', style: TextStyle(color: Colors.red)),
          ),
          TextButton(
            onPressed: () {
              Navigator.pop(context);
              Navigator.pop(context);
              Provider.of<LoginViewModel>(context, listen: false).logOut();
              Navigator.of(context)
                  .pushNamedAndRemoveUntil('main', (route) => false);
            },
            child: const Text('Aceptar'),
          ),
        ],
      ),
    );
    return shouldPop;
  }

  @override
  Widget build(BuildContext context) {
    return Drawer(
      surfaceTintColor: Colors.white,
      backgroundColor: Colors.white,
      child: Column(
        children: [
          Container(
            width: double.infinity,
            decoration: BoxDecoration(
              color: AppTheme.primary,
            ),
            padding: EdgeInsets.only(
              top: MediaQuery.of(context).padding.top,
            ),
            child: const Column(
              children: [
                Padding(
                  padding: EdgeInsets.all(8.0),
                  child: Image(
                    image: AssetImage('assets/JoshiLogoHorizontal.png'),
                    height: 150,
                  ),
                ),
                SizedBox(
                  height: 10,
                ),
                SizedBox(
                  height: 10,
                ),
              ],
            ),
          ),
          // HEADER
          Expanded(
            child: ListView(
              children: [
                ListTile(
                  leading: circulo(const Icon(Icons.restaurant_menu)),
                  title: const Text('Pedidos'),
                  onTap: () => {
                    Navigator.pop(context),
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => const PedidoScreen(),
                      ),
                    ),
                  },
                ),
                ListTile(
                  leading: circulo(const Icon(Icons.menu_book_rounded)),
                  title: const Text('Productos'),
                  onTap: () => {
                    Navigator.pop(context),
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => ProductoScreen(),
                      ),
                    ),
                  },
                ),
                ListTile(
                  leading:
                      circulo(const Icon(Icons.format_list_bulleted_rounded)),
                  title: const Text('Categoría Producto'),
                  onTap: () => {
                    Navigator.pop(context),
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => CategoriaProductoScreen(),
                      ),
                    ),
                  },
                ),
                ListTile(
                  leading: circulo(const Icon(Icons.receipt_long_outlined)),
                  title: const Text('Pedidos Por Día'),
                  onTap: () => {
                    Navigator.pop(context),
                    Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => VentaScreen(),
                      ),
                    ),
                  },
                ),
                ExpansionTile(
                  leading: circulo(const Icon(Icons.admin_panel_settings)),
                  title: const Text('Administración'),
                  children: [
                    ListTile(
                      leading: circulo(const Icon(Icons.discount)),
                      title: const Text('Descuentos'),
                      onTap: () => {
                        Navigator.pop(context),
                        Navigator.of(context).push(
                          MaterialPageRoute(
                            builder: (context) => DescuentoScreen(),
                          ),
                        ),
                      },
                    ),
                    ListTile(
                      leading: circulo(const Icon(Icons.discount)),
                      title: const Text('Variables'),
                      onTap: () => {
                        Navigator.pop(context),
                        Navigator.of(context).push(
                          MaterialPageRoute(
                            builder: (context) => VariablesScreen(),
                          ),
                        ),
                      },
                    ),
                    ListTile(
                      leading: circulo(const Icon(Icons.storefront_outlined)),
                      title: const Text('Sucursales'),
                      onTap: () => {
                        Navigator.pop(context),
                        Navigator.of(context).push(
                          MaterialPageRoute(
                            builder: (context) => SucursalesPage(),
                          ),
                        ),
                      },
                    ),
                  ],
                ),
              ],
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(bottom: 10),
            child: Align(
              alignment: Alignment.bottomCenter,
              child: Text(
                'v1.24.10.09+1',
                style: const TextStyle(fontWeight: FontWeight.w300),
              ),
            ),
          ),
        ],
      ),
    );
  }
}
