MensagemCaixaPostal.fromJson constructor

MensagemCaixaPostal.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory MensagemCaixaPostal.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,
        );

  // Converter campos numéricos para valores descritivos
  final indicadorLeituraStr = json['indicadorLeitura']?.toString() ?? '';
  final indicadorLeitura = switch (indicadorLeituraStr) {
    '0' => 'Não lida',
    '1' => 'Lida',
    '2' => 'Não se aplica',
    _ => indicadorLeituraStr,
  };

  final indicadorFavoritoStr = json['indicadorFavorito']?.toString() ?? '';
  final indicadorFavorito = switch (indicadorFavoritoStr) {
    '0' => 'Não lida',
    '1' => 'Lida',
    _ => indicadorFavoritoStr,
  };

  final origemModeloStr = json['origemModelo']?.toString() ?? '';
  final origemModelo = switch (origemModeloStr) {
    '1' => 'Sistema Remetente',
    '2' => 'RFB',
    _ => origemModeloStr,
  };

  final relevanciaStr = json['relevancia']?.toString() ?? '';
  final relevancia = switch (relevanciaStr) {
    '1' => 'Sem relevância',
    '2' => 'Com relevância',
    _ => relevanciaStr,
  };

  final tipoOrigemStr = json['tipoOrigem']?.toString() ?? '';
  final tipoOrigem = switch (tipoOrigemStr) {
    '1' => 'Receita',
    '2' => 'Estado',
    '3' => 'Município',
    _ => tipoOrigemStr,
  };

  return MensagemCaixaPostal(
    codigoSistemaRemetente: json['codigoSistemaRemetente']?.toString() ?? '',
    codigoModelo: json['codigoModelo']?.toString() ?? '',
    dataEnvio: json['dataEnvio']?.toString() ?? '',
    horaEnvio: json['horaEnvio']?.toString() ?? '',
    numeroControle: json['numeroControle']?.toString() ?? '',
    indicadorLeitura: indicadorLeitura,
    dataLeitura: json['dataLeitura']?.toString() ?? '',
    horaLeitura: json['horaLeitura']?.toString() ?? '',
    dataExclusao: json['dataExclusao']?.toString() ?? '',
    horaExclusao: json['horaExclusao']?.toString() ?? '',
    dataCiencia: json['dataCiencia']?.toString() ?? '',
    assuntoModelo: assuntoModeloProcessado,
    dataValidade: json['dataValidade']?.toString() ?? '',
    origemModelo: origemModelo,
    valorParametroAssunto: valorParametroAssunto,
    relevancia: relevancia,
    isn: json['isn']?.toString() ?? '',
    tipoOrigem: tipoOrigem,
    descricaoOrigem: json['descricaoOrigem']?.toString() ?? '',
    indicadorFavorito: indicadorFavorito,
    foiLida: indicadorLeituraStr == '1',
    isFavorita: indicadorFavoritoStr == '1',
    temAltaRelevancia: relevanciaStr == '2',
  );
}