package br.com.ec.domain.service.compra.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.model.Compra;
import br.com.ec.domain.model.Conta;
import br.com.ec.domain.model.Parcela;
import br.com.ec.domain.service.compra.CompraService;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.com.ec.infrastructure.repository.CompraRepository;
@Service
public class CompraServiceImpl
extends AbstractService
<Compra
> implements CompraService
{
private ParcelaService parcelaService
;
private CompraRepository compraRepository
;
@Autowired
public CompraServiceImpl
(Validador validador, ParcelaService parcelaService, CompraRepository compraRepository
) {
super(validador
);
this.
parcelaService = parcelaService
;
this.
compraRepository = compraRepository
;
}
@
Override
protected GenericRepository
<Compra
> getRepository
() {
return compraRepository
;
}
@
Override
public Compra consultarCompraDaConta
(Conta conta
) {
return compraRepository.
consultarCompraDaConta(conta
);
}
@
Override
public void adicionarParcelasNaCompra
(Compra compra,
List<Parcela
> listaParcelas
) {
parcelaService.
cadastrarContaComParcelasNaCompra(compra, listaParcelas
);
alterar
(compra
);
}
@
Override
public void vincularConta
(Compra compra, Conta conta
) {
if (VerificadorUtil.
estaNulo(conta
)) {
throw new NegocioException
("CONTA NÃO EXISTE");
}
compra.
setConta(conta
);
alterar
(compra
);
}
@
Override
public void desvincularConta
(Compra compra
) {
compra.
setConta(null);
alterar
(compra
);
}
}