/// Data Model: Review Statistics /// /// JSON serializable model for review statistics from API. library; import 'package:worker/features/reviews/domain/entities/review_statistics.dart'; /// Review statistics data model /// /// Handles JSON serialization/deserialization for review statistics. /// /// API Response format: /// ```json /// { /// "total_feedback": 2, /// "average_rating": 2.25 /// } /// ``` class ReviewStatisticsModel { const ReviewStatisticsModel({ required this.totalFeedback, required this.averageRating, }); /// Total number of reviews/feedbacks final int totalFeedback; /// Average rating (0-5 scale from API) final double averageRating; /// Create model from JSON factory ReviewStatisticsModel.fromJson(Map json) { return ReviewStatisticsModel( totalFeedback: json['total_feedback'] as int? ?? 0, averageRating: (json['average_rating'] as num?)?.toDouble() ?? 0.0, ); } /// Convert model to JSON Map toJson() { return { 'total_feedback': totalFeedback, 'average_rating': averageRating, }; } /// Convert to domain entity ReviewStatistics toEntity() { return ReviewStatistics( totalFeedback: totalFeedback, averageRating: averageRating, ); } /// Create model from domain entity factory ReviewStatisticsModel.fromEntity(ReviewStatistics entity) { return ReviewStatisticsModel( totalFeedback: entity.totalFeedback, averageRating: entity.averageRating, ); } @override bool operator ==(Object other) { if (identical(this, other)) return true; return other is ReviewStatisticsModel && other.totalFeedback == totalFeedback && other.averageRating == averageRating; } @override int get hashCode => Object.hash(totalFeedback, averageRating); @override String toString() { return 'ReviewStatisticsModel(totalFeedback: $totalFeedback, averageRating: $averageRating)'; } }