/* 
* Copyright 2016 Agencia Estatal de Administración Tibutaria
*
* Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto
* sean aprobadas por la Comisión Europea– versiones
* posteriores de la EUPL (la «Licencia»);
* Solo podrá usarse esta obra si se respeta la Licencia.
* Puede obtenerse una copia de la Licencia en:
*  
* https://joinup.ec.europa.eu/software/page/eupl
*  
* Salvo cuando lo exija la legislación aplicable o se acuerde
* por escrito, el programa distribuido con arreglo a la
* Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
* DE NINGÚN TIPO, ni expresasni implícitas.
*
* Véase la Licencia en el idioma concreto que rige los permisos y 
* limitaciones que establece la Licencia.
*/ 

package servidor.datos.base;

import java.sql.*;
import servidor.utiles.*;

public class RegistroCandidatos implements MemRegistro, Comparable {

    private int Id = 0;
    private String Nif = " ";
    private String Nombre = " ";
    private Timestamp HoraCita;
    private String Estado = " ";
    private Timestamp HoraCalculada;
    private Timestamp HoraAtendido;
    private Timestamp HoraPresente;
    private Timestamp HoraCalculada2;
    private String Turno = " ";
    private int CitaMultiple = 1;
    private String NumeroTicket = " ";
    private String Cola = " ";
    private String Operador = " ";
    private Timestamp HoraFinalizado;
    private String CodigoEstadistico = " ";
    private String CitaVinculada = " ";
    private String CodigoGestor = " ";
    private String Niu = " ";
    private String Mesa = " ";
    private Timestamp HoraPresente2;
    private String NombreCola = " ";
    private boolean GestionHuecos = false;
    private boolean DNIe = false;
    private java.util.Date horaEstimada;
    public boolean resucitable = false;
    private String Centro = " ";

    public RegistroCandidatos() {
    }

