DetalheMensagemCompleta.fromJson constructor
DetalheMensagemCompleta.fromJson( - Map<String, dynamic> json
)
Implementation
factory DetalheMensagemCompleta.fromJson(Map<String, dynamic> json) {
// Processar assuntoModelo substituindo ++VARIAVEL++ por valorParametroAssunto
final assuntoModeloOriginal = json['assuntoModelo']?.toString() ?? '';
final valorParametroAssunto =
json['valorParametroAssunto']?.toString() ?? '';
final assuntoModeloProcessado = valorParametroAssunto.isEmpty
? assuntoModeloOriginal
: assuntoModeloOriginal.replaceAll(
'++VARIAVEL++',
valorParametroAssunto,
);
// Processar corpoModelo substituindo ++1++, ++2++, etc. pelos valores de variaveis
final corpoModeloOriginal = json['corpoModelo']?.toString() ?? '';
final variaveis = (json['variaveis'] as List<dynamic>? ?? [])
.map((e) => e.toString())
.toList();
String corpoModeloProcessado = corpoModeloOriginal;
if (variaveis.isNotEmpty) {
for (int i = 0; i < variaveis.length; i++) {
final placeholder = '++${i + 1}++';
corpoModeloProcessado = corpoModeloProcessado.replaceAll(
placeholder,
variaveis[i],
);
}
}
/// Limpa HTML de uma string
corpoModeloProcessado = corpoModeloProcessado
.replaceAll(RegExp(r'<[^>]*>'), '')
.replaceAll(' ', ' ')
.replaceAll(' ', ' ')
.replaceAll('<', '<')
.replaceAll('>', '>')
.replaceAll('"', '"')
.replaceAll(''', "'")
.replaceAll(''', "'")
.replaceAll('á', 'á')
.replaceAll('é', 'é')
.replaceAll('í', 'í')
.replaceAll('ó', 'ó')
.replaceAll('ú', 'ú')
.replaceAll('ã', 'ã')
.replaceAll('õ', 'õ')
.replaceAll('ç', 'ç')
.replaceAll('à', 'à')
.replaceAll('â', 'â')
.replaceAll('ê', 'ê')
.replaceAll('ô', 'ô')
.replaceAll('Á', 'Á')
.replaceAll('É', 'É')
.replaceAll('Í', 'Í')
.replaceAll('Ó', 'Ó')
.replaceAll('Ú', 'Ú')
.replaceAll('Ã', 'Ã')
.replaceAll('Õ', 'Õ')
.replaceAll('Ç', 'Ç')
.replaceAll('À', 'À')
.replaceAll('Â', 'Â')
.replaceAll('Ê', 'Ê')
.replaceAll('Ô', 'Ô')
.replaceAll('º', 'º')
.replaceAll('ª', 'ª')
.replaceAll(
'&',
'&',
) // Deve ser o último para não interferir nas outras entidades
.replaceAll(RegExp(r'\s+'), ' ')
.trim();
// Converter campos numéricos para valores descritivos
final origemModeloStr = json['origemModelo']?.toString() ?? '';
final origemModelo = switch (origemModeloStr) {
'1' => 'Sistema Remetente',
'2' => 'RFB',
_ => origemModeloStr,
};
final tipoOrigemStr = json['tipoOrigem']?.toString() ?? '';
final tipoOrigem = switch (tipoOrigemStr) {
'1' => 'Receita',
'2' => 'Estado',
'3' => 'Município',
_ => tipoOrigemStr,
};
final indFavoritoStr = json['indFavorito']?.toString() ?? '0';
return DetalheMensagemCompleta(
codigoSistemaRemetente: json['codigoSistemaRemetente']?.toString() ?? '',
codigoModelo: json['codigoModelo']?.toString() ?? '',
assuntoModelo: assuntoModeloProcessado,
origemModelo: origemModelo,
dataEnvio: json['dataEnvio']?.toString() ?? '',
valorParametroAssunto: valorParametroAssunto,
dataLeitura: json['dataLeitura']?.toString() ?? '',
horaLeitura: json['horaLeitura']?.toString() ?? '',
dataExpiracao: json['dataExpiracao']?.toString() ?? '',
numeroControle: json['numeroControle']?.toString() ?? '',
dataCiencia: json['dataCiencia']?.toString() ?? '',
enquadramento: json['enquadramento']?.toString() ?? '',
dataAcessoExterno: json['dataAcessoExterno']?.toString() ?? '',
horaAcessoExterno: json['horaAcessoExterno']?.toString() ?? '',
tipoAutenticacaoUsuario:
json['tipoAutenticacaoUsuario']?.toString() ?? '',
codigoAcesso: json['codigoAcesso']?.toString() ?? '',
numeroSerieCertificadoDigital:
json['numeroSerieCertificadoDigital']?.toString() ?? '',
emissorCertificadoDigital:
json['emissorCertificadoDigital']?.toString() ?? '',
tipoUsuario: json['tipoUsuario']?.toString() ?? '',
niUsuario: json['niUsuario']?.toString() ?? '',
papelUsuario: json['papelUsuario']?.toString() ?? '',
codigoAplicacao: json['codigoAplicacao']?.toString() ?? '',
tipoOrigem: tipoOrigem,
descricaoOrigem: json['descricaoOrigem']?.toString() ?? '',
corpoModelo: corpoModeloProcessado,
variaveis: variaveis,
indFavorito: indFavoritoStr == '1',
);
}