ticket refinements

This commit is contained in:
2026-06-02 11:52:31 +02:00
parent 7fad6ee02b
commit a51ac8fe7f
10 changed files with 155 additions and 66 deletions

View File

@@ -367,4 +367,22 @@ class TicketFormCubit extends Cubit<TicketFormState> {
);
}
}
Future<void> deleteTicket() async {
final currentTicket = state.ticket;
if (currentTicket.id == null || currentTicket.id!.isEmpty) return;
try {
await _repository.deleteTicket(currentTicket.id!);
emit(state.copyWith(status: TicketFormStatus.deleted));
} catch (e) {
emit(
state.copyWith(
status: TicketFormStatus.failure,
errorMessage: 'Errore durante l\'eliminazione: $e',
),
);
}
}
}

View File

@@ -2,7 +2,16 @@ import 'package:equatable/equatable.dart';
import 'package:flux/features/tickets/models/ticket_model.dart';
// Adatta gli import al tuo progetto!
enum TicketFormStatus { initial, ready, loading, saving, success, pop, failure }
enum TicketFormStatus {
initial,
ready,
loading,
saving,
success,
pop,
failure,
deleted,
}
class TicketFormState extends Equatable {
final TicketModel ticket;

View File

@@ -158,4 +158,19 @@ class TicketListCubit extends Cubit<TicketListState> {
// Opzionale: Se vuoi comunque riallinearti al server in modo silenzioso dopo l'animazione
// loadTickets(refresh: true);
}
Future<void> deleteTickets(List<TicketModel> tickets) async {
try {
for (final ticket in tickets) {
await _repository.deleteTicket(ticket.id!);
}
// Rimuoviamo i ticket localmente senza ricaricare tutto
final remainingTickets = state.tickets
.where((t) => !tickets.any((toDelete) => toDelete.id == t.id))
.toList();
emit(state.copyWith(tickets: remainingTickets, selectedTickets: {}));
} catch (e) {
emit(state.copyWith(errorMessage: e.toString()));
}
}
}