TermoAutorizacaoResponse.fromJson constructor
TermoAutorizacaoResponse.fromJson( - Map<String, dynamic> json
)
Implementation
factory TermoAutorizacaoResponse.fromJson(Map<String, dynamic> json) {
final mensagens = <MensagemNegocio>[];
if (json['mensagens'] != null) {
if (json['mensagens'] is List) {
for (final msg in json['mensagens']) {
mensagens.add(MensagemNegocio.fromJson(msg));
}
} else if (json['mensagens'] is String) {
// Caso especial quando mensagens vem como string
mensagens.add(
MensagemNegocio(codigo: 'INFO', texto: json['mensagens'].toString()),
);
}
}
// Tratar resposta de cache (quando não há 'dados')
if (json['cacheado'] == true ||
json['dados'] == null ||
json['dados'].toString().isEmpty) {
// Resposta de cache (status 304) sem dados
return TermoAutorizacaoResponse(
status: int.tryParse(json['status']?.toString() ?? '304') ?? 304,
mensagens: mensagens.isNotEmpty
? mensagens
: [
MensagemNegocio(
codigo: 'CACHE',
texto:
json['mensagem']?.toString() ?? 'Token em cache válido',
),
],
dados: json['dados']?.toString(),
autenticarProcuradorToken: json['autenticar_procurador_token']
?.toString(),
dataExpiracao: DateTime.tryParse(
json['data_hora_expiracao']?.toString() ?? '',
),
isCacheValido: true,
);
}
// Resposta normal com dados
String? token;
DateTime? dataExpiracao;
try {
final dadosObj = json['dados'] is String
? jsonDecode(json['dados'])
: json['dados'];
token = dadosObj['autenticar_procurador_token']?.toString();
if (dadosObj['data_hora_expiracao'] != null) {
dataExpiracao = DateTime.tryParse(
dadosObj['data_hora_expiracao'].toString(),
);
}
} catch (e) {
// Se falhar ao parsear dados, apenas continuar sem eles
}
return TermoAutorizacaoResponse(
status: int.tryParse(json['status']?.toString() ?? '200') ?? 200,
mensagens: mensagens,
dados: json['dados']?.toString(),
autenticarProcuradorToken: token,
dataExpiracao: dataExpiracao,
isCacheValido: (json['status']) == 304 ? true : false,
);
}