Diogo Krejci
Nov 4 · 1 min read

Parabéns pelo artigo!

Você poderia me ajudar com algumas dúvidas?

Vamos supor que eu precise combinar diferentes repositório para gerar uma a saída de uma página, ou seja, terei uma lógica de construção para a mesma.

Na camada de App Services eu chamo esse repositórios e combino seus resultados para gerar a saída. Tentarei criar um cenário fictício

Exemplo:

Cenário: cadastro de aluno projetos científicos

Minha página possui um campo para informar o nome e descrição do projeto científico. Adicionalmente, possui uma lista de Alunos que seriam um dos possíveis donos do projeto. Ao selecionar um Aluno, algumas informações (CPF, Endereço ..) serão preenchidas automaticamente.

Portante, suponha que eu tenha os seguintes Repositórios:

  • AlunoRepositorio
  • ProjetoCientificoRepositorio

ObS: Projeto possui um IdAluno

Se é um novo cadastro:

A tela ficará vazia e só terá a lista preenchida

Se for uma edição:

A tela será carregada com todas informações já cadastradas.

Para eu gerar minha página de cadastro, preciso combinar ambos repositórios.

Os Repositórios serão chamados na camada de Serviço

ProjetoCientificoAppService

var projeto = ProjetoCientificoRepositorio.GetById(id);

var alunos= AlunoRepositorio.GetAll();

Agora surge minha dúvida

  • Como construir a saída para essa tela?

Devo criar um DTO/PageResult específico para essa tela?

Se sim, esse objeto deve ser criado a partir de um AutoMapper ou de uma Factory?

Usando Factory para gerar essa saída

Implementação 1: passando os objetos

ProjetoCientificoResultFactory

CriarProjetoCientificoResult (projeto, alunos){

return ProjetoCientificoResult;

}

Implementação 2: passando os Reporitórios

ProjetoCientificoResultFactory

CriarProjetoCientificoResult (ProjetoCientificoRepositorio, AlunoRepositorio){

return ProjetoCientificoResult;

}

Implementação 3: Usando AutoMapper

var saida = Mapper<ProjetoCientificoResult>(projeto, alunos)

Conseguiu entender?

Poderia me sugerir uma solução?

Grato

    Diogo Krejci

    Written by