import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flux/features/services/blocs/services_cubit.dart'; import 'package:flux/features/services/models/energy_service_model.dart'; import 'package:flux/features/services/models/service_model.dart'; class ServiceFormScreen extends StatefulWidget { final ServiceModel? initialService; // Se nullo, è un nuovo inserimento const ServiceFormScreen({super.key, this.initialService}); @override State createState() => _ServiceFormScreenState(); } class _ServiceFormScreenState extends State { late ServiceModel currentService; @override void initState() { super.initState(); // Se passiamo un servizio esistente lo carichiamo, altrimenti ne creiamo uno "vuoto" currentService = widget.initialService ?? ServiceModel( storeId: 'ID_NEGOZIO_QUI', // Poi lo prenderai dal profilo utente number: '', energyServices: const [], finServices: const [], entertainmentServices: const [], ); } // Metodo generico per aggiungere un servizio energia void _addEnergy() { setState(() { final newList = List.from(currentService.energyServices)..add( EnergyServiceModel( type: EnergyType.luce, // Default expiration: DateTime.now().add(const Duration(days: 365)), providerId: '', // Lo sceglierà l'utente ), ); currentService = currentService.copyWith(energyServices: newList); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( widget.initialService == null ? "Nuova Pratica" : "Modifica", ), ), body: SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( children: [ // --- SEZIONE DATI GENERALI --- TextField( decoration: const InputDecoration(labelText: "Numero Pratica"), onChanged: (v) => currentService = currentService.copyWith(number: v), ), const Divider(height: 32), // --- SEZIONE ENERGY --- _SectionHeader( title: "Energia (Luce/Gas)", onAdd: _addEnergy, icon: Icons.electric_bolt, ), ...currentService.energyServices.asMap().entries.map((entry) { int idx = entry.key; var item = entry.value; return Card( child: ListTile( title: Text( "${item.type.name.toUpperCase()} - Scadenza: ${item.expiration.year}", ), trailing: IconButton( icon: const Icon(Icons.delete, color: Colors.red), onPressed: () { setState(() { final newList = List.from( currentService.energyServices, )..removeAt(idx); currentService = currentService.copyWith( energyServices: newList, ); }); }, ), ), ); }), const SizedBox(height: 40), // --- BOTTONE SALVA --- ElevatedButton( style: ElevatedButton.styleFrom( minimumSize: const Size.fromHeight(50), ), onPressed: () { context.read().addService(currentService); Navigator.pop(context); }, child: const Text("SALVA TUTTO"), ), ], ), ), ); } } class _SectionHeader extends StatelessWidget { final String title; final VoidCallback onAdd; final IconData icon; const _SectionHeader({ required this.title, required this.onAdd, required this.icon, }); @override Widget build(BuildContext context) { return Row( children: [ Icon(icon, color: Colors.orange), const SizedBox(width: 8), Text( title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const Spacer(), IconButton( onPressed: onAdd, icon: const Icon(Icons.add_circle, color: Colors.green, size: 30), ), ], ); } }