uff
This commit is contained in:
@@ -14,9 +14,9 @@ import 'package:flux/features/tickets/models/ticket_model.dart';
|
||||
import 'package:flux/core/widgets/shared_forms/staff_section.dart';
|
||||
import 'package:flux/features/tickets/models/ticket_status_extension.dart';
|
||||
import 'package:flux/features/tickets/ui/ticket_timeline_section.dart';
|
||||
import 'package:flux/features/tickets/ui/ticket_workspace_screen.dart';
|
||||
import 'package:flux/features/tickets/utils/ticket_pdf_service.dart';
|
||||
import 'package:flux/features/tracking/blocs/tracking_cubit.dart';
|
||||
import 'package:flux/features/tracking/data/tracking_repository.dart';
|
||||
import 'package:flux/features/tracking/models/tracking_model.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:printing/printing.dart';
|
||||
@@ -300,6 +300,83 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
ticket.id == null ? 'Nuova Scheda Assistenza' : 'Modifica Scheda',
|
||||
),
|
||||
actions: [
|
||||
BlocBuilder<TicketFormCubit, TicketFormState>(
|
||||
builder: (context, state) {
|
||||
final ticket = state.ticket;
|
||||
|
||||
// Se il ticket non è ancora salvato, niente azioni rapide
|
||||
if (ticket.id == null || ticket.id!.isEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
// CONDIZIONE A: Da iniziare
|
||||
if (ticket.ticketStatus == TicketStatus.open ||
|
||||
ticket.ticketStatus == TicketStatus.inProgress) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 16.0,
|
||||
vertical: 8.0,
|
||||
),
|
||||
child: FilledButton.icon(
|
||||
style: FilledButton.styleFrom(
|
||||
backgroundColor:
|
||||
Colors.amber.shade700, // Colore Action
|
||||
),
|
||||
onPressed: () {
|
||||
final currentUserId = GetIt.I
|
||||
.get<SessionCubit>()
|
||||
.state
|
||||
.currentStaffMember!
|
||||
.id!;
|
||||
final currentUserName = GetIt.I
|
||||
.get<SessionCubit>()
|
||||
.state
|
||||
.currentStaffMember!
|
||||
.name;
|
||||
|
||||
context.read<TicketFormCubit>().takeInCharge(
|
||||
staffId: currentUserId,
|
||||
staffName: currentUserName,
|
||||
);
|
||||
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (_) =>
|
||||
TicketWorkspaceScreen(ticket: ticket),
|
||||
),
|
||||
);
|
||||
},
|
||||
icon: const Icon(Icons.play_arrow, color: Colors.white),
|
||||
label: const Text(
|
||||
'Prendi in Carico',
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
// CONDIZIONE B: Già in lavorazione
|
||||
else if (ticket.ticketStatus == TicketStatus.inProgress) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
horizontal: 16.0,
|
||||
vertical: 8.0,
|
||||
),
|
||||
child: FilledButton.icon(
|
||||
onPressed: () {
|
||||
// Naviga direttamente alla schermata di lavorazione
|
||||
// Navigator.push(context, MaterialPageRoute(builder: (_) => TicketWorkspaceScreen(ticket: ticket)));
|
||||
},
|
||||
icon: const Icon(Icons.handyman),
|
||||
label: const Text('Vai a Lavorazione'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// Se è chiuso o in altri stati strani, nascondiamo il bottone
|
||||
return const SizedBox.shrink();
|
||||
},
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(right: 16.0),
|
||||
child: Chip(
|
||||
@@ -807,10 +884,8 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
children: [
|
||||
BlocProvider(
|
||||
create: (context) => TrackingCubit(
|
||||
repo: GetIt.I.get<TrackingRepository>(),
|
||||
parentId: ticket.id!,
|
||||
parentType: TrackingParentType.ticket,
|
||||
companyId: ticket.companyId,
|
||||
),
|
||||
child: BlocBuilder<TrackingCubit, TrackingState>(
|
||||
builder: (context, state) {
|
||||
@@ -826,7 +901,11 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
context.read<TrackingCubit>().addManualNote(
|
||||
message,
|
||||
isInternal,
|
||||
// staffId: currentStaffId,
|
||||
staffId: GetIt.I
|
||||
.get<SessionCubit>()
|
||||
.state
|
||||
.currentStaffMember
|
||||
?.id,
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user