import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_storage/firebase_storage.dart'; class ScoreModel { final int total; final double average; final List details; ScoreModel(this.total, this.average, this.details); static Future fromJson(Map? json) async { try { if (json == null) return ScoreModel(0, 0, []); List list = []; for (var e in (json['detalles'] as List)) { list.add(await ScoreDetailsModel.fromJson(e)); } return ScoreModel( json['total'], json['promedio'], list, ); } catch (e) { print('XD 54 $e'); return ScoreModel(0, 0, []); } } } class ScoreDetailsModel { final String name; final Reference? avatar; final double score; final String comment; ScoreDetailsModel(this.name, this.avatar, this.score, this.comment); static Future fromJson(Map? json) async { final FirebaseStorage storage = FirebaseStorage.instance; try { if (json == null) return ScoreDetailsModel("", null, 0, "null"); var refUser = (json['usuario_id'] as DocumentReference>); var data = await refUser.get(); var name = data.data()?["name"] ?? "no name"; Reference? avatarRef; String? avatar = data.data()?["photo"]; if (avatar != null) { avatarRef = storage.ref().child(avatar); } return ScoreDetailsModel( name, avatarRef, (json['puntaje'] is int) ? json['puntaje'].toDouble() : json['puntaje'], json['comentario'] ?? "ISNULL", ); } catch (e) { print('XD $e'); return ScoreDetailsModel("", null, 0, ""); } } }