package br.com.doctors.modelo.agendamento; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import org.hibernate.annotations.Type; import org.joda.time.LocalDate; import org.joda.time.LocalTime; import br.com.doctors.modelo.administracao.Convenio; import br.com.doctors.modelo.administracao.Funcionario; import br.com.doctors.modelo.administracao.Medico; import br.com.doctors.modelo.administracao.Paciente; import br.com.doctors.modelo.consultas.Consulta; import br.com.doctors.util.StatusAgendamento; // Funcionario: funcion�rio que realizou a confirma��o /** * @author Jonathan/Guilherme */ @Entity @Table(name="agenda") public class Agendamento { @Id @GeneratedValue private Long id; @Type(type="org.joda.time.contrib.hibernate.PersistentLocalDate") private LocalDate dataAgendamento; @Type(type="org.joda.time.contrib.hibernate.PersistentLocalTimeAsString") private LocalTime horaAgendamento; @Enumerated(EnumType.STRING) private StatusAgendamento status; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="convenio_id") private Convenio convenio; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="paciente_id") private Paciente paciente; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="medico_id") private Medico medico; @ManyToOne(fetch=FetchType.EAGER) @JoinColumn(name="funcionario_id") private Funcionario funcionario; @OneToOne(fetch=FetchType.EAGER) @JoinColumn(name="consulta_id") private Consulta consulta; public Agendamento() { status = StatusAgendamento.A_CONFIRMAR; } public Consulta getConsulta() { return consulta; } public void setConsulta(Consulta consulta) { status = (consulta != null ? StatusAgendamento.FINALIZADO : status); this.consulta = consulta; } public void confirmarPreAgendamento(){ status = StatusAgendamento.CONFIRMADO; } public void cancelarPreAgendamento(){ status = StatusAgendamento.CANCELADO; } public void transferirHorario(LocalDate novaData, LocalTime novoHorario){ this.dataAgendamento = novaData; this.horaAgendamento = novoHorario; } @Override public String toString() { return String.format("Data:%s Hora:%s Paciente:%s Status:%s", dataAgendamento, horaAgendamento, paciente, status.toString()); } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Medico getMedico() { return medico; } public Paciente getPaciente() { return paciente; } public Funcionario getFuncionario() { return funcionario; } public void setMedico(Medico medico) { this.medico = medico; } public void setPaciente(Paciente paciente) { this.paciente = paciente; } public void setFuncionario(Funcionario funcionario) { this.funcionario = funcionario; } public Convenio getConvenio() { return convenio; } public void setConvenio(Convenio convenio) { this.convenio = convenio; } public LocalDate getDataAgendamento() { return dataAgendamento; } public void setDataAgendamento(LocalDate dataAgendamento) { this.dataAgendamento = dataAgendamento; } public LocalTime getHoraAgendamento() { return horaAgendamento; } public void setHoraAgendamento(LocalTime horaAgendamento) { this.horaAgendamento = horaAgendamento; } public String getNomePaciente(){ return paciente.getNome(); } public void setStatus(StatusAgendamento status) { this.status = status; } public StatusAgendamento getStatus() { return status; } }