<?php
require_once("vendor/autoload.php");

use \CloudConvert\CloudConvert;
use \CloudConvert\Models\Job;
use \CloudConvert\Models\Task;

error_reporting(E_ALL);
ini_set('display_errors',1);
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 , X-Requested-With');
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();
	$OClase = new GClase();

	$data = json_decode(file_get_contents('php://input'));

    $response = "";

	function obtenerUrlVideoAnterior($id) {
		$OConex = new GConector();
		$init_stmt=$OConex->stmt_init();
		$OCurso = new GCurso();

		$sql=$OCurso->obtenerUrlVideoImagen();
		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);		
		
		if(!$init_stmt->bind_param('i', $id))
			throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);

		$init_stmt->execute();
		// Obtiene el resultado
		$result = $init_stmt->get_result();
		// Extrae la fila
		$row = $result->fetch_assoc();
		// Retorna el valor de la columna 'urlVideo'

		return ($row) ? $row['video'] : null;
	}

	function obtenerUrlImagenAnterior($id) {
		$OConex = new GConector();
		$init_stmt=$OConex->stmt_init();
		$OCurso = new GCurso();

		$sql=$OCurso->obtenerUrlVideoImagen();
		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);		
		
		if(!$init_stmt->bind_param('i', $id))
			throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);

		$init_stmt->execute();
		// Obtiene el resultado
		$result = $init_stmt->get_result();
		// Extrae la fila
		$row = $result->fetch_assoc();
		// Retorna el valor de la columna 'urlVideo'

		return ($row) ? $row['imagen'] : null;
	}

	function eliminarArchivoDelServidor($urlVideo) {
		// Directorio donde se encuentra el video (ajusta esto según tu estructura de archivos)
		$directorioVideos = getcwd() . "/videos/";

		// Ruta completa del video
		$rutaCompletaVideo = $directorioVideos . $urlVideo;
	
		// Verifica si el archivo existe antes de intentar eliminarlo
		if (file_exists($rutaCompletaVideo)) {
			// Intenta eliminar el archivo
			if (unlink($rutaCompletaVideo)) {
				// Éxito al eliminar el archivo
			} else {
				// Error al eliminar el archivo
			}
		} else {
			// El archivo no existe
		}
	}

	switch($_GET['oper']){
		case 'listar':
			$sql=$OClase->lista();
			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);
			if(!$init_stmt->bind_param('i', $_GET['id']))
				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 'listarTaller':
			$sql=$OClase->listarTaller();
			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 'listarVideoId':
			$sql=$OClase->listaVideoId();
			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);		
			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();
			$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':
			//Fin guardar foto
			if(empty($data->id)){
				$sql=$OClase->guardar();
			}else{
				$sql=$OClase->modificar();
			}				

			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);
			if(!$init_stmt->bind_param('siii', $data->noClase,$data->idCurso,$data->idTipoPlan,$data->id))
				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']=($response_json['affected_rows']==1)?"Se registro con éxito los datos del correctamente":"No se realizaron cambios en el registro Departamento";
           	$response = true; 
		break;
		case 'guardarTaller': 
			if(!isset($_POST["noClase"]))
					break;
				$_POST["noClase"]=strtoupper($_POST["noClase"]);
				if($_POST["id"] == 0){
					$sql=$OClase->guardarTaller();
				}else{	
					$previousImagenUrl = obtenerUrlImagenAnterior($_POST["id"]);
					// Comparar la URL anterior con la nueva URL
					if (!empty($previousImagenUrl) && $previousImagenUrl != $_POST["imagen"]) {
						// Eliminar el video anterior del servidor
						eliminarArchivoDelServidor($previousImagenUrl);
					}
					$sql=$OClase->modificarTaller();
				}
	
				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);
				if(!$init_stmt->bind_param('siddssi',$_POST["noClase"], $_POST["idTipoPlan"],$_POST["vaCurso"],$_POST["vaCursoDol"],$_POST["imagen"],$_POST["deCurso"],$_POST["id"]))
					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']=($response_json['affected_rows']==1)?"Se registro con éxito los datos del correctamente":"No se realizaron cambios en el registro";
	
				$response = $response_json;  
			break;
			case 'guardarImagen':
				if (isset($_FILES['image'])) {
					$targetDir = getcwd() . "/videos/"; // Ruta de destino en tu servidor
					$targetFile = $targetDir.basename($_FILES['image']['name']);
				
					// Mueve el archivo a la ubicación de destino
					if (move_uploaded_file($_FILES['image']['tmp_name'], $targetFile)) {
						echo "Imagen subida correctamente";
					} else {
						echo "Error al subir la imagen";
					}
				}
			break;
		case 'eliminar':
			if(!isset($data) || empty($data))
				break;
			$sql=$OClase->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 'listarTipoPlan':
            $item=1; 
            $sql=$OClase->listarTipoPlan();
            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);		
			if(!$init_stmt->bind_param('i', $_GET['idTipoCurso']))
				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 'actualizaIndice':
			$sql=$OClase->actualizarIndice();
			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);
			if(!$init_stmt->bind_param('ii', $data->indiceNew,$data->idCurrent))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);
			$init_stmt->execute();
			
			$sql2=$OClase->actualizarIndice();
			$init_stmt2=$OConex->stmt_init();
			if(!$init_stmt2->prepare($sql2))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);
			if(!$init_stmt2->bind_param('ii', $data->indiceCurrent,$data->idNew))
				throw new GException("Vaya! ocurrio un problema en el sistema.<br/>Consulte con el Soporte Tecnico", $OConex->error, $OConex->errno);
			$init_stmt2->execute();


			$response_json['success']=true;
			$response_json['affected_rows']=$init_stmt->affected_rows;
			$response_json['messages']=($response_json['affected_rows']==1)?"Se registro con éxito los datos del correctamente":"No se realizaron cambios en el registro Departamento";
           	$response = true; 
		break;
    }

	echo json_encode($response);
}catch(Exception $e){
	echo $e;
}
?>