/// Fichier contenant toutes les constantes utilisées dans l'application /// Centralise les clés, noms de boîtes Hive, et autres constantes /// pour faciliter la maintenance et éviter les erreurs de frappe import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; class AppKeys { // Noms des boîtes Hive static const String usersBoxName = 'users'; static const String operationsBoxName = 'operations'; static const String sectorsBoxName = 'sectors'; static const String passagesBoxName = 'passages'; static const String settingsBoxName = 'settings'; static const String membresBoxName = 'membres'; static const String chatConversationsBoxName = 'chat_conversations'; static const String chatMessagesBoxName = 'chat_messages'; // Rôles utilisateurs static const int roleUser = 1; static const int roleAdmin1 = 2; static const int roleAdmin2 = 4; static const int roleAdmin3 = 9; // URLs API static const String baseApiUrl = 'https://app.geosector.fr/api/geo'; // Endpoints API static const String loginEndpoint = '/login'; static const String logoutEndpoint = '/logout'; static const String registerEndpoint = '/register'; static const String syncDataEndpoint = '/data/sync'; static const String sectorsEndpoint = '/sectors'; // Durées static const Duration connectionTimeout = Duration(seconds: 5); static const Duration receiveTimeout = Duration(seconds: 30); static const Duration sessionDefaultExpiry = Duration(days: 7); // Clés API externes static const String mapboxApiKey = 'pk.eyJ1IjoicHZkNnNvZnQiLCJhIjoiY204dTNhNmd0MGV1ZzJqc2pnNnB0NjYxdSJ9.TA5Mvliyn91Oi01F_2Yuxw'; // À remplacer par votre clé API Mapbox // Headers static const String sessionHeader = 'Authorization'; // En-têtes par défaut pour les requêtes API static const Map defaultHeaders = { 'Content-Type': 'application/json', 'X-App-Identifier': 'app.geosector.fr', 'X-Client-Type': kIsWeb ? 'web' : 'mobile', 'Accept': 'application/json', }; // Civilités static const Map civilites = { 1: 'M.', 2: 'Mme', }; // Types de règlements static const Map> typesReglements = { 0: { 'titre': 'Pas de règlement', 'couleur': 0xFF757575, // Gris foncé 'icon_data': Icons.money_off, }, 1: { 'titre': 'Espèce', 'couleur': 0xFFFFC107, // Jaune foncé (ambre) 'icon_data': Icons.toll, }, 2: { 'titre': 'Chèque', 'couleur': 0xFF8BC34A, // Vert citron 'icon_data': Icons.wallet, }, 3: { 'titre': 'CB', 'couleur': 0xFF00B0FF, // Bleu flashy (bleu clair accent), 'icon_data': Icons.credit_card, }, }; // Types de passages static const Map> typesPassages = { 1: { 'titres': 'Effectués', 'titre': 'Effectué', 'couleur1': 0xFF4CAF50, // Vert success 'couleur2': 0xFF4CAF50, // Vert success 'couleur3': 0xFF4CAF50, // Vert success 'icon_data': Icons.task_alt, }, 2: { 'titres': 'À finaliser', 'titre': 'À finaliser', 'couleur1': 0xFFFFFFFF, // Blanc 'couleur2': 0xFFFF9800, // Orange 'couleur3': 0xFFE65100, // Orange foncé 'icon_data': Icons.refresh, }, 3: { 'titres': 'Refusés', 'titre': 'Refusé', 'couleur1': 0xFFF44336, // Rouge 'couleur2': 0xFFF44336, // Rouge 'couleur3': 0xFFF44336, // Rouge 'icon_data': Icons.block, }, 4: { 'titres': 'Dons', 'titre': 'Don', 'couleur1': 0xFF03A9F4, // Bleu ciel 'couleur2': 0xFF03A9F4, // Bleu ciel 'couleur3': 0xFF03A9F4, // Bleu ciel 'icon_data': Icons.volunteer_activism, }, 5: { 'titres': 'Lots', 'titre': 'Lot', 'couleur1': 0xFF0D47A1, // Bleu foncé 'couleur2': 0xFF0D47A1, // Bleu foncé 'couleur3': 0xFF0D47A1, // Bleu foncé 'icon_data': Icons.layers, }, 6: { 'titres': 'Maisons vides', 'titre': 'Maison vide', 'couleur1': 0xFF9E9E9E, // Gris 'couleur2': 0xFF9E9E9E, // Gris 'couleur3': 0xFF9E9E9E, // Gris 'icon_data': Icons.home_outlined, }, }; }