update api
This commit is contained in:
42
lib/features/auth/data/models/auth_response_model.dart
Normal file
42
lib/features/auth/data/models/auth_response_model.dart
Normal file
@@ -0,0 +1,42 @@
|
||||
import '../../domain/entities/auth_response.dart';
|
||||
import 'user_model.dart';
|
||||
|
||||
/// AuthResponse model for data layer (extends AuthResponse entity)
|
||||
class AuthResponseModel extends AuthResponse {
|
||||
const AuthResponseModel({
|
||||
required super.accessToken,
|
||||
required super.user,
|
||||
});
|
||||
|
||||
/// Create AuthResponseModel from JSON
|
||||
factory AuthResponseModel.fromJson(Map<String, dynamic> json) {
|
||||
return AuthResponseModel(
|
||||
accessToken: json['access_token'] as String,
|
||||
user: UserModel.fromJson(json['user'] as Map<String, dynamic>),
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert AuthResponseModel to JSON
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'access_token': accessToken,
|
||||
'user': (user as UserModel).toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
/// Create AuthResponseModel from AuthResponse entity
|
||||
factory AuthResponseModel.fromEntity(AuthResponse authResponse) {
|
||||
return AuthResponseModel(
|
||||
accessToken: authResponse.accessToken,
|
||||
user: authResponse.user,
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert to AuthResponse entity
|
||||
AuthResponse toEntity() {
|
||||
return AuthResponse(
|
||||
accessToken: accessToken,
|
||||
user: user,
|
||||
);
|
||||
}
|
||||
}
|
||||
18
lib/features/auth/data/models/login_dto.dart
Normal file
18
lib/features/auth/data/models/login_dto.dart
Normal file
@@ -0,0 +1,18 @@
|
||||
/// Login request Data Transfer Object
|
||||
class LoginDto {
|
||||
final String email;
|
||||
final String password;
|
||||
|
||||
const LoginDto({
|
||||
required this.email,
|
||||
required this.password,
|
||||
});
|
||||
|
||||
/// Convert to JSON for API request
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'email': email,
|
||||
'password': password,
|
||||
};
|
||||
}
|
||||
}
|
||||
24
lib/features/auth/data/models/register_dto.dart
Normal file
24
lib/features/auth/data/models/register_dto.dart
Normal file
@@ -0,0 +1,24 @@
|
||||
/// Register request Data Transfer Object
|
||||
class RegisterDto {
|
||||
final String name;
|
||||
final String email;
|
||||
final String password;
|
||||
final List<String> roles;
|
||||
|
||||
const RegisterDto({
|
||||
required this.name,
|
||||
required this.email,
|
||||
required this.password,
|
||||
this.roles = const ['user'],
|
||||
});
|
||||
|
||||
/// Convert to JSON for API request
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'name': name,
|
||||
'email': email,
|
||||
'password': password,
|
||||
'roles': roles,
|
||||
};
|
||||
}
|
||||
}
|
||||
66
lib/features/auth/data/models/user_model.dart
Normal file
66
lib/features/auth/data/models/user_model.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
import '../../domain/entities/user.dart';
|
||||
|
||||
/// User model for data layer (extends User entity)
|
||||
class UserModel extends User {
|
||||
const UserModel({
|
||||
required super.id,
|
||||
required super.name,
|
||||
required super.email,
|
||||
required super.roles,
|
||||
required super.isActive,
|
||||
required super.createdAt,
|
||||
required super.updatedAt,
|
||||
});
|
||||
|
||||
/// Create UserModel from JSON
|
||||
factory UserModel.fromJson(Map<String, dynamic> json) {
|
||||
return UserModel(
|
||||
id: json['id'] as String,
|
||||
name: json['name'] as String,
|
||||
email: json['email'] as String,
|
||||
roles: (json['roles'] as List<dynamic>).cast<String>(),
|
||||
isActive: json['isActive'] as bool? ?? true,
|
||||
createdAt: DateTime.parse(json['createdAt'] as String),
|
||||
updatedAt: DateTime.parse(json['updatedAt'] as String),
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert UserModel to JSON
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'id': id,
|
||||
'name': name,
|
||||
'email': email,
|
||||
'roles': roles,
|
||||
'isActive': isActive,
|
||||
'createdAt': createdAt.toIso8601String(),
|
||||
'updatedAt': updatedAt.toIso8601String(),
|
||||
};
|
||||
}
|
||||
|
||||
/// Create UserModel from User entity
|
||||
factory UserModel.fromEntity(User user) {
|
||||
return UserModel(
|
||||
id: user.id,
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
roles: user.roles,
|
||||
isActive: user.isActive,
|
||||
createdAt: user.createdAt,
|
||||
updatedAt: user.updatedAt,
|
||||
);
|
||||
}
|
||||
|
||||
/// Convert to User entity
|
||||
User toEntity() {
|
||||
return User(
|
||||
id: id,
|
||||
name: name,
|
||||
email: email,
|
||||
roles: roles,
|
||||
isActive: isActive,
|
||||
createdAt: createdAt,
|
||||
updatedAt: updatedAt,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user