<?php
if ( ! defined('BASEPATH')) exit('No se permite el acceso directo a las p&aacute;ginas de este sitio.');

class ControlUsuarios extends CI_Controller 
{
	function  __construct() 
	{
		parent::__construct();

		$this->load->library('nu_soap');
		
		// Instanciamos la clase servidor de nusoap
		$this->NuSoap_server = new nusoap_server();

		$url = base_url().'controlUsuarios/index/wsdl'; //Es la ruta para hacer la conexión 
		
		// Indicamos cómo se debe formar el WSDL
		$this->NuSoap_server->configureWSDL('ControlWDSL', 'urn:ControlWDSL', $url, 'rpc');

		$this->NuSoap_server->wsdl->addComplexType
		(
			'Control',         # Creamos nuestro propio tipo de datos, llamado Usuarios, lo vamos a utilizar para regresar la respuesta
			'complexType',   	# Es de tipo complejo, es decir, un array o array asociativo
			'array',          	# Su equivalencia en PHP en este caso, es de tipo array, ('struct' equivale a array asociativo)
			'',               	# Composición: 'all' | 'sequence' | 'choice', en nuestro caso no aplica
			'SOAP-ENC:Array', 	# Cómo se debe tratar y validar esta estructura de dato
			array				# Los elementos del array
			(           		
				//'id' => array('name' => 'id', 'type' => 'xsd:int'), 
				//'nombre' => array('name' => 'nombre', 'type' => 'xsd:string'), 
				'Resultado' => array('name' => 'resultado', 'type' => 'xsd:string')
			)
		);

		$this->NuSoap_server->register
		(
			// crear en forma de clase (CI_Controller..nombre del método)
			'ControlUsuarios..registroEventos',    			# El nombre de la función PHP: Clase.método ó Clase..método
			array('a_Eventos' => 'xsd:ArrayOfString') ,     # Qué datos recibe
			array('return' => 'tns:Control'),  				# Qué datos regresa, aquí se aprecia nuestro propio tipo de datos que definimos en addComplexType()
			'urn:ControlWDSL',              				# El elemento namespace de nuestro método
			'urn:ControlWDSL#registroEventos',  			# La acción u operación de nuestro método
			'rpc',                              			# El estilo del XML
			'encoded',                         				# Cómo se usa: 'literal' | 'encode'
			"Registro de eventos" 							# Texto de ayuda de nuestro método
		);
	} // end Constructor

	function index() 
	{
		$_SERVER['QUERY_STRING'] = '';
		
		if ( $this->uri->segment(3) == 'wsdl' ) 
		{
			$_SERVER['QUERY_STRING'] = 'wsdl';
		} // endif
		
		$this->NuSoap_server->service(file_get_contents('php://input'));
	}  // end function
	
	public function registroEventos($eventos)
	{
		var_dump($eventos['a_Eventos'][1]);
		//echo 'E: '.$eventos;
		$CI =& get_instance();

      	$CI->load->model('produccion_modelo','produccion');

      	$registro = $CI->produccion->registrarEventos($eventos);
		
		$resultado="OK";
		
		if($registro=="0")
		{
			$resultado="Los datos no fueron guardados correctamente";
		}
	
		$respuesta = array
		(
			array
			(
				'resultado'		=> $resultado, 
			)
		);
		
		return $respuesta;
	}
} // end Class
?>
