package br.com.ec.domain.service.loja.impl;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import br.com.ec.core.generic.AbstractService;
import br.com.ec.core.generic.GenericRepository;
import br.com.ec.core.validador.Validador;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.infrastructure.repository.LojaRepository;
@Service
public class LojaServiceImpl
extends AbstractService
<Loja
> implements LojaService
{
private LojaRepository lojaRepository
;
@Autowired
public LojaServiceImpl
(Validador validador, LojaRepository lojaRepository
) {
super(validador
);
this.
lojaRepository = lojaRepository
;
}
@
Override
protected GenericRepository
<Loja
> getRepository
() {
return lojaRepository
;
}
@
Override
protected void regrasNegocioCadastrar
(Loja loja
) {
loja.
setAtivo(true);
}
@
Override
public List<Loja
> listarLojasAtivas
() {
return lojaRepository.
consultarLojas(true);
}
@
Override
public List<LojaDTO
> listarLojasDTOAtivas
() {
return lojaRepository.
consultarLojasDTO(true);
}
@
Override
public List<Loja
> listarLojasAtivasEspacoCase
() {
List<Loja
> lojasNaoEspacoCase =
new ArrayList<Loja
>();
Loja lojaFarmacia =
new Loja
(ConstantesSEC.
SEQUENCIAL_LOJA_FARMACIA_7);
Loja lojaRestaurante =
new Loja
(ConstantesSEC.
SEQUENCIAL_RESTAURANTE_16);
Loja lojaCasaDasCapas =
new Loja
(ConstantesSEC.
SEQUENCIAL_CASA_DAS_CAPAS_17);
lojasNaoEspacoCase.
add(lojaFarmacia
);
lojasNaoEspacoCase.
add(lojaRestaurante
);
lojasNaoEspacoCase.
add(lojaCasaDasCapas
);
List<Loja
> lojas = listarLojasAtivas
();
lojas.
removeAll(lojasNaoEspacoCase
);
return lojas
;
}
@
Override
public List<Loja
> listarLojasAtivasEspacoCaseEeCasaDasCapas
() {
List<Loja
> lojasNaoEspacoCase =
new ArrayList<Loja
>();
Loja lojaFarmacia =
new Loja
(ConstantesSEC.
SEQUENCIAL_LOJA_FARMACIA_7);
Loja lojaRestaurante =
new Loja
(ConstantesSEC.
SEQUENCIAL_RESTAURANTE_16);
lojasNaoEspacoCase.
add(lojaFarmacia
);
lojasNaoEspacoCase.
add(lojaRestaurante
);
List<Loja
> lojas = listarLojasAtivas
();
lojas.
removeAll(lojasNaoEspacoCase
);
return lojas
;
}
@
Override
public List<Loja
> listarLojasAtivasEspacoCase
(Boolean comCasaDasCapas
) {
return comCasaDasCapas
? listarLojasAtivasEspacoCaseEeCasaDasCapas
() : listarLojasAtivasEspacoCase
();
}
@
Override
public List<Loja
> listarLojasComDetalhe
() {
return lojaRepository.
consultarLojasComDetalhe();
}
}