import 'package:syncrow_web/pages/auth/model/token.dart';

class UserModel {
  static String userUuidKey = 'userUuid';
  final String? uuid;
  final String? email;
  final String? firstName;
  final String? lastName;
  final String? photoUrl;
  final String? phoneNumber;
  final bool? isEmailVerified;
  final bool? isAgreementAccepted;
  UserModel({
    required this.uuid,
    required this.email,
    required this.firstName,
    required this.lastName,
    required this.photoUrl,
    required this.phoneNumber,
    required this.isEmailVerified,
    required this.isAgreementAccepted,
  });

  factory UserModel.fromJson(Map<String, dynamic> json) {
    return UserModel(
      uuid: json['id'],
      email: json['email'],
      firstName: json['firstName'],
      lastName: json['lastName'],
      photoUrl: json['photoUrl'],
      phoneNumber: json['phoneNumber'],
      isEmailVerified: json['isEmailVerified'],
      isAgreementAccepted: json['isAgreementAccepted'],
    );
  }

  //uuid to json

  //from token
  factory UserModel.fromToken(Token token) {
    Map<String, dynamic> tempJson = Token.decodeToken(token.accessToken);

    return UserModel(
      uuid: tempJson['uuid'].toString(),
      email: tempJson['email'],
      firstName: null,
      lastName: null,
      photoUrl: null,
      phoneNumber: null,
      isEmailVerified: null,
      isAgreementAccepted: null,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': uuid,
      'email': email,
      'firstName': firstName,
      'lastName': lastName,
      'photoUrl': photoUrl,
      'phoneNumber': phoneNumber,
      'isEmailVerified': isEmailVerified,
      'isAgreementAccepted': isAgreementAccepted,
    };
  }
}
