Refactor event type handling and add data management page (options and event types)
This commit is contained in:
@@ -25,7 +25,7 @@ class EventFormController extends ChangeNotifier {
|
||||
String? _error;
|
||||
String? _success;
|
||||
String? _selectedEventTypeId;
|
||||
List<EventType> _eventTypes = [];
|
||||
List<EventTypeModel> _eventTypes = [];
|
||||
bool _isLoadingEventTypes = true;
|
||||
List<String> _selectedUserIds = [];
|
||||
List<UserModel> _allUsers = [];
|
||||
@@ -42,7 +42,7 @@ class EventFormController extends ChangeNotifier {
|
||||
String? get error => _error;
|
||||
String? get success => _success;
|
||||
String? get selectedEventTypeId => _selectedEventTypeId;
|
||||
List<EventType> get eventTypes => _eventTypes;
|
||||
List<EventTypeModel> get eventTypes => _eventTypes;
|
||||
bool get isLoadingEventTypes => _isLoadingEventTypes;
|
||||
List<String> get selectedUserIds => _selectedUserIds;
|
||||
List<UserModel> get allUsers => _allUsers;
|
||||
@@ -147,26 +147,30 @@ class EventFormController extends ChangeNotifier {
|
||||
final oldEventTypeIndex = _selectedEventTypeId != null
|
||||
? _eventTypes.indexWhere((et) => et.id == _selectedEventTypeId)
|
||||
: -1;
|
||||
final EventType? oldEventType = oldEventTypeIndex != -1 ? _eventTypes[oldEventTypeIndex] : null;
|
||||
final EventTypeModel? oldEventType = oldEventTypeIndex != -1 ? _eventTypes[oldEventTypeIndex] : null;
|
||||
|
||||
_selectedEventTypeId = newTypeId;
|
||||
|
||||
if (newTypeId != null) {
|
||||
final selectedType = _eventTypes.firstWhere((et) => et.id == newTypeId);
|
||||
|
||||
// Utiliser le prix par défaut du type d'événement
|
||||
final defaultPrice = selectedType.defaultPrice;
|
||||
final currentPrice = double.tryParse(basePriceController.text.replaceAll(',', '.'));
|
||||
final oldDefaultPrice = oldEventType?.defaultPrice;
|
||||
|
||||
// Mettre à jour le prix si le champ est vide ou si c'était l'ancien prix par défaut
|
||||
if (basePriceController.text.isEmpty ||
|
||||
(currentPrice != null && oldDefaultPrice != null && currentPrice == oldDefaultPrice)) {
|
||||
basePriceController.text = defaultPrice.toStringAsFixed(2);
|
||||
}
|
||||
|
||||
// Filtrer les options qui ne sont plus compatibles avec le nouveau type
|
||||
final before = _selectedOptions.length;
|
||||
_selectedOptions.removeWhere((opt) {
|
||||
final types = opt['compatibleTypes'] as List<dynamic>?;
|
||||
if (types == null) return true;
|
||||
return !types.contains(selectedType.name);
|
||||
// Vérifier si cette option est compatible avec le type d'événement sélectionné
|
||||
final optionEventTypes = opt['eventTypes'] as List<dynamic>? ?? [];
|
||||
return !optionEventTypes.contains(selectedType.id);
|
||||
});
|
||||
|
||||
if (_selectedOptions.length < before) {
|
||||
|
||||
Reference in New Issue
Block a user