Estou aprendendo DDD e modelando um sistema de controle academico para uma universidade como aprendizado. Ainda estou no comeco do sistema e por isso estou fazendo a parte do calendario administrativo. Minha duvida surgiu porque preciso manter uma regra de integridade do calendário. Deixe-me explicar…
Cada calendário possui sempre 3 datas obrigatorias, matricula, substituicao e cancelamento de disciplinas, e varias datas opcionais, como as datas de provas. As datas opcionais podem ser inclusas a qualquer momento no sistema mas as obrigatorias são criadas e injetadas pelo Factory do Calendario. Uma regra de integridade do sistema é que as datas obrigatorias devem ser sempre sequenciais, ou seja: matricula < substituicao < cancelamento. Todas essas datas estao em uma mesma lista.
Minha duvida é, quando devo fazer essa validação? Meu modelo deve estar sempre válido ou só preciso garantir isso no momento de persisti-lo no banco? Se for para manter a integridade dele sempre, como faco a validacao?
Pensei em criar um Policy e injetar no Calendario para validar a lista de datas sempre que o usuario tentar altera-las. Acontece que eu teria q, em um evento, ter conhecimento dos outros eventos para fazer a validacao. É certo isso? Alguma sugestao melhor?
Desculpa se ficou confuso, mas qualquer duvida podem me perguntar…