Subversion Repositories Integrator Subversion

Rev

Rev 355 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.domain.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.StringUtil;
import br.com.ec.core.util.VerificadorUtil;

@Entity
@Table(name="sec_ponto", schema="sc_sec")
public class Ponto implements Serializable {
         
        private static final long serialVersionUID = 1L;

        private Long sequencial;
        private Loja loja;
        private Pessoa pessoa;
        private Date dataPonto;
        private Date dataHoraPontoInicio;
        private String justificativaPontoInicio;
        private Date dataHoraPontoFim;
        private String justificativaPontoFim;
        private Date dataHoraIntervaloInicio;
        private String justificativaIntervaloInicio;
        private Date dataHoraIntervaloFim;
        private String justificativaIntervaloFim;
        private String observacao;
        private String tipoSituacao;
        private Boolean indicadorValidadoRh = false;
        private Boolean indicadorAtivo = true;

        @Id
        @SequenceGenerator(name = "sq_ponto")
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name="seq_ponto", nullable=false)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }
       
        @ManyToOne
        @ForeignKey(name="fk_ponto_loja")
        @NotNull(message = "Parâmetro obrigatório não preenchido: Loja", groups = {Cadastrar.class, Alterar.class})
        @JoinColumn(name = "seq_loja", referencedColumnName="seq_loja", nullable=false)
        public Loja getLoja() {
                return loja;
        }
        public void setLoja(Loja loja) {
                this.loja = loja;
        }
       
        @ManyToOne
        @ForeignKey(name="fk_ponto_pessoa")
        @NotNull(message = "Parâmetro obrigatório não preenchido: Pessoa", groups = {Cadastrar.class, Alterar.class})
        @JoinColumn(name = "seq_pessoa", nullable=false)
        public Pessoa getPessoa() {
                return pessoa;
        }
        public void setPessoa(Pessoa pessoa) {
                this.pessoa = pessoa;
        }
       
        @Column(name="dat_ponto")
        public Date getDataPonto() {
                return dataPonto;
        }
        public void setDataPonto(Date dataPonto) {
                this.dataPonto = dataPonto;
        }
       
        @Column(name="dth_ponto_inicio")
        public Date getDataHoraPontoInicio() {
                return dataHoraPontoInicio;
        }
        public void setDataHoraPontoInicio(Date dataHoraPontoInicio) {
                this.dataHoraPontoInicio = dataHoraPontoInicio;
        }
       
        @Column(name="dsc_ponto_inicio")
        @Size(max = 150, message = "Limite de caracteres ultrapassado: Justificativa do Início do Ponto")
        public String getJustificativaPontoInicio() {
                return justificativaPontoInicio;
        }
        public void setJustificativaPontoInicio(String justificativaPontoInicio) {
                this.justificativaPontoInicio = StringUtil.setarUpperCaseComTrim(justificativaPontoInicio);
        }
       
        @Column(name="dth_ponto_fim")
        public Date getDataHoraPontoFim() {
                return dataHoraPontoFim;
        }
        public void setDataHoraPontoFim(Date dataHoraPontoFim) {
                this.dataHoraPontoFim = dataHoraPontoFim;
        }
       
        @Column(name="dsc_ponto_fim")
        @Size(max = 150, message = "Limite de caracteres ultrapassado: Justificativa do Final do Ponto")
        public String getJustificativaPontoFim() {
                return justificativaPontoFim;
        }
        public void setJustificativaPontoFim(String justificativaPontoFim) {
                this.justificativaPontoFim = StringUtil.setarUpperCaseComTrim(justificativaPontoFim);
        }
       
        @Column(name="dth_intervalo_inicio")
        public Date getDataHoraIntervaloInicio() {
                return dataHoraIntervaloInicio;
        }
        public void setDataHoraIntervaloInicio(Date dataHoraIntervaloInicio) {
                this.dataHoraIntervaloInicio = dataHoraIntervaloInicio;
        }
       
        @Column(name="dsc_intervalo_inicio")
        @Size(max = 150, message = "Limite de caracteres ultrapassado: Justificativa do Início do Intervalo")
        public String getJustificativaIntervaloInicio() {
                return justificativaIntervaloInicio;
        }
        public void setJustificativaIntervaloInicio(String justificativaIntervaloInicio) {
                this.justificativaIntervaloInicio = StringUtil.setarUpperCaseComTrim(justificativaIntervaloInicio);
        }
       
        @Column(name="dth_intervalo_fim")
        public Date getDataHoraIntervaloFim() {
                return dataHoraIntervaloFim;
        }
        public void setDataHoraIntervaloFim(Date dataHoraIntervaloFim) {
                this.dataHoraIntervaloFim = dataHoraIntervaloFim;
        }
       
        @Column(name="dsc_intervalo_fim")
        @Size(max = 150, message = "Limite de caracteres ultrapassado: Justificativa do Final do Intervalo")
        public String getJustificativaIntervaloFim() {
                return justificativaIntervaloFim;
        }
        public void setJustificativaIntervaloFim(String justificativaIntervaloFim) {
                this.justificativaIntervaloFim = StringUtil.setarUpperCaseComTrim(justificativaIntervaloFim);
        }
       
        @Column(name="dsc_observacao")
        @Size(max = 250, message = "Limite de caracteres ultrapassado: Observação")
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = StringUtil.setarUpperCaseComTrim(observacao);
        }
       
        @Column(name="ind_validado_rh")
        public Boolean getIndicadorValidadoRh() {
                return indicadorValidadoRh;
        }
        public void setIndicadorValidadoRh(Boolean indicadorValidadoRh) {
                this.indicadorValidadoRh = indicadorValidadoRh;
        }
       
        @Column(name="ind_ativo")
        public Boolean getIndicadorAtivo() {
                return indicadorAtivo;
        }
        public void setIndicadorAtivo(Boolean indicadorAtivo) {
                this.indicadorAtivo = indicadorAtivo;
        }
       
        @Transient
        public String getTipoSituacao() {
                return tipoSituacao;
        }
        public void setTipoSituacao(String tipoSituacao) {
                this.tipoSituacao = tipoSituacao;
        }
       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((sequencial == null) ? 0 : sequencial.hashCode());
                return result;
        }
       
        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Ponto other = (Ponto) obj;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                return true;
        }
       
        @Transient
        public Long getSequencialDaLoja() {
                return VerificadorUtil.naoEstaNulo(loja)? loja.getSequencial() : null;
        }
       
        @Transient
        public String getDescricaoDaLoja() {
                return VerificadorUtil.naoEstaNulo(loja)? loja.getDescricao() : null;
        }
       
        @Transient
        public Boolean getPontoCompleto() {
                return VerificadorUtil.naoEstaNulo(getDataHoraPontoInicio()) &&
                                VerificadorUtil.naoEstaNulo(getDataHoraPontoFim()) &&
                                VerificadorUtil.naoEstaNulo(getDataHoraIntervaloInicio()) &&
                                VerificadorUtil.naoEstaNulo(getDataHoraIntervaloFim());
        }
       
        @Transient
        public String getHorasTrabalhadas() {
                if (VerificadorUtil.naoEstaNulo(getDataHoraPontoInicio()) && VerificadorUtil.naoEstaNulo(getDataHoraPontoFim())) {
                        return DataUtils.calcularDiferencaEntreDatasRetornandoHorasEeMinutos(getDataHoraPontoInicio(),getDataHoraPontoFim());
                }
                return null;
        }
       
        @Transient
        public String getIntervalo() {
                if (VerificadorUtil.naoEstaNulo(getDataHoraIntervaloInicio()) && VerificadorUtil.naoEstaNulo(getDataHoraIntervaloFim())) {
                        return DataUtils.calcularDiferencaEntreDatasRetornandoHorasEeMinutos(getDataHoraIntervaloInicio(),getDataHoraIntervaloFim());
                }
                return null;
        }
       
        @Transient
        public String getNomeDaPessoa() {
                return VerificadorUtil.naoEstaNulo(getPessoa())? getPessoa().getNome() : null;
        }
       
        //TODO: FALTA FINALIZAR
        @Transient
        public Double getHorasExtras() {
                if (getPontoCompleto()) {
                }
                return 0.0;
        }
       
        /*@Transient
        public Integer getQuantidadeDiasPedido() {
                return DataUtils.calcularDiferenceEmDiasEntreDuasDatas(DataUtils.getDataAtual(), getDataPedido());
        }
       
        @Transient
        public String getImagemCronometroPedido() {
                Integer quantidadeDias = getQuantidadeDiasPedido();
                if (quantidadeDias < 15) {
                        return "cronometro_verde_sembg";
                }
                if (quantidadeDias < 30) {
                        return "cronometro_amarelo_sembg";
                }
                return "cronometro_vermelho_sembg";
        }
       
        @Transient
        public String getCorPedido() {
                Integer quantidadeDias = getQuantidadeDiasPedido();
                if (quantidadeDias < 15) {
                        return "green";
                }
                return "red";
        }
       
        @Transient
        public String getCorPedidoAtendimento() {
                Integer quantidadeDias = getQuantidadeDiasAtendimento();
                if (quantidadeDias < 15) {
                        return "green";
                }
                return "red";
        }*/

       
}