added singleUserMode and removed StaffSection from forms
This commit is contained in:
@@ -12,37 +12,36 @@ import 'ticket_form_state.dart';
|
||||
class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
final TicketRepository _repository = GetIt.I.get<TicketRepository>();
|
||||
final SessionCubit _sessionCubit = GetIt.I.get<SessionCubit>();
|
||||
final StaffMemberModel? _createdBy;
|
||||
|
||||
TicketFormCubit({StaffMemberModel? createdBy})
|
||||
// Costruttore: prepariamo subito il ticket base con i dati di chi lo crea
|
||||
TicketFormCubit({StaffMemberModel? createdBy, TicketModel? existingTicket})
|
||||
: super(
|
||||
// Inizializziamo con un ticket vuoto di default
|
||||
TicketFormState(
|
||||
ticket: TicketModel.empty().copyWith(
|
||||
createdById: createdBy?.id,
|
||||
createdByName: createdBy?.name,
|
||||
),
|
||||
// Se c'è un ticket esistente usa quello, ALTRIMENTI ne crea uno vuoto
|
||||
// e ci stampa subito il nome del creatore!
|
||||
ticket:
|
||||
existingTicket ??
|
||||
TicketModel.empty().copyWith(
|
||||
createdById: createdBy?.id,
|
||||
createdByName: createdBy?.name,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
/// 1. INIZIALIZZAZIONE (Se stiamo modificando un ticket esistente)
|
||||
/// 1. INIZIALIZZAZIONE
|
||||
Future<void> initForm({String? id, TicketModel? existingTicket}) async {
|
||||
if (existingTicket != null) {
|
||||
// SCENARIO 1 (App Native / Navigazione interna Web):
|
||||
// Abbiamo l'oggetto intero passato via 'extra'. Lo mostriamo all'istante!
|
||||
// SCENARIO 1: Abbiamo il ticket intero passato via record
|
||||
emit(
|
||||
state.copyWith(ticket: existingTicket, status: TicketFormStatus.ready),
|
||||
);
|
||||
} else if (id != null) {
|
||||
// SCENARIO 2 (Web Refresh o Link condiviso):
|
||||
// L'utente ha premuto F5 su /tickets/form/123. L'extra è andato perso, ma abbiamo l'ID!
|
||||
emit(
|
||||
state.copyWith(status: TicketFormStatus.loading),
|
||||
); // Mostriamo uno spinner
|
||||
// SCENARIO 2: QR CODE o Web Refresh! (Hai solo l'ID)
|
||||
emit(state.copyWith(status: TicketFormStatus.loading));
|
||||
|
||||
try {
|
||||
final fetchedTicket = await _repository.getTicketById(
|
||||
id,
|
||||
); // Lo scarichiamo!
|
||||
// Boom! Lo scarica dal database in tempo reale
|
||||
final fetchedTicket = await _repository.getTicketById(id);
|
||||
emit(
|
||||
state.copyWith(ticket: fetchedTicket, status: TicketFormStatus.ready),
|
||||
);
|
||||
@@ -55,19 +54,17 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// SCENARIO 3 (Nuovo Ticket):
|
||||
// È un nuovo ticket! Inseriamo i default base (Azienda, Negozio, Creatore)
|
||||
// SCENARIO 3: Nuovo Ticket
|
||||
final currentStore = _sessionCubit.state.currentStore;
|
||||
final companyId = _sessionCubit.state.company?.id ?? '';
|
||||
|
||||
final newTicket = TicketModel.empty().copyWith(
|
||||
// IL TRUCCO È QUI: Usiamo `state.ticket` invece di `TicketModel.empty()`.
|
||||
// `state.ticket` HA GIÀ i dati di 'createdBy' settati nel costruttore!
|
||||
final newTicket = state.ticket.copyWith(
|
||||
companyId: companyId,
|
||||
storeId: currentStore?.id,
|
||||
createdById: createdBy.id,
|
||||
createdByName: _createdBy.name,
|
||||
// Impostiamo lo stato iniziale
|
||||
ticketStatus: TicketStatus.open,
|
||||
ticketType: TicketType.repair, // Default
|
||||
ticketStatus: TicketStatus.open, // <-- O il tuo status di default
|
||||
ticketType: TicketType.repair,
|
||||
);
|
||||
|
||||
emit(state.copyWith(ticket: newTicket, status: TicketFormStatus.ready));
|
||||
|
||||
Reference in New Issue
Block a user