andrebaltieri / AgendaEventos

MIT License
18 stars 5 forks source link

Alteracao de usuario obriga o preenchimento de todos os dados de todas as roles que o usuario possui. #125

Open jenrodrigues opened 3 years ago

jenrodrigues commented 3 years ago

Se o usuario nao informar TODOS os dados das role (id, title e description, pra cada uma das roles que o usuario por ventura possua) a alteracao nao sera realizada com sucesso.

MELHORIA SUGERIDA: avaliar se e possivel retirar a obrigatoriedade de preencher title e description do Role ao alterarmos um usuario. Se possivel, obrigar somente o preenchimento do id do Role.

Branch onde o teste foi realizado: main

Url: https://localhost:5001/api/v1/users/12

Request: { "id": "12", "email": "teste@teste.com", "name": "Jenifer", "password": "teste", "roles": [{ "id": 6, "title": "Organizador", "description": "Cria e organiza eventos." } ]}

JoaoNascSilva commented 3 years ago

Isto se deve por conta do modelo de dados que estamos utilizando atualmente. Em um futuro próximo podemos refatorar e adotar uma nova abordagem, por exemplo, utilizando domínios ricos.

renebentes commented 3 years ago

Realmente, temos esse problema. Se removermos as DataAnnotations dos modelos e os mapearmos com FluentApi, poderíamos usar DTOs específicos para cada operações com DataAnnotations para as validações.

JoaoNascSilva commented 3 years ago

Realmente, temos esse problema. Se removermos as DataAnnotations dos modelos e os mapearmos com FluentApi, poderíamos usar DTOs específicos para cada operações com DataAnnotations para as validações.

Exato, podemos realizar bastante refatorações para deixar o código melhor. Mas como o Balta disse no início, vamos fazer o mais simples de início, depois podemos evoluir com o tempo. Eu confesso que estou bastante animado com este projeto, rs, acredito que podemos deixar ele bem legal. Podemos conversar com o Balta na próxima reunião, para podermos dar um passinho a mais, partir para a parte de negócio da aplicação, deixar nosso domínio um pouco mais rico, já pensar em testes, usarmos o Flunt S2 para as validações