validarDataConsolidacao static method
- String? dataConsolidacao
Valida data de consolidação no formato AAAAMMDD
Retorna null se válido, ou uma mensagem de erro se inválido
Implementation
static String? validarDataConsolidacao(String? dataConsolidacao) {
if (dataConsolidacao == null || dataConsolidacao.isEmpty) {
return 'Data de consolidação é obrigatória';
}
// Verifica se tem exatamente 8 caracteres
if (dataConsolidacao.length != 8) {
return 'Data de consolidação deve ter formato AAAAMMDD';
}
// Verifica se são apenas números
if (!RegExp(r'^\d{8}$').hasMatch(dataConsolidacao)) {
return 'Data de consolidação deve conter apenas números no formato AAAAMMDD';
}
// Verifica se é uma data válida
final ano = int.parse(dataConsolidacao.substring(0, 4));
final mes = int.parse(dataConsolidacao.substring(4, 6));
final dia = int.parse(dataConsolidacao.substring(6, 8));
if (ano < 1900 || ano > 2099) {
return 'Ano da data deve estar entre 1900 e 2099';
}
if (mes < 1 || mes > 12) {
return 'Mês da data deve estar entre 01 e 12';
}
if (dia < 1 || dia > 31) {
return 'Dia da data deve estar entre 01 e 31';
}
// Tenta criar um DateTime para validar se a data é válida
try {
DateTime(ano, mes, dia);
} catch (e) {
return 'Data inválida: $dataConsolidacao';
}
// Verifica se não é data futura
final data = DateTime(ano, mes, dia);
final agora = DateTime.now();
if (data.isAfter(agora)) {
printW('Aviso: Data de consolidação é futura ($dataConsolidacao)');
}
// Verifica se não é muito antiga
final limiteAntigo = DateTime(2010, 1, 1);
if (data.isBefore(limiteAntigo)) {
printW('Aviso: Data de consolidação é muito antiga ($dataConsolidacao)');
}
return null;
}