import 'package:recon/models/users/user_profile.dart';

class User {
  final String id;
  final String username;
  final DateTime registrationDate;
  final UserProfile? userProfile;

  const User({required this.id, required this.username, required this.registrationDate, this.userProfile});

  factory User.fromMap(Map map) {
    UserProfile? profile;
    try {
      profile = UserProfile.fromMap(map["profile"]);
    } catch (e) {
      profile = null;
    }
    return User(
      id: map["id"],
      username: map["username"],
      registrationDate: DateTime.parse(map["registrationDate"]),
      userProfile: profile,
    );
  }

  Map toMap() {
    return {
      "id": id,
      "username": username,
      "registrationDate": registrationDate.toIso8601String(),
      "profile": userProfile?.toMap(),
    };
  }
}