/* 
* 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;

import java.sql.*;
import servidor.datos.base.*;

public class TablaOperadores extends MemTablaOperadores {

    public TablaOperadores() {
    }

    public String buscarNombrePorCodigo(String cod) {
        cod = cod.toUpperCase();
        for (int i = 0; i < filas.size(); i++) {
            RegistroOperadores reg = registro(i);
            if (reg.getCodigo().equalsIgnoreCase(cod)) {
                return reg.getNombre();
            }
        }
        return null;
    }

    public RegistroOperadores buscarCodigo(String cod) {
        cod = cod.toUpperCase();
        for (int i = 0; i < filas.size(); i++) {
            RegistroOperadores reg = registro(i);
            if (reg.getCodigo().equalsIgnoreCase(cod)) {
                return reg;
            }
        }
        return null;
    }

    public void cambiarCapacidad(String cod, String cap, String supls) {
        RegistroOperadores reg = buscarCodigo(cod);
        if (reg != null) {
            reg.setCapacidad(cap);
            reg.setSuplencias(supls);
            update(reg);
        }
    }

    public void cambiarFavoritasEstadisticas(String cod, String favEstadisticas) {
        RegistroOperadores reg = buscarCodigo(cod);
        if (reg != null) {
            reg.setFavEstadisticas(favEstadisticas);
            update(reg);
        }
    }

    public void borrarCodigo(String cod) {
        RegistroOperadores reg = buscarCodigo(cod);
        if (reg != null) {
            delete(reg);
        }
    }

    public RegistroOperadores altaOperador(String codigo, String nombre, String centro) {
        RegistroOperadores reg = null;
        try {
            reg = buscarCodigo(codigo);
            if (reg != null) {
                reg.setNombre(nombre);
                reg.setCentro(centro);
                update(reg);
            } else {
                boolean yaExiste = false;
                ResultSet rs = BaseDatos.bd().abrirTabla("SELECT * FROM Operadores WHERE codigo='" + codigo + "'");
                while (rs.next()) {
                    yaExiste = true;
                }
                if (yaExiste) {
                    BaseDatos.bd().SQL("UPDATE operadores SET nombre='" + nombre
                            + "',activo=1, Centro ='" + centro + "' WHERE codigo='" + codigo + "'");
                }
                reg = nuevoOperador(codigo, nombre, centro, !yaExiste); // si yaExiste creamos el reg. en memoria pero sin INSERT
            }
        } catch (Exception exc) {
        }
        return reg;
    }

    public RegistroOperadores nuevoOperador(String codigo, String nombre, String centro, boolean insertar) {
        RegistroOperadores reg = (RegistroOperadores) this.nuevoRegistro();
        reg.setCodigo(codigo);
        reg.setNombre(nombre);
        reg.setCentro(centro);
        reg.setActivo(true);
        if (insertar) {
            insert(reg);
        }
        return reg;
    }
}
