Enhance Provider Management: Update saveProvider method to handle store associations and add temporary store selection in ProviderFormSheet

This commit is contained in:
2026-04-17 10:12:39 +02:00
parent aa18b7dd1f
commit 11248b5bf3
4 changed files with 125 additions and 14 deletions

View File

@@ -105,14 +105,45 @@ class ProvidersCubit extends Cubit<ProvidersState> {
}
// Salvataggio/Update anagrafica (nuovo o modifica)
Future<void> saveProvider(ProviderModel provider) async {
Future<void> saveProvider(
ProviderModel provider,
List<String> selectedStoreIds,
) async {
emit(state.copyWith(isLoading: true));
// Assicuriamoci di settare la companyId prima di salvare
provider = provider.copyWith(companyId: _sessionBloc.state.company!.id);
try {
// 1. Salviamo l'anagrafica (upsert)
// Se è un nuovo provider, l'ID potrebbe essere generato qui dal DB
// Quindi carichiamo il risultato del salvataggio per avere l'ID
final response = await _repository.saveProvider(provider);
// Assumiamo che il saveProvider restituisca l'oggetto salvato con l'ID
final pId = provider.id ?? response.id;
// 2. Sincronizziamo i negozi
await _repository.syncProviderStores(pId!, selectedStoreIds);
// 3. Ricarichiamo tutto
await loadProviders(null);
} catch (e) {
emit(state.copyWith(isLoading: false, errorMessage: e.toString()));
}
}
Future<void> saveProviderWithStores(
ProviderModel provider,
List<String> storeIds,
) async {
emit(state.copyWith(isLoading: true));
try {
final providerWithCompanyId = provider.copyWith(
companyId: _sessionBloc.state.company!.id,
);
await _repository.saveProvider(providerWithCompanyId);
// Ricarichiamo la lista per vedere le modifiche
// 1. Salva l'anagrafica provider
await _repository.saveProvider(provider);
// 2. Sincronizza i negozi (la via più semplice è cancellare e reinserire
// o fare un confronto tra i presenti e i nuovi)
await _repository.syncProviderStores(provider.id!, storeIds);
await loadProviders(null);
} catch (e) {
emit(state.copyWith(isLoading: false, errorMessage: e.toString()));