Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Como utilizar os SERVICE fora do Controller?

Estou fazendo um projeto e gostaria de saber como utilizar as funções criadas dentro das classes na pasta Services a partir de uma outra classe que não seja o Controller.

Exemplo: Tenho um Model chamado Arvore e outro chamado Amora Tenho um Controller para cada ArvoreController e AmoraController Tenho um Service pra cada ArvoreService e AmoraService

Quando faço um POST de uma Arvore o código percorre o ArvoreController e entra com os parâmetros de Context e Mapper dentro do ArvoreService.

Se eu quiser adicionar uma Amora sempre que eu adicionar uma Arvore, eu posso acessar o método que cadastra uma Amora presente no AmoraService através do ArvoreService? Se sim, quais parametros eu entrego de Context e Mapper.

(Deve ter ficado um pouco confuso, mas vou simular no codigo aqui:) Dentro de ArvoreService

public ReadArvoreDto CreateArvore(CreateArvoreDto arvoreDto){
    //Aqui vai todo o código para cadastrar a arvore
    CreateAmoraDto amoraDto = new CreateAmoraDto(...); //Aqui crio uma AmoraDto (ainda estou no ArvoreService)
    AmoraService.CreateAmora(CreateAmoraDto); //Aqui utilizo do AmoraService pra cadastrar uma amora (Sempre que cadastrar uma Arvore, cadastra uma Amora)
    return readArvoreDto //Finaliza o método de cadastrar árvore
}

O código acima é um exemplo (que não funciona), só pra ilustrar a ideia.

Estou muito confuso de onde que vem os parâmetros de Context e Mapper

5 respostas

Ficou um pouco confuso o que vc quer fazer por n motivos. Primeiro que você está violando princípios básicos e essências da programação, querendo fazer isso. Como o SRP, kiss e yagni por exemplo. Segundo que organizamos o projeto, justamente para não ter essa mistura que você deseja fazer, terceiro que me parece ser uma regra de negócio que o front deveria se preocupar/executar, vc no back deve apenas fornecer a opção de criar uma árvore e uma amora, e o front decide se faz isso individual ou simultaneamente. Quarto, como você diferenciaria os dados no body? Já deixaria um valor padrão no seu código para as amoras, e todas elas seriam iguais?

Oi Angelo, tudo bem? Esse caso foi só um exemplo... Uma coisa que quero fazer por exemplo é sempre que se cadastrar uma compra eu cadastre as parcelas dessa compra automaticamente. Como eu faria isso? Precisaria acessar o banco de dados para cadastrar, porem na aula so foi ensinado como fazer isso através da API e não internamente.

você pode fazer da mesma maneira que você cadastra uma compra. basta adicionar parcelas na sua entidade. nota que parcelas faz parte de uma transação, compras, você não precisa segregar isso. seria apenas mais um campo como outro qualquer, por exemplo id, nome, descrição, etc... e essa informação vc passaria pelo body, como faz com as demais.

Na verdade preciso separar pois é uma relação 1:n em que uma compra pode haver varias parcelas. Então eu preciso que ao criar uma compra de 1000 reais com 4 parcelas eu crie 4 parcelas de 250 reais cada com datas de vencimento em 1,2,3 e 4 meses. Não entendi como fazer isso

solução!

Recomendo o curso de SOLID para solucionar esse problema