/// Résultat du traitement d'un code QR ou saisi manuellement class QRCodeProcessResult { /// Indique si le traitement a réussi final bool success; /// Message descriptif du résultat final String? message; /// Liste des IDs d'équipements affectés par le traitement final List affectedEquipmentIds; /// Mises à jour des états de validation (équipements cochés) final Map? updatedValidationState; /// Mises à jour des quantités actuelles final Map? updatedQuantities; /// Indique si le code n'a pas été trouvé dans l'événement actuel /// (utilisé pour proposer de l'ajouter depuis la BDD) final bool codeNotFoundInEvent; const QRCodeProcessResult({ required this.success, this.message, this.affectedEquipmentIds = const [], this.updatedValidationState, this.updatedQuantities, this.codeNotFoundInEvent = false, }); /// Crée un résultat de succès factory QRCodeProcessResult.success({ required String message, required List affectedEquipmentIds, Map? updatedValidationState, Map? updatedQuantities, }) { return QRCodeProcessResult( success: true, message: message, affectedEquipmentIds: affectedEquipmentIds, updatedValidationState: updatedValidationState, updatedQuantities: updatedQuantities, ); } /// Crée un résultat d'erreur factory QRCodeProcessResult.error(String message) { return QRCodeProcessResult( success: false, message: message, ); } /// Crée un résultat indiquant que le code n'est pas dans l'événement factory QRCodeProcessResult.notFoundInEvent(String code) { return QRCodeProcessResult( success: false, message: 'Code $code non trouvé dans cet événement', codeNotFoundInEvent: true, ); } }