import 'package:comunic/models/survey_choice.dart'; import 'package:meta/meta.dart'; /// Survey information /// /// @author Pierre HUBERT class Survey { final int id; final int userID; final int postID; final int creationTime; final String question; int userChoice; final Set choices; Survey({ @required this.id, @required this.userID, @required this.postID, @required this.creationTime, @required this.question, @required this.userChoice, @required this.choices, }) : assert(id != null), assert(userID != null), assert(postID != null), assert(creationTime != null), assert(question != null), assert(userChoice != null), assert(choices != null), assert(choices.length > 0); bool get hasResponded => this.userChoice != null && this.userChoice > 0; bool get hasResponses => this.choices.where((f) => f.responses > 0).length > 0; SurveyChoice get userResponse { if (!hasResponded) return null; return choices.firstWhere((e) => e.id == userChoice); } void cancelUserResponse() { if (hasResponded) userResponse.responses--; userChoice = 0; } void setUserResponse(SurveyChoice choice) { cancelUserResponse(); userChoice = choice.id; choice.responses++; } }