Boa tarde,
Estou enfrentando um desafio em meu projeto, que envolve diversos endpoints. Atualmente, o fluxo consiste em obter dados do banco de dados, realizar o binding para DTO e retornar no formato JSON. No entanto, meu controlador está ficando extenso, com uma quantidade significativa de lógica, especialmente porque há objetos aninhados que exigem outros objectos (optei por não utilizar mapeamentos).
Sempre retorno um link para o objeto interno. Dentro do controlador, consigo usar o Url.Action, o que está funcionando bem. Recentemente, criei uma classe estática para realizar esse mapeamento, mas estou enfrentando dificuldades ao tentar criar o link fora do controlador. Já experimentei passar o UrlHelper como parâmetro, criar no construtor da controller, mas até agora não obtive sucesso.
Objecto de Exemplo dentro da controller:
var missaionReadDTO = missions.Select(m => new MissionReadDTO
{
Id = m.Id,
Title = m.Title,
Planet = new PlanetReadDTO {
id = m.Planet.id,
Name = m.Planet.Name,
Url = Url.Action("getById", "Planet", new { id = m.Planet.id }, Request.Scheme)
},
Goal = m.Goal,
starships = m.starships.Select(s => new StarshipReadDTO
{
id = s.id,
name = s.name,
model = s.model,
manufacturer = s.manufacturer,
link = Url.Action("getById", "Starship", new { id = s.id }, Request.Scheme)
}).ToList()
}).ToList();
Alguma ideia ou sugestão sobre como posso simplificar esse processo?