package br.com.ec.domain.dto;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.TransferenciaProduto;
public class TransferenciaDTO
{
private Long sequencial
;
private LojaDTO lojaSaidaDTO
;
private LojaDTO lojaEntradaDTO
;
private Boolean conferido
;
private Date dataSolicitacao
;
private Date dataFinalizacao
;
private List<TransferenciaProdutoDTO
> produtosDTO
;
// private NotaFiscal notaFiscalRemessa;
// private Date dataHoraInicioTransporte;
// private Usuario usuarioTransportador;
// private Usuario usuarioReceptor;
// private List<TransferenciaProduto> listaProdutos;
public static String CONSULTA_DTO_COMPLETO =
"e.sequencial, e.lojaSaida.sequencial, e.lojaEntrada.sequencial, e.conferido, e.dataSolicitacao, e.dataFinalizacao";
public TransferenciaDTO
(Long sequencial,
Long sequencialLojaSaida,
Long sequencialLojaEntrada,
Boolean conferido,
Date dataSolicitacao,
Date dataFinalizacao
) {
this.
sequencial = sequencial
;
this.
lojaSaidaDTO =
new LojaDTO
(sequencialLojaSaida
);
this.
lojaEntradaDTO =
new LojaDTO
(sequencialLojaEntrada
);
this.
conferido = conferido
;
this.
dataSolicitacao = dataSolicitacao
;
this.
dataFinalizacao = dataFinalizacao
;
}
public TransferenciaDTO
() {}
public Long getSequencial
() {
return sequencial
;
}
public void setSequencial
(Long sequencial
) {
this.
sequencial = sequencial
;
}
public LojaDTO getLojaSaidaDTO
() {
return lojaSaidaDTO
;
}
public void setLojaSaidaDTO
(LojaDTO lojaSaidaDTO
) {
this.
lojaSaidaDTO = lojaSaidaDTO
;
}
public LojaDTO getLojaEntradaDTO
() {
return lojaEntradaDTO
;
}
public void setLojaEntradaDTO
(LojaDTO lojaEntradaDTO
) {
this.
lojaEntradaDTO = lojaEntradaDTO
;
}
public Boolean getConferido
() {
return conferido
;
}
public void setConferido
(Boolean conferido
) {
this.
conferido = conferido
;
}
public Date getDataSolicitacao
() {
return dataSolicitacao
;
}
public void setDataSolicitacao
(Date dataSolicitacao
) {
this.
dataSolicitacao = dataSolicitacao
;
}
public Date getDataFinalizacao
() {
return dataFinalizacao
;
}
public void setDataFinalizacao
(Date dataFinalizacao
) {
this.
dataFinalizacao = dataFinalizacao
;
}
public List<TransferenciaProdutoDTO
> getProdutosDTO
() {
return produtosDTO
;
}
public void setProdutosDTO
(List<TransferenciaProdutoDTO
> produtosDTO
) {
this.
produtosDTO = produtosDTO
;
}
/*********************************************/
public Long sequencialDaLojaSaida
() {
return VerificadorUtil.
naoEstaNulo(getLojaSaidaDTO
())? getLojaSaidaDTO
().
getSequencial() :
null;
}
public Long sequencialDaLojaEntrada
() {
return VerificadorUtil.
naoEstaNulo(getLojaEntradaDTO
())? getLojaEntradaDTO
().
getSequencial() :
null;
}
public void adicionarProduto
(TransferenciaProdutoDTO transferenciaProdutoDTO
) {
if (VerificadorUtil.
estaNulo(getProdutosDTO
())) {
setProdutosDTO
(new ArrayList<TransferenciaProdutoDTO
>());
}
TransferenciaProdutoDTO transferenciaProdutoNaListaDTO = retornarSeProdutoConstaNaLista
(transferenciaProdutoDTO
);
if (VerificadorUtil.
estaNulo(transferenciaProdutoNaListaDTO
)) {
getProdutosDTO
().
add(transferenciaProdutoDTO
);
} else {
getProdutosDTO
().
remove(transferenciaProdutoNaListaDTO
);
transferenciaProdutoDTO.
setQuantidadeTransferir(transferenciaProdutoNaListaDTO.
getQuantidadeTransferir() + transferenciaProdutoDTO.
getQuantidadeTransferir());
getProdutosDTO
().
add(transferenciaProdutoDTO
);
}
}
public TransferenciaProdutoDTO retornarSeProdutoConstaNaLista
(TransferenciaProdutoDTO transferenciaProdutoDTO
) {
if (VerificadorUtil.
estaNulo(getProdutosDTO
())) {
setProdutosDTO
(new ArrayList<TransferenciaProdutoDTO
>());
}
for (TransferenciaProdutoDTO item : getProdutosDTO
()) {
if (item.
getSequencialDoProduto().
equals(transferenciaProdutoDTO.
getSequencialDoProduto()) &&
item.
getTransferenciaDTO().
sequencialDaLojaSaida().
equals(transferenciaProdutoDTO.
getTransferenciaDTO().
sequencialDaLojaSaida()) &&
item.
getTransferenciaDTO().
sequencialDaLojaEntrada().
equals(transferenciaProdutoDTO.
getTransferenciaDTO().
sequencialDaLojaEntrada())) {
return item
;
}
}
return null;
}
public void removerProduto
(TransferenciaProdutoDTO transferenciaProdutoDTO
) {
if (!VerificadorUtil.
isListaNulaOuVazia(getProdutosDTO
())) {
getProdutosDTO
().
remove(transferenciaProdutoDTO
);
}
}
public boolean verificarSeProdutoJaConstaNaLista
(TransferenciaProdutoDTO transferenciaProdutoDTO
) {
if (VerificadorUtil.
estaNulo(getProdutosDTO
())) {
setProdutosDTO
(new ArrayList<TransferenciaProdutoDTO
>());
}
for (TransferenciaProdutoDTO item : getProdutosDTO
()) {
if (item.
equals(transferenciaProdutoDTO
)) {
return true;
}
}
return false;
}
@
Override
public int hashCode
() {
return Objects.
hash(sequencial
);
}
@
Override
public boolean equals
(Object obj
) {
if (this == obj
)
return true;
if (obj ==
null)
return false;
if (getClass
() != obj.
getClass())
return false;
TransferenciaDTO other =
(TransferenciaDTO
) obj
;
return Objects.
equals(sequencial, other.
sequencial);
}
}