d
This commit is contained in:
@@ -125,7 +125,9 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
TicketStatus? status,
|
||||
String? request,
|
||||
String? targetSn,
|
||||
String? targetPassword,
|
||||
String? sourceSn,
|
||||
String? sourcePassword,
|
||||
String? alternativePhoneNumber,
|
||||
bool? hasCourtesyDevice,
|
||||
String? includedAccessories,
|
||||
@@ -135,6 +137,7 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
double? internalCost,
|
||||
String? assignedToId,
|
||||
String? assignedToName,
|
||||
WarrantyType? warrantyType,
|
||||
}) {
|
||||
emit(
|
||||
state.copyWith(
|
||||
@@ -143,6 +146,8 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
ticketStatus: status ?? state.ticket.ticketStatus,
|
||||
request: request ?? state.ticket.request,
|
||||
targetSn: targetSn ?? state.ticket.targetSn,
|
||||
targetPassword: targetPassword ?? state.ticket.targetPassword,
|
||||
sourcePassword: sourcePassword ?? state.ticket.sourcePassword,
|
||||
sourceSn: sourceSn ?? state.ticket.sourceSn,
|
||||
alternativePhoneNumber:
|
||||
alternativePhoneNumber ?? state.ticket.alternativePhoneNumber,
|
||||
@@ -156,6 +161,7 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
internalCost: internalCost ?? state.ticket.internalCost,
|
||||
assignedToId: assignedToId ?? state.ticket.assignedToId,
|
||||
assignedToName: assignedToName ?? state.ticket.assignedToName,
|
||||
warrantyType: warrantyType ?? state.ticket.warrantyType,
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -271,4 +277,45 @@ class TicketFormCubit extends Cubit<TicketFormState> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> pauseTicket({
|
||||
required TicketStatus newStatus,
|
||||
required String notes,
|
||||
}) async {
|
||||
final currentTicket = state.ticket;
|
||||
if (currentTicket.id == null || currentTicket.id!.isEmpty) return;
|
||||
|
||||
// 1. Usiamo lo stato esatto scelto dal tecnico
|
||||
final updatedTicket = currentTicket.copyWith(ticketStatus: newStatus);
|
||||
|
||||
try {
|
||||
await _repository.updateTicket(updatedTicket);
|
||||
|
||||
// 2. Componiamo un bel messaggio per la Timeline
|
||||
// Es: "Sospeso per: waitingForQuote. Note: Cliente in ferie"
|
||||
String timelineMessage = "Lavorazione sospesa (${newStatus.name}).";
|
||||
if (notes.isNotEmpty) {
|
||||
timelineMessage += " Note: $notes";
|
||||
}
|
||||
|
||||
await GetIt.I.get<TrackingRepository>().logQuickEvent(
|
||||
companyId: currentTicket.companyId,
|
||||
message: timelineMessage,
|
||||
type: TrackingType.statusChange,
|
||||
parentId: currentTicket.id!,
|
||||
parentType: TrackingParentType.ticket,
|
||||
staffId: currentTicket.assignedToId ?? '',
|
||||
isInternal: false,
|
||||
);
|
||||
|
||||
emit(state.copyWith(ticket: updatedTicket));
|
||||
} catch (e) {
|
||||
emit(
|
||||
state.copyWith(
|
||||
status: TicketFormStatus.failure,
|
||||
errorMessage: 'Errore durante la sospensione: $e',
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user