<?php
date_default_timezone_set('America/Lima');
session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token, Authorization');
try{
	$response_json	=array('success'=>false, 'num_rows'=>-1, 'rows'=>array(), "messages"=>"Estas intentando algo inusual en el sistema");
	require_once("./class/GLibfunciones.php");
	$OConex = new GConector();
	$init_stmt=$OConex->stmt_init();
	$OCliente = new GClientePag();
	$data = json_decode(file_get_contents('php://input'));
	$response = "";
	switch($_GET['oper']){
		case 'listar':
			$sql=$OCliente->listar();
			if(!$init_stmt->prepare($sql))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);		
			$init_stmt->execute();
			$result=$init_stmt->get_result();
			$response_json['success']=true;
			$response_json['totalItemCount']=$result->num_rows;
			if($response_json['totalItemCount']==0)
				break;			
			$i=0;
			while($rows=$result->fetch_assoc()){
				array_push($response_json['rows'], array_merge($rows, array("item"=>++$i)));
			}
            $response = $response_json['rows'];  
		break;					
		case 'guardar':
			$id_usuario = 1;
			//if(!isset($data->idTipoDocumento, $data->nuDocumento, $data->noCliente))
			//break;
			$sql_check=$OCliente->listarXEmail();
			$stmt_check=$init_stmt;
			$stmt_check->prepare($sql_check);
			$stmt_check->bind_param("s", $data->noCorreo);
			$stmt_check->execute();
			$stmt_check->store_result();
			if ($stmt_check->num_rows > 0) {
				$stmt_check->bind_result($existing_id);
				$stmt_check->fetch();

				$response_json['success']=true;
				$response_json['id']=$existing_id;
				$response_json['affected_rows']=$stmt_check->affected_rows;
				$response_json['messages']="El registro existe";
			}else{
				$OConex->setAutocommit(FALSE);
				$init_commit=$OConex->stmt_init();			
				$method=(empty($data->id))?'agregar':'actualizar';
				$data->noCliente=strtoupper($data->noCliente);
				$sql=call_user_func(array($OCliente, $method));
				//var_dump("else");	
				//die();
				if(!$init_commit->prepare($sql))
					throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico<br/>", $OConex->error, $OConex->errno);							
				if(!$init_commit->bind_param('isssssssisii',$data->idTipoDocumento,$data->idUbigeo,$data->nuDocumento,$data->noCliente,$data->noDireccion,$data->nuCelular,$data->noCorreo,$data->nuTelefono,$id_usuario,$data->noReferencia,$data->idUsuarioModificacion,$data->id))
					throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);
				$init_commit->execute();  
				$last_id = $init_commit->insert_id;
	
				$response_json['success']=true;
				$response_json['id']=$last_id;
				$response_json['affected_rows']=$init_commit->affected_rows;
				$response_json['messages']="El registro fue guardaron satisfactoriamente";
				$OConex->commit();
			}
			$response = $response_json;  
        break;
		case 'eliminar':
			if(!isset($data) || empty($data))
				break;
			$sql=$OCliente->eliminar();
			if(!$init_stmt->prepare($sql))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico<br/>", $OConex->error, $OConex->errno);
			if(!$init_stmt->bind_param('i', $data))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);
			$init_stmt->execute();
			$response_json['success']=TRUE;
			$response_json['affected_rows']=$init_stmt->affected_rows;
			$response_json['messages']=($init_stmt->affected_rows==1)?"Se elimino con éxito el registro":"";
			if($init_stmt->affected_rows!=1 && $init_stmt->errno!=0)
				$response_json['messages']=errorMySQL($init_stmt->errno);

			$response = $response_json;  
		break;	

		case 'listarTipoDocumento':
            $item=1; 
            $sql=$OCliente->listarTipoDocumento();
            if(!$init_stmt->prepare($sql))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);		
			$init_stmt->execute();
			$result=$init_stmt->get_result();
			$response_json['success']=true;
			$response_json['totalItemCount']=$result->num_rows;
			if($response_json['totalItemCount']==0)
				break;			
			$i=0;
			while($rows=$result->fetch_assoc()){
				array_push($response_json['rows'], array_merge($rows, array("item"=>++$i)));
			}
            $response = $response_json['rows'];  
		break;
		
	}
	echo json_encode($response);
}catch(Exception $e){
	echo $e;
}
?>