package br.com.doctors.modelo.util; import javax.persistence.*; import org.hibernate.annotations.Type; import org.joda.time.DateTime; import org.joda.time.LocalTime; import br.com.doctors.modelo.administracao.Funcionario; import br.com.doctors.modelo.administracao.Paciente; import br.com.doctors.modelo.agendamento.Agendamento; @Entity @Table(name="notificacoes") public class Notificacao { @Id @GeneratedValue private Long id; @Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime") private DateTime horarioDeNotificacao; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="funcionario_id") private Funcionario funcionario; @OneToOne(fetch=FetchType.EAGER) @JoinColumn(name="agendamento_id") private Agendamento agendamento; private Boolean notificado; public Notificacao(){ horarioDeNotificacao = new DateTime(); notificado = false; } public Long getId() { return id; } public DateTime getHorarioDeNotificacao() { return horarioDeNotificacao; } public LocalTime getHorarioNotificacaoAsLocalTime(){ return horarioDeNotificacao.toLocalTime(); } public Funcionario getFuncionario() { return funcionario; } public Boolean getNotificado() { return notificado; } public void setId(Long id) { this.id = id; } public void setFuncionario(Funcionario funcionario) { this.funcionario = funcionario; } public void medicoFoiNotificado() { this.notificado = true; } public Agendamento getAgendamento() { return agendamento; } public void setAgendamento(Agendamento agendamento) { this.agendamento = agendamento; } @Override public String toString() { return String.format("Notifica��o de chegada do paciente %s �s %s.", agendamento.getPaciente().getNome(), horarioDeNotificacao ); } public void setHorarioDeNotificacao(DateTime horarioDeNotificacao) { this.horarioDeNotificacao = horarioDeNotificacao; } public LocalTime getHorarioConsulta(){ return agendamento.getHoraAgendamento(); } public Paciente getPaciente(){ return agendamento.getPaciente(); } }