onboarding completato

This commit is contained in:
2026-04-22 11:05:01 +02:00
parent 35ccd1487b
commit 46058d96c8
13 changed files with 211 additions and 120 deletions

View File

@@ -49,6 +49,8 @@ class SessionCubit extends Cubit<SessionState> {
onboardingStep: OnboardingStep.company,
),
);
} else {
emit(state.copyWith(company: company));
}
// 2. Controllo Negozi
@@ -62,6 +64,8 @@ class SessionCubit extends Cubit<SessionState> {
onboardingStep: OnboardingStep.store,
),
);
} else {
emit(state.copyWith(currentStore: stores.first));
}
// 3. Controllo Staff (Paziente Zero)

View File

@@ -1,6 +1,9 @@
import 'package:flutter/foundation.dart';
import 'package:flux/core/blocs/session/session_cubit.dart';
import 'package:flux/features/company/models/company_model.dart';
import 'package:flux/features/master_data/store/models/store_model.dart';
import 'package:flux/features/master_data/staff/models/staff_member_model.dart';
import 'package:get_it/get_it.dart';
// Importa i tuoi modelli...
import 'package:supabase_flutter/supabase_flutter.dart';
@@ -20,6 +23,7 @@ class CoreRepository {
if (response == null) return null;
return CompanyModel.fromMap(response);
} catch (e) {
debugPrint('Errore recupero azienda: $e');
throw Exception('Errore recupero azienda: $e');
}
}
@@ -35,6 +39,7 @@ class CoreRepository {
return (response as List).map((s) => StoreModel.fromMap(s)).toList();
} catch (e) {
debugPrint('Errore recupero negozi: $e');
throw Exception('Errore recupero negozi: $e');
}
}
@@ -50,6 +55,7 @@ class CoreRepository {
if (response == null) return null;
return StaffMemberModel.fromMap(response);
} catch (e) {
debugPrint('Errore recupero profilo staff: $e');
throw Exception('Errore recupero profilo staff: $e');
}
}
@@ -65,6 +71,7 @@ class CoreRepository {
.single();
return CompanyModel.fromMap(response);
} catch (e) {
debugPrint('Creazione azienda fallita: $e');
throw Exception('Creazione azienda fallita: $e');
}
}
@@ -78,6 +85,7 @@ class CoreRepository {
.single();
return StoreModel.fromMap(response);
} catch (e) {
debugPrint('Creazione negozio fallita: $e');
throw Exception('Creazione negozio fallita: $e');
}
}
@@ -89,8 +97,14 @@ class CoreRepository {
.insert(staff.toMap())
.select()
.single();
final StaffMemberModel staffMember = StaffMemberModel.fromMap(response);
await _supabase.from('staff_in_stores').insert({
'staff_member_id': staffMember.id,
'store_id': GetIt.I.get<SessionCubit>().state.currentStore!.id,
});
return StaffMemberModel.fromMap(response);
} catch (e) {
debugPrint('Creazione profilo staff fallita: $e');
throw Exception('Creazione profilo staff fallita: $e');
}
}

View File

@@ -19,6 +19,7 @@ class FluxTextField extends StatefulWidget {
final String? Function(String?)? validator;
final List<TextInputFormatter>? inputFormatters;
final TextCapitalization? textCapitalization;
final bool? autocorrect;
const FluxTextField({
super.key, // Usiamo super.key per Flutter moderno
@@ -37,6 +38,7 @@ class FluxTextField extends StatefulWidget {
this.validator,
this.inputFormatters,
this.textCapitalization,
this.autocorrect,
});
@override
@@ -58,8 +60,9 @@ class _FluxTextFieldState extends State<FluxTextField> {
controller: widget.controller,
validator: widget.validator,
obscureText: _obscureText,
enableSuggestions: !widget.isPassword,
autocorrect: !widget.isPassword,
autocorrect: widget.isPassword ? false : widget.autocorrect ?? true,
keyboardType: widget.keyboardType,
autofocus: widget.autoFocus,
minLines: widget.minLines,
@@ -110,6 +113,7 @@ class _FluxTextFieldState extends State<FluxTextField> {
onChanged: widget.onChanged,
maxLength: widget.maxLength,
inputFormatters: widget.inputFormatters,
textCapitalization: widget.textCapitalization ?? TextCapitalization.none,
);
}