/* 
* 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 RegistroColas implements MemRegistro {

    private int Id = 0;
    private String Cola = " ";
    private String Descripcion = " ";
    private int Bonificacion = 0;
    private int Numero = 0;
    private boolean Activa = false;
    private String CodigoEstadistico = " ";
    private boolean CitaPrevia = false;
    private boolean Cerrada = false;
    private String textoCerrada = " ";
    private int UmbralSuplencia = 0;
    private int TiempoMedio = 0;
    private int IdSala = 0;
    private String TextoSalaEspera = " ";
    private int TiempoRetraso = 0;
    private int tiempoRetrasoMiliseg = 20000;
    private boolean nifObligatorio = false;
    private boolean colaEspecial = false;
    private boolean HuecosOpe = false;

    public boolean necesitaSuplentes = false; // inicialmente, ninguna cola usa suplentes

    @Override
    public void cargar(ResultSet rs) {
        try {
            setId(rs.getInt(1));
            setCola(rs.getString(2));
            setDescripcion(rs.getString(3));
            setBonificacion(rs.getInt(4));
            setNumero(rs.getInt(5));
            setActiva(rs.getBoolean(6));
            setCodigoEstadistico(rs.getString(7));
            setCitaPrevia(rs.getBoolean(8));
            setCerrada(rs.getBoolean(9));
            setUmbralSuplencia(rs.getInt(10));
            setTiempoMedio(rs.getInt(11));
            setIdSala(rs.getInt(12));
            setNifObligatorio(rs.getBoolean(13));
            setColaEspecial(rs.getBoolean(14));
            setHuecosOpe(rs.getBoolean(15));
            setTiempoRetraso(rs.getInt(16));
            setTextoSalaEspera(rs.getString(17));
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

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

    @Override
    public StringBuilder registroSBuff() {
        StringBuilder buf = new StringBuilder(100);
        buf.append(Id).append('|');
        buf.append(Cola).append('|');
        buf.append(Descripcion).append('|');
        buf.append(Bonificacion).append('|');
        buf.append(Numero).append('|');
        buf.append(Global.btos(Activa)).append('|');
        buf.append(CodigoEstadistico).append('|');
        buf.append(Global.btos(CitaPrevia)).append('|');
        buf.append(Global.btos(Cerrada)).append('|');
        buf.append(UmbralSuplencia).append('|');
        buf.append(TiempoMedio).append('|');
        buf.append(IdSala).append('|');
        buf.append(TiempoRetraso).append('|');
        buf.append(TextoSalaEspera).append('|');
        buf.append(Global.btos(nifObligatorio)).append('|');
        buf.append(Global.btos(colaEspecial)).append('|');
        buf.append(Global.btos(HuecosOpe)).append('|');
        buf.append(textoCerrada);

        return buf;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        String ncola = Cola.length() == 1 ? " " + Cola : Cola;
        sb.append(ncola).append(" - ");
        sb.append(Global.ajustarDer(Descripcion, 25));
        if (!this.Activa) {
            sb.append(" *INACTIVA*");
        } else {
            if (this.Cerrada) {
                sb.append(" CERR");
            }
            if (this.CitaPrevia) {
                sb.append(" CITA");
            }
            if (this.nifObligatorio) {
                sb.append(" NIF");
            }
        }
        return sb.toString();
    }

    public int getId() {
        return Id;
    }

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

    public String getCola() {
        return Cola;
    }

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

    public String getDescripcion() {
        return Descripcion;
    }

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

    public int getBonificacion() {
        return Bonificacion;
    }

    public void setBonificacion(int Bonificacion) {
        this.Bonificacion = Bonificacion;
    }

    public int getNumero() {
        return Numero;
    }

    public void setNumero(int Numero) {
        this.Numero = Numero;
    }

    public boolean isActiva() {
        return Activa;
    }

    public void setActiva(boolean Activa) {
        this.Activa = Activa;
    }

    public String getCodigoEstadistico() {
        return CodigoEstadistico;
    }

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

    public boolean isCitaPrevia() {
        return CitaPrevia;
    }

    public void setCitaPrevia(boolean CitaPrevia) {
        this.CitaPrevia = CitaPrevia;
    }

    public boolean isCerrada() {
        return Cerrada;
    }

    public boolean isEspecial() {
        return colaEspecial;
    }

    public void setCerrada(boolean Cerrada) {
        this.Cerrada = Cerrada;
    }

    public int getUmbralSuplencia() {
        return UmbralSuplencia;
    }

    public void setUmbralSuplencia(int valorUmbral) {
        this.UmbralSuplencia = valorUmbral;
    }

    public int getTiempoMedio() {
        return TiempoMedio;
    }

    public void setTiempoMedio(int tiempoMedio) {
        this.TiempoMedio = tiempoMedio;
    }

    public String getIdSala() {
        return "" + IdSala;
    }

    public void setIdSala(int idSala) {
        this.IdSala = idSala;
    }

    public String getTextoSalaEspera() {
        return TextoSalaEspera;
    }

    public void setTextoSalaEspera(String TextoTicke) {
        if (TextoTicke == null || TextoTicke.equals("")) {
            TextoTicke = " ";
        } else {
            this.TextoSalaEspera = TextoTicke;
        }
    }

    public int getTiempoRetraso() {
        return TiempoRetraso;
    }

    public void setTiempoRetraso(int tiempoRetraso) {
        this.TiempoRetraso = tiempoRetraso;
        if (tiempoRetraso < 1) {
            tiempoRetrasoMiliseg = servidor.Configuracion.getConfiguracion().retrasoTicket;
        } else {
            tiempoRetrasoMiliseg = tiempoRetraso * 1000;
        }
    }

    public int getTiempoRetrasoMiliseg() {
        return tiempoRetrasoMiliseg;
    }

    public boolean isNifObligatorio() {
        return nifObligatorio;
    }

    public void setNifObligatorio(boolean nifObligatorio) {
        this.nifObligatorio = nifObligatorio;
    }

    public void setColaEspecial(boolean colaEspecial) {
        this.colaEspecial = colaEspecial;
    }

    public void setHuecosOpe(boolean huecosOpe) {
        this.HuecosOpe = huecosOpe;
    }

    public boolean esColaEspecial() {
        return colaEspecial;
    }

    public void setTextoCerrada(String txt) {
        if (txt == null || txt.equals("")) {
            txt = " ";
        } else {
            textoCerrada = txt;
        }
    }

    public String getTextoCerrada() {
        return textoCerrada;
    }
}
