diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0fd43e2..b24b47c 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -25,11 +25,11 @@ - - - - - + + + + + diff --git a/lib/core/blocs/session/session_cubit.dart b/lib/core/blocs/session/session_cubit.dart index 3de0491..1dafd01 100644 --- a/lib/core/blocs/session/session_cubit.dart +++ b/lib/core/blocs/session/session_cubit.dart @@ -39,8 +39,18 @@ class SessionCubit extends Cubit { } try { + // 1. CHI È QUESTO UTENTE? (Vediamo se ha un profilo staff, che sia Invitato o Admin) + final staff = await _repository.getStaffMemberByUserId(user.id); // 1. Controllo Azienda - final company = await _repository.getCompanyByOwnerId(user.id); + CompanyModel? company; + if (staff != null) { + // L'utente esiste già nel sistema! Carichiamo l'azienda per cui lavora + company = await _repository.getCompanyById(staff.companyId); + } else { + // L'utente non ha profilo. Probabilmente è l'Admin che ha appena + // fatto Sign Up e sta iniziando l'Onboarding + company = await _repository.getCompanyByOwnerId(user.id); + } if (company == null) { return emit( state.copyWith( @@ -69,7 +79,6 @@ class SessionCubit extends Cubit { } // 3. Controllo Staff (Paziente Zero) - final staff = await _repository.getStaffMemberByUserId(user.id); if (staff == null) { return emit( state.copyWith( diff --git a/lib/core/data/core_repository.dart b/lib/core/data/core_repository.dart index 269bc05..4b6d148 100644 --- a/lib/core/data/core_repository.dart +++ b/lib/core/data/core_repository.dart @@ -28,6 +28,21 @@ class CoreRepository { } } + Future getCompanyById(String companyId) async { + try { + final response = await _supabase + .from('company') + .select() + .eq('id', companyId) + .maybeSingle(); + if (response == null) return null; + return CompanyModel.fromMap(response); + } catch (e) { + debugPrint('Errore recupero azienda per ID: $e'); + return null; + } + } + Future> getStoresByCompanyId(String companyId) async { try { final response = await _supabase