1
resposta

Validações no constructor

Fala pessoal, Estou criando uma API e tenho um modelo de produto onde tenho a necessidade de informar uma data de fabricação e baseada nessa data inserir dinamicamente a data de validade. Bom como posso ter que atualizar o produto e estou utilizando o PUT para fazer, pensei em deixar a validação da data no construtor. da seguinte maneira. Construtor do modelo. Mas comecei a ter problemas no meu GET exemplo se tenho um produto com a data de validade já ultrapassada começo a ter exceções, com isso conseguir pensar em colocar um construtor vazio mas somente ele não faz sentindo pois perco as validações do anterior, além disso pensei em adicionar no método responsável pela criação chamado pela requisição POST um nova referencia de produto Create . Porém estou sem saber se a melhor forma para tratar isso, além claro se é uma boa prática deixar essas validações no construtor. Aceito sugestões de melhorias. Tendo em mente que é um código que pretendo colocá-lo em produção. Desde já agradeço.

1 resposta

Bom dia cara, tudo bem? Não sei se o que eu vou falar é a melhor forma, mais é uma opção. XD

Como Product referencia uma tabela no banco, eu não colocaria essa validação ai. Para o primeiro cadastro funciona, mais sempre que vc esta pegando os dados do banco, o ef é obrigado a passar por essa sua validação, gerando as quebras que vc mencionou. Como eu acredito que você não precisa lidar com isso nesse momento, apenas nas criações e atualizações, eu faria uma classe por fora. Tipo, "ProductService" e dentro dela faria minhas lógicas de cadastro ou qualquer outra referente a "Product". Nesse contexto o seu controle passaria os dados para o service e esse faria o trabalho de incluir ou alterar.

Nesse cenário, vc manteria a logica de negocio no "ProductService" , apenas validações de banco em "Product" e o controller só se preocupa com a requisição.

É isso, XD.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software