a
This commit is contained in:
@@ -13,7 +13,11 @@ import 'package:flux/features/tickets/blocs/ticket_form_state.dart';
|
||||
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/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';
|
||||
|
||||
@@ -409,7 +413,11 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
return Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(child: Column(children: [_cardAnagrafica(ticket)])),
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [_cardTimeline(ticket), _cardAnagrafica(ticket)],
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 24),
|
||||
Expanded(
|
||||
child: Column(
|
||||
@@ -441,7 +449,11 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
const SizedBox(width: 24),
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [_cardDettagli(ticket), _cardCosti(ticket)],
|
||||
children: [
|
||||
_cardTimeline(ticket),
|
||||
_cardDettagli(ticket),
|
||||
_cardCosti(ticket),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
@@ -451,6 +463,7 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
_cardTimeline(ticket),
|
||||
_cardAnagrafica(ticket),
|
||||
_cardDispositivi(ticket),
|
||||
_cardDettagli(ticket),
|
||||
@@ -461,7 +474,7 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
// --- LE 5 CARD (MODULARIZZATE E COLORATE) ---
|
||||
// --- LE 6 CARD (MODULARIZZATE E COLORATE) ---
|
||||
|
||||
Widget _cardAnagrafica(TicketModel ticket) {
|
||||
return _buildCard(
|
||||
@@ -781,6 +794,49 @@ class _TicketFormScreenState extends State<TicketFormScreen> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _cardTimeline(TicketModel ticket) {
|
||||
// Se il ticket è nuovo (non ha ancora un ID salvato a DB), nascondiamo la timeline
|
||||
if (ticket.id == null || ticket.id!.isEmpty) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
return _buildCard(
|
||||
title: 'Timeline & Note',
|
||||
icon: Icons.history,
|
||||
themeColor: Colors.blueGrey,
|
||||
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) {
|
||||
if (state.isLoading && state.logs.isEmpty) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
|
||||
return TicketTimelineSection(
|
||||
logs: state.logs,
|
||||
onAddNote: (message, isInternal) {
|
||||
// Recupera l'ID dello staff loggato dal tuo auth state
|
||||
// final currentStaffId = ...
|
||||
context.read<TrackingCubit>().addManualNote(
|
||||
message,
|
||||
isInternal,
|
||||
// staffId: currentStaffId,
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
// --- WIDGET BASE PER LA CARD ---
|
||||
Widget _buildCard({
|
||||
required String title,
|
||||
|
||||
Reference in New Issue
Block a user