预约应用程序 - AngularJS可用性选择

时间:2016-01-29 15:52:44

标签: java mysql angularjs

我使用Java Spring(后端api),mysql(DB)和Anguljar JS(前端)开发了一个应用程序,旨在让用户安排约会。每次约会的结束时间是在其开始时间后的5分钟,即8点到2点之间。

在我的数据库中,我有以下信息:  •名为“turno”的表,其中包含给定约会的参数时间和日期。  •另一个表包含所有可用的约会。

我想减去两个数组,以便查看尚未给出哪些约会。目标不是允许用户修复已经由其他人做出的约会。

有没有人知道如何做到这一点?

数据示例:

DB example MAIN Table

Java示例:

@Entity
@Table(name = "turno")
public class Turno implements Serializable {

private static final long serialVersionUID = 1L;
private Long id;
private String solicitante;
private String telefono;
private TipoDocumento tipoDocumento;
private String numeroDocumento;
private String email;
private Horario horario;
private String numeroTurno;
private String fecha;
private Date formatfecha;
private Date controlFecha;


@Id
@GeneratedValue
@Column(name = "id")
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

@Column(name = "solicitante")
public String getSolicitante() {
    return solicitante;
}

public void setSolicitante(String solicitante) {
    this.solicitante = solicitante;
}

@Column(name = "telefono")
public String getTelefono() {
    return telefono;
}

public void setTelefono(String telefono) {
    this.telefono = telefono;
}

@Column(name = "numero_documento")
public String getNumeroDocumento() {
    return numeroDocumento;
}

public void setNumeroDocumento(String numeroDocumento) {
    this.numeroDocumento = numeroDocumento;
}

@Column(name = "email")
public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "horario", referencedColumnName = "id")
public Horario getHorario() {
    return horario;
}

public void setHorario(Horario horario) {
    this.horario = horario;
}

@Column(name = "numero_turno")
public String getNumeroTurno() {
    return numeroTurno;
}

public void setNumeroTurno(String numeroTurno) {
    this.numeroTurno = numeroTurno;
}

@Column(name = "fecha")
public String getFecha() {
    return fecha;
}

public void setFecha(String fecha) {
    this.fecha = fecha;
}

@Column(insertable = false, updatable = false, name = "fecha")
public Date getFormatFecha() {
    return formatfecha;
}

public void setFormatFecha(Date formatfecha) {
    this.formatfecha = formatfecha;
}

@ManyToOne(cascade = CascadeType.MERGE)
@JoinColumn(name = "tipoDocumento", referencedColumnName = "id")
public TipoDocumento getTipoDocumento() {
    return tipoDocumento;
}

public void setTipoDocumento(TipoDocumento tipoDocumento) {
    this.tipoDocumento = tipoDocumento;
}

@Column(name = "fecha_control")
public Date getControlFecha() {
    return controlFecha;
}

public void setControlFecha(Date controlFecha) {
    this.controlFecha = controlFecha;
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((numeroTurno == null) ? 0 : numeroTurno.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;
    Turno other = (Turno) obj;
    if (numeroTurno == null) {
        if (other.numeroTurno != null)
            return false;
    } else if (!numeroTurno.equals(other.numeroTurno))
        return false;
    return true;
}

}

更新

1 个答案:

答案 0 :(得分:0)

如果有人对此感兴趣,我会如何修理它:

控制器中的方法:

@RequestMapping(value = "/horario/{fecha}", method = RequestMethod.GET)
@ResponseBody
public Object queryHorariosLibres(@PathVariable("fecha") Date fecha) {

    List<Long> horariosLibres = null;
    List<Long> turnosTomados = turnoService.getTurnosTomados(fecha);

    Calendar dia = new GregorianCalendar();
    dia.setTime(fecha);

    Horario horario = horarioRepository.findByDia(dia.get(Calendar.DAY_OF_WEEK));  

    horariosLibres = horario.getHorariosLibres(turnosTomados);

    if (horariosLibres == null) {
    return "hola";
    } 
    else
    return horariosLibres;
}  

本地方法:

@Transient
public List<Long> getHorarios(){
    List<Long> horarios = new ArrayList<Long>();

    for(Long i = horarioInicio; i <= horarioFin; i+=300){
        horarios.add(i);
    }
    return horarios;

}

@Transient
public List<Long> getHorariosLibres(List<Long> horariosTomados){

    List<Long> horariosLibres = getHorarios();
    horariosLibres.removeAll(horariosTomados);

    return horariosLibres;

}