default provider
Some checks failed
Build and Release FLUX (Multi-Platform) / build-android (push) Successful in 1m59s
Build and Release FLUX (Multi-Platform) / build-web (push) Successful in 1m22s
Build and Release FLUX (Multi-Platform) / build-windows (push) Has been cancelled

This commit is contained in:
2026-06-02 13:12:21 +02:00
parent a51ac8fe7f
commit 3210b4fcfa
12 changed files with 435 additions and 170 deletions

View File

@@ -2,8 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flux/core/widgets/shared_forms/model_section.dart';
import 'package:flux/features/master_data/providers/blocs/provider_list_cubit.dart';
import 'package:flux/features/master_data/providers/models/provider_model.dart';
import 'package:flux/features/master_data/providers/models/provider_role.dart';
import 'package:flux/features/master_data/providers/models/provider_model_extensions.dart';
import 'package:flux/features/operations/blocs/operation_form_cubit.dart';
import 'package:flux/features/operations/models/operation_model.dart';
@@ -23,34 +22,6 @@ class OperationDetailsSection extends StatelessWidget {
required this.durationQuickPicks,
});
bool _doesProviderMatchOperationType(
ProviderModel provider,
String operationType,
) {
if (operationType == 'Altro') return true;
// Controlliamo che il fornitore abbia il ruolo specifico nel suo array
switch (operationType) {
case 'AL' || 'MNP':
return provider.roles.contains(ProviderRole.mobile);
case 'NIP' || 'FWA':
return provider.roles.contains(ProviderRole.landline);
case 'UNICA':
return provider.roles.contains(ProviderRole.landline) ||
provider.roles.contains(ProviderRole.mobile);
case 'Energy':
return provider.roles.contains(ProviderRole.energy);
case 'Fin':
return provider.roles.contains(ProviderRole.financing);
case 'Entertainment':
return provider.roles.contains(ProviderRole.entertainment);
case 'TELEPASS':
return provider.roles.contains(ProviderRole.telepass);
default:
return true;
}
}
void _showProviderModal(BuildContext context, String operationType) {
final OperationFormCubit cubit = context.read<OperationFormCubit>();
showModalBottomSheet(
@@ -92,14 +63,9 @@ class OperationDetailsSection extends StatelessWidget {
return const Center(child: CircularProgressIndicator());
}
// Prendiamo i provider e li filtriamo per ruolo e per stato attivo
// 🥷 IL TOCCO DEL NINJA: Filtriamo usando direttamente l'Extension sul Modello!
final filteredProviders = state.providers.where((p) {
final isMatch = _doesProviderMatchOperationType(
p,
operationType,
);
return isMatch &&
p.isActive; // Mostriamo solo quelli attivi!
return p.supportsOperation(operationType) && p.isActive;
}).toList();
if (filteredProviders.isEmpty) {