data4autos_mobile_app/lib/data/models/turn14_model.dart

113 lines
2.6 KiB
Dart

import 'dart:convert';
import 'package:autos/domain/entities/turn14.dart';
class Turn14Response {
final String code;
final String message;
final String userId;
final String accessToken;
const Turn14Response({
required this.code,
required this.message,
required this.userId,
required this.accessToken,
});
factory Turn14Response.fromJson(Map<String, dynamic> json) {
return Turn14Response(
code: json['code'] ?? '',
message: json['message'] ?? '',
userId: json['userid'] ?? '',
accessToken: json['access_token'] ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'code': code,
'message': message,
'userid': userId,
'access_token': accessToken,
};
}
/// Convert model → raw JSON string
String toRawJson() => jsonEncode(toJson());
/// Convert raw JSON string → model
factory Turn14Response.fromRawJson(String raw) =>
Turn14Response.fromJson(jsonDecode(raw));
/// Convert Response → Domain Entity
Turn14Entity toEntity() {
return Turn14Entity(
code: code,
message: message,
userId: userId,
accessToken: accessToken,
);
}
@override
String toString() {
return 'Turn14Response(code: $code, message: $message, userId: $userId, accessToken: $accessToken)';
}
}
class Turn14StatusModel {
final String userId;
final bool hasCredentials;
final String? clientId;
final String? clientSecret;
final String? accessToken;
final int? expiresIn; // ✅ FIXED: should be int
final String? code; // ✅ ADDED
final String? message; // ✅ ADDED
Turn14StatusModel({
required this.userId,
required this.hasCredentials,
this.clientId,
this.clientSecret,
this.accessToken,
this.expiresIn,
this.code,
this.message,
});
/// ✅ SAFE FROM JSON
factory Turn14StatusModel.fromJson(Map<String, dynamic> json) {
final credentials = json["credentials"];
final tokenInfo = json["tokenInfo"];
return Turn14StatusModel(
userId: json["userid"]?.toString() ?? "",
hasCredentials: json["hasCredentials"] ?? false,
clientId: credentials?["turn14clientid"],
clientSecret: credentials?["turn14clientsecret"],
accessToken: tokenInfo?["access_token"],
expiresIn: tokenInfo?["expires_in"],
code: json["code"],
message: json["message"],
);
}
/// ✅ MODEL → ENTITY (CLEAN ARCH)
Turn14StatusEntity toEntity() {
return Turn14StatusEntity(
userId: userId,
hasCredentials: hasCredentials,
clientId: clientId,
clientSecret: clientSecret,
accessToken: accessToken,
expiresIn: expiresIn,
);
}
}