/*  METODOS DE SERVICIO DEL CLIENTE
    Estos métodos invocan a los servicios web correspondientes y devuelven la información devuelta por éstos en forma de
    objetos.
    NOTA IMPORTANTE: Todos los métodos pueden devolver, o bien un objeto Array cuyos elementos pertenecen al tipo indicado 
    en el comentario de la función, o bien un objeto del tipo indicado, o bien un objeto de tipo Error, del cual podemos
    obtener información de código de error (Error.codigo) y descripción (Error.descripcion), en función del código de error,
    definido en TiposError.js se tomarán decisiones de actuación. Para determinar si ha ocurrido un error tras la ejecución de
    traducirTextoAObjecto(...), podemos utilizar el operador instanceof para comparar el tipo del objeto devuelto, por ejemplo
    traducirTextoAObjecto(clientes) instanceof Error, devolverá true si efectivamente ha ocurrido un error.
*/
    
    //Devuelve un array (de objetos CarritoPedido) con los pedidos del cliente    
    function obtenerPedidosDeCliente(codCliente) {
        var pedidosCliente = ClientesWebServiceSoapHttpPort_obtenerPedidosDeCliente(codCliente);		
        return traducirTextoAObjeto(pedidosCliente);      
    }
    
    //Devuelve un array (de objetos CarritoPedido) con los carritos del cliente 
    function obtenerCarritosDeCliente(codCliente) {
        var carritosCliente = ClientesWebServiceSoapHttpPort_obtenerCarritosDeCliente(codCliente);		
        return traducirTextoAObjeto(carritosCliente);     
    }
    
    //Devuelve el Cliente buscado
    function recuperarCliente(codCliente) {
        var cli = ClientesWebServiceSoapHttpPort_recuperarCliente(codCliente);		
        var clientes = traducirTextoAObjeto(cli);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return clientes[0]; 
    }
    
    //Devuelve el Cliente buscado
    function autenticarCliente(login, password) {
        var cli = ClientesWebServiceSoapHttpPort_autenticarCliente(login, password);		
        var clientes = traducirTextoAObjeto(cli);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return clientes[0]; 
    }    
    
    //Crea un nuevo cliente en el servidor. Devuelve ese cliente
    function crearCliente() {
        var cli = ClientesWebServiceSoapHttpPort_crearCliente();		
        var clientes = traducirTextoAObjeto(cli);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return clientes[0];     
    }
    
     //Modifica el cliente en el servidor con los atributos del pasado como argumento, Devuelve ese cliente
    function modificarCliente(cliente) {        
        var cli = ClientesWebServiceSoapHttpPort_modificarCliente(cliente.codCliente, cliente.nombre, cliente.direccion,
                    cliente.logotipo, cliente.razonSocial, cliente.tipo, cliente.codFamiliaProfesional,
                    cliente.email, cliente.fechaAlta, cliente.login, cliente.password, cliente.baja, cliente.apellidos,
                    cliente.localidad, cliente.provincia, cliente.pais, cliente.codFormaPago, cliente.dtoImpresion, 
                    cliente.dtoAccesorios, cliente.exentoIva, cliente.telefono1, cliente.telefono2);
        var clientes = traducirTextoAObjeto(cli);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return clientes[0];             
    }
    
    //Obtiene un array de objetos String con las direcciones
    function obtenerUltimasDireccionesEntrega(codCliente) {
        var dirs = ClientesWebServiceSoapHttpPort_obtenerUltimasDireccionesEntrega(codCliente);		        
        var direcciones = dirs.split("|");     
        var arrayDirecciones = new Array();
        //Para todos los elementos separados por "|" se crea un objeto
        for(i=1; i<direcciones.length; i++){
            arrayDirecciones.push(direcciones[i]);
        }
        
        return arrayDirecciones;    
    }
    
    //Obtiene un array de objetos String con las direcciones
    function obtenerUltimasDireccionesFactura(codCliente) {
        var dirs = ClientesWebServiceSoapHttpPort_obtenerUltimasDireccionesFactura(codCliente);		        
        var direcciones = dirs.split("|");     
        var arrayDirecciones = new Array();
        //Para todos los elementos separados por "|" se crea un objeto
        for(i=1; i<direcciones.length; i++){
            arrayDirecciones.push(direcciones[i]);
        }
        
        return arrayDirecciones;    
    }
    
    //Devuelve la FormaPago buscada
    function obtenerFormaPagoDeCliente(codCliente) {
        var formaP = ClientesWebServiceSoapHttpPort_obtenerFormaPagoDeCliente(codCliente);		
        var formasPago = traducirTextoAObjeto(formaP);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return formasPago[0]; 
    }   
    
    //Devuelve la FamiliaProfesional buscada
    function obtenerFamiliaProfesionalDeCliente(codCliente) {
        var fam = ClientesWebServiceSoapHttpPort_obtenerFamiliaProfesionalDeCliente(codCliente);		
        var familias = traducirTextoAObjeto(fam);          
        //Aunque se devuelve un array, el elemento a devolver sería el primero (podría ser null)                
        return familias[0]; 
    }     
    
    function recuperarArchivosCliente(codigoSecreto) {
        var archs = ClientesWebServiceSoapHttpPort_recuperarArchivosCliente(codigoSecreto);		        
        var archivos = archs.split("|");     
        var arrayArchivos = new Array();
        //Para todos los elementos separados por "|" se crea un objeto
        for(i=1; i<archivos.length; i++){
            arrayArchivos.push(archivos[i]);
        }
        
        return arrayArchivos;      
    }
