Line data Source code
1 : class Member {
2 : final String id;
3 : final String userId;
4 : final String clubId;
5 : final String name;
6 : final String email;
7 : final String? role;
8 : final String? profileImage;
9 : final String? phone;
10 : final String? address;
11 : final DateTime? joinDate;
12 : final bool isActive;
13 : final String? gender;
14 : final String? memberType;
15 : final int? handicap;
16 : final String? status;
17 : final DateTime? createdAt;
18 : final DateTime? updatedAt;
19 : final DateTime? birthDate; // 생년월일 추가
20 :
21 5 : Member({
22 : required this.id,
23 : required this.userId,
24 : required this.clubId,
25 : required this.name,
26 : required this.email,
27 : this.role,
28 : this.profileImage,
29 : this.phone,
30 : this.address,
31 : this.joinDate,
32 : required this.isActive,
33 : this.gender,
34 : this.memberType,
35 : this.handicap,
36 : this.status,
37 : this.createdAt,
38 : this.updatedAt,
39 : this.birthDate,
40 : });
41 :
42 : // JSON 데이터로부터 Member 객체 생성
43 3 : factory Member.fromJson(Map<String, dynamic> json) {
44 3 : return Member(
45 6 : id: json['id']?.toString() ?? '',
46 4 : userId: json['userId']?.toString() ?? '',
47 6 : clubId: json['clubId']?.toString() ?? '',
48 3 : name: json['name'] ?? '',
49 3 : email: json['email'] ?? '',
50 4 : role: json['role']?.toString(),
51 4 : profileImage: json['profileImage']?.toString(),
52 6 : phone: json['phone']?.toString(),
53 4 : address: json['address']?.toString(),
54 12 : joinDate: json['joinDate'] != null ? DateTime.parse(json['joinDate'].toString()) : null,
55 3 : isActive: json['isActive'] ?? true,
56 6 : gender: json['gender']?.toString(),
57 4 : memberType: json['memberType']?.toString(),
58 6 : handicap: json['handicap'] != null ? int.tryParse(json['handicap'].toString()) : null,
59 4 : status: json['status']?.toString(),
60 6 : createdAt: json['createdAt'] != null ? DateTime.parse(json['createdAt'].toString()) : null,
61 6 : updatedAt: json['updatedAt'] != null ? DateTime.parse(json['updatedAt'].toString()) : null,
62 3 : birthDate: json['birthDate'] != null ? DateTime.parse(json['birthDate'].toString()) : null,
63 : );
64 : }
65 :
66 : // Member 객체를 JSON으로 변환
67 1 : Map<String, dynamic> toJson() {
68 1 : return {
69 1 : 'id': id,
70 1 : 'userId': userId,
71 1 : 'clubId': clubId,
72 1 : 'name': name,
73 1 : 'email': email,
74 1 : 'role': role,
75 1 : 'profileImage': profileImage,
76 1 : 'phone': phone,
77 1 : 'address': address,
78 2 : 'joinDate': joinDate?.toIso8601String(),
79 1 : 'isActive': isActive,
80 1 : 'gender': gender,
81 1 : 'memberType': memberType,
82 1 : 'handicap': handicap,
83 1 : 'status': status,
84 2 : 'createdAt': createdAt?.toIso8601String(),
85 2 : 'updatedAt': updatedAt?.toIso8601String(),
86 1 : 'birthDate': birthDate?.toIso8601String(),
87 : };
88 : }
89 :
90 : // 객체 복사 및 특정 필드 업데이트를 위한 copyWith 메서드
91 1 : Member copyWith({
92 : String? id,
93 : String? userId,
94 : String? clubId,
95 : String? name,
96 : String? email,
97 : String? role,
98 : String? profileImage,
99 : String? phone,
100 : String? address,
101 : DateTime? joinDate,
102 : bool? isActive,
103 : String? gender,
104 : String? memberType,
105 : int? handicap,
106 : String? status,
107 : DateTime? createdAt,
108 : DateTime? updatedAt,
109 : DateTime? birthDate,
110 : }) {
111 1 : return Member(
112 1 : id: id ?? this.id,
113 1 : userId: userId ?? this.userId,
114 1 : clubId: clubId ?? this.clubId,
115 0 : name: name ?? this.name,
116 0 : email: email ?? this.email,
117 0 : role: role ?? this.role,
118 1 : profileImage: profileImage ?? this.profileImage,
119 1 : phone: phone ?? this.phone,
120 1 : address: address ?? this.address,
121 1 : joinDate: joinDate ?? this.joinDate,
122 1 : isActive: isActive ?? this.isActive,
123 1 : gender: gender ?? this.gender,
124 1 : memberType: memberType ?? this.memberType,
125 1 : handicap: handicap ?? this.handicap,
126 1 : status: status ?? this.status,
127 1 : createdAt: createdAt ?? this.createdAt,
128 1 : updatedAt: updatedAt ?? this.updatedAt,
129 1 : birthDate: birthDate ?? this.birthDate,
130 : );
131 : }
132 : }
|