package br.com.ec.controller.managedbean;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.StreamedContent;
import org.springframework.context.annotation.Scope;
import br.com.ec.controller.managedbean.consultademanda.ClienteConsultaPorDemanda;
import br.com.ec.domain.dto.ParametrosConsultaClienteDTO;
import br.com.ec.domain.model.Cliente;
import br.com.ec.domain.model.tipos.TipoRelatorioCliente;
import br.com.ec.domain.service.cliente.ClienteService;
import br.edu.cesmac.core.generic.GenericService;
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandRelatorioStreamedContent;
import br.edu.cesmac.web.generic.AbstractBean;
@Named
@Scope
("view")
public class ClienteConsultaBean
extends AbstractBean
<Cliente
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ClienteConsultaPorDemanda lazy
;
private ClienteService clienteService
;
@Inject
public ClienteConsultaBean
(ClienteConsultaPorDemanda lazy, ClienteService clienteService
) {
this.
lazy = lazy
;
this.
clienteService = clienteService
;
}
@
Override
public void preCarregamento
() {
entidade =
new Cliente
();
entidade.
setAtivo(true);
parametrosConsulta =
new ParametrosConsultaClienteDTO
();
parametrosConsulta.
setEntidade(entidade
);
prepararConsultaDemanda
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new Cliente
());
}
@
Override
public GenericService
<Cliente
> getService
() {
return null;
}
@
Override
public Cliente getEntidade
() {
return entidade
;
}
@
Override
public Cliente getId
() {
return getEntidade
();
}
public ClienteConsultaPorDemanda getLazy
() {
return lazy
;
}
public void setLazy
(ClienteConsultaPorDemanda lazy
) {
this.
lazy = lazy
;
}
public void prepararConsultaDemanda
() {
lazy.
setarParametrosConsulta(getParametrosConsulta
());
}
public TipoRelatorioCliente
[] getTiposRelatorio
() {
return TipoRelatorioCliente.
values();
}
public StreamedContent downloadPlanilha
() {
return new VerificadorLancamentoException
().
verificarLancamentoException(new CommandRelatorioStreamedContent
() {
@
Override
public StreamedContent execute
() {
return clienteService.
gerarArquivoExcel(getParametrosConsulta
());
}
});
}
}