Subversion Repositories Integrator Subversion

Rev

Rev 509 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

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);
        }
       
}