    //<editor-fold desc="Metodos interfaz MemRegistro>
    @Override
    public void cargar(ResultSet rs) {
        try {
            setId(rs.getInt(1));
            setNif(rs.getString(2));
            setNombre(rs.getString(3));
            setHoraCita(rs.getTimestamp(4));
            setEstado(rs.getString(5));
            setHoraCalculada(rs.getTimestamp(6));
            setHoraAtendido(rs.getTimestamp(7));
            setHoraPresente(rs.getTimestamp(8));
            setHoraCalculada2(rs.getTimestamp(9));
            setTurno(rs.getString(10));
            setCitaMultiple(rs.getInt(11));
            setNumeroTicket(rs.getString(12));
            setCola(rs.getString(13));
            setOperador(rs.getString(14));
            setHoraFinalizado(rs.getTimestamp(15));
            setCodigoEstadistico(rs.getString(16));
            setCitaVinculada(rs.getString(17));
            setCodigoGestor(rs.getString(18));
            setNiu(rs.getString(19));
            setMesa(rs.getString(20));
            setHoraPresente2(rs.getTimestamp(21));
            setNombreCola(rs.getString(22));
            setGestionHuecos(rs.getBoolean(23));
            setDNIe(rs.getBoolean(24));
            setCentro(rs.getString("Centro"));
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public String registro() {
        return registroSBuff().toString();
    }

    @Override
    public StringBuilder registroSBuff() {
        StringBuilder buf = new StringBuilder(300);
        buf.append(Id).append('|');    // 0
        buf.append(Nif).append('|');   // 1
        buf.append(Nombre).append('|');   // 2
        buf.append(HoraCita).append('|');    // 3
        buf.append(Estado).append('|');      // 4
        buf.append(HoraCalculada).append('|');      // 5
        buf.append(HoraAtendido).append('|');      // 6
        buf.append(HoraPresente).append('|');      // 7
        buf.append(HoraCalculada2).append('|');      // 8
        buf.append(Turno).append('|');      // 9
        buf.append(CitaMultiple).append('|');     // 10
        buf.append(NumeroTicket).append('|');     // 11
        buf.append(Cola).append('|');     // 12
        buf.append(Operador).append('|');     // 13
        buf.append(HoraFinalizado).append('|');     // 14
        buf.append(CodigoEstadistico).append('|');     // 15
        buf.append(CitaVinculada).append('|');     // 16
        buf.append(CodigoGestor).append('|');     // 17
        buf.append(Niu).append('|');     // 18
        buf.append(Mesa).append('|');     // 19
        buf.append(getHoraEstimada()).append('|');     // 20
        buf.append(HoraPresente2).append('|');     // 21
        buf.append(NombreCola).append('|');   // 22
        buf.append(Global.btos(GestionHuecos)).append('|');  // 23
        buf.append(Global.btos(DNIe)).append('|');  // 24
        buf.append(Centro);// 25
        return buf;
    }

    @Override
    public String toString() {
        return "";
    }

    public String toStringResu() {
        StringBuilder sb = new StringBuilder();
        sb.append(Fecha.formatoHoraHM(getHoraCita())).append(" ").append(getNumeroTicket()).append(" ").append(getNif()).append(" ").append(getNombre());
        return sb.toString();
    }

    @Override
    public int compareTo(Object o) {
        RegistroCandidatos rc = (RegistroCandidatos) o;
        int comp = 0;
        try {
            comp = this.HoraCita.compareTo(rc.HoraCita);
            if (comp == 0) {
                comp = this.HoraPresente.compareTo(rc.HoraPresente);
                if (comp == 0) {
                    comp = this.Id - rc.Id;
                }
            }
        } catch (Exception exc) {
            return -1;
        }
        return comp;
    }

//</editor-fold>
    //<editor-fold desc="Acceso a propiedades">
    public int getId() {
        return Id;
    }

    public void setId(int Id) {
        this.Id = Id;
    }

    public String getNif() {
        return Nif;
    }

    public void setNif(String Nif) {
        if (Nif == null || Nif.equals("")) {
            this.Nif = " ";
        } else {
            this.Nif = Nif;
        }
    }

    public String getNombre() {
        return Nombre;
    }

    public void setNombre(String Nombre) {
        if (Nombre == null || Nombre.equals("")) {
            this.Nombre = " ";
        } else {
            this.Nombre = Nombre;
        }
    }

    public String getCentro() {
        return Centro;
    }

    public void setCentro(String centro) {
        if (centro == null || centro.equals("")) {
            this.Centro = " ";
        } else {
            this.Centro = centro;
        }
    }

    public Timestamp getHoraCita() {
        return HoraCita;
    }

    public void setHoraCita(Timestamp HoraCita) {
        this.HoraCita = HoraCita;
    }

    public String getEstado() {
        return Estado;
    }

    public void setEstado(String Estado) {
        if (Estado == null || Estado.equals("")) {
            this.Estado = " ";
        } else {
            this.Estado = Estado;
        }
    }

    public Timestamp getHoraCalculada() {
        return HoraCalculada;
    }

    public void setHoraCalculada(Timestamp HoraCalculada) {
        this.HoraCalculada = HoraCalculada;
    }

    public Timestamp getHoraAtendido() {
        return HoraAtendido;
    }

    public void setHoraAtendido(Timestamp HoraAtendido) {
        this.HoraAtendido = HoraAtendido;
    }

    public Timestamp getHoraPresente() {
        return HoraPresente;
    }

    public void setHoraPresente(Timestamp HoraPresente) {
        this.HoraPresente = HoraPresente;
    }

    public Timestamp getHoraCalculada2() {
        return HoraCalculada2;
    }

    public void setHoraCalculada2(Timestamp HoraCalculada2) {
        this.HoraCalculada2 = HoraCalculada2;
    }

    public String getTurno() {
        return Turno;
    }

    public void setTurno(String Turno) {
        if (Turno == null || Turno.equals("")) {
            this.Turno = " ";
        } else {
            this.Turno = Turno;
        }
    }

    public int getCitaMultiple() {
        return CitaMultiple;
    }

    public void setCitaMultiple(int CitaMultiple) {
        this.CitaMultiple = CitaMultiple;
    }

    public String getNumeroTicket() {
        return NumeroTicket;
    }

    public void setNumeroTicket(String NumeroTicket) {
        if (NumeroTicket == null || NumeroTicket.equals("")) {
            this.NumeroTicket = " ";
        } else {
            this.NumeroTicket = NumeroTicket;
        }
    }

    public boolean tieneTicket() {
        return NumeroTicket != null && NumeroTicket.trim().length() > 0;
    }

    public String getCola() {
        return Cola;
    }

    public void setCola(String Cola) {
        if (Cola == null || Cola.equals("")) {
            this.Cola = " ";
        } else {
            this.Cola = Cola;
        }
    }

    public String getOperador() {
        return Operador;
    }

    public void setOperador(String Operador) {
        if (Operador == null || Operador.equals("")) {
            this.Operador = " ";
        } else {
            this.Operador = Operador;
        }
    }

    public Timestamp getHoraFinalizado() {
        return HoraFinalizado;
    }

    public void setHoraFinalizado(Timestamp HoraFinalizado) {
        this.HoraFinalizado = HoraFinalizado;
    }

    public String getCodigoEstadistico() {
        return CodigoEstadistico;
    }

    public void setCodigoEstadistico(String CodigoEstadistico) {
        if (CodigoEstadistico == null || CodigoEstadistico.equals("")) {
            this.CodigoEstadistico = " ";
        } else {
            this.CodigoEstadistico = CodigoEstadistico;
        }
    }

    public String getCitaVinculada() {
        return CitaVinculada;
    }

    public void setCitaVinculada(String CitaVinculada) {
        if (CitaVinculada == null || CitaVinculada.equals("")) {
            this.CitaVinculada = " ";
        } else {
            this.CitaVinculada = CitaVinculada;
        }
    }

//   public String getIndicadores() {
//      return Indicadores;
//   }
//
//   public void setIndicadores(String Indicadores) {
//      if (Indicadores == null || Indicadores.equals("")) {
//         this.Indicadores = " ";
//      } else {
//         this.Indicadores = Indicadores;
//      }
//   }
    public String getCodigoGestor() {
        return CodigoGestor;
    }

    public void setCodigoGestor(String CodigoGestor) {
        if (CodigoGestor == null || CodigoGestor.equals("")) {
            this.CodigoGestor = " ";
        } else {
            this.CodigoGestor = CodigoGestor;
        }
    }

    public String getNiu() {
        return Niu;
    }

    public boolean provieneDeCitaPrevia() {
        return (Niu.startsWith("·"));
    }

    public void setNiu(String Niu) {
        if (Niu == null || Niu.equals("")) {
            this.Niu = " ";
        } else {
            this.Niu = Niu;
        }
    }

    public String getMesa() {
        return Mesa;
    }

    public void setMesa(String mesa) {
        if (mesa == null || mesa.length() == 0) {
            Mesa = " ";
        } else {
            Mesa = mesa;
        }
    }

    public void setHoraEstimada(java.util.Date hora) {
        horaEstimada = hora;
    }

    public Timestamp getHoraEstimada() {
        if (horaEstimada == null) {
            return null;
        }
        return new Timestamp(horaEstimada.getTime());
    }

    public Timestamp getHoraPresente2() {
        if (HoraPresente2 == null) {
            return null;
        }
        return HoraPresente2;
    }

    public void setHoraPresente2(Timestamp HoraPresente2) {
        this.HoraPresente2 = HoraPresente2;
    }

    public String getNombreCola() {
        return NombreCola;
    }

    public void setNombreCola(String nomCola) {
        if (nomCola == null || nomCola.equals("")) {
            this.NombreCola = " ";
        } else {
            this.NombreCola = nomCola;
        }
    }

    public boolean isGestionHuecos() {
        return GestionHuecos;
    }

    public void setGestionHuecos(boolean v) {
        this.GestionHuecos = v;
    }

    public boolean isDNIe() {
        return DNIe;
    }

    public void setDNIe(boolean v) {
        this.DNIe = v;
    }
   //</editor-fold>
}
