import 'package:json_annotation/json_annotation.dart';
import 'package:equatable/equatable.dart';
import 'package:project_telephony/ui/user/content_details_page.dart';

part 'user_info_model.g.dart';

@JsonSerializable()
class UserInfoModel extends Equatable {
  final int id;
  final String name;
  final String phone;
  final int isVip;
  final String tag;
  final int status;
  final int start;
  final int end;
  final List<Content>? contentRef;
  final List<Content>? contentCon;

  factory UserInfoModel.fromJson(Map<String, dynamic> json) =>
      _$UserInfoModelFromJson(json);

  Map<String, dynamic> toJson() => _$UserInfoModelToJson(this);

  static UserInfoModel get fail => const UserInfoModel(
        id: 0,
        name: '',
        phone: '',
        isVip: 0,
        tag: '',
        status: 0,
        start: 0,
        end: 0,
        contentCon: [],
        contentRef: [],
      );

  const UserInfoModel({
    required this.id,
    required this.name,
    required this.phone,
    required this.isVip,
    required this.tag,
    required this.status,
    required this.start,
    required this.end,
    required this.contentCon,
    required this.contentRef,
  });

  @override
  List<Object?> get props =>
      [id, name, phone, isVip, tag, status, start, end, contentCon, contentRef];
}

@JsonSerializable()
class Content extends Equatable {
  final int id;
  final String content;
  final int isChecked;

  const Content({
    required this.id,
    required this.content,
    required this.isChecked,
  });

  factory Content.fromJson(Map<String, dynamic> json) =>
      _$ContentFromJson(json);

  Map<String, dynamic> toJson() => _$ContentToJson(this);

  @override
  List<Object?> get props => [id, content, isChecked];
}