<?php 


class ControladorPaciente {

	static public function ctrMostrarPaciente($item, $valor){

		$tabla = "paciente";

		$respuesta = ModeloPaciente::MdlMostrarPaciente($tabla, $item, $valor);

		return $respuesta;
	}


	/*=============================================
	REGISTRO DE CLIENTE
	=============================================*/

	static public function ctrCrearPaciente(){
		if(isset($_POST["nuevoNombre"])){
			if(preg_match('/[a-zA-Z0-9 ]/', $_POST["nuevoNombre"]) &&
			   preg_match('/^[0-9]+$/', $_POST["nuevoRuc"])){

				$estado = 1;
				$tabla = "paciente";
				$datos = array("dni" => $_POST["nuevoRuc"],
					           "nombres" => $_POST["nuevoNombre"],
							   "apellidos" => $_POST["nuevoApellido"],
					           "correo" => $_POST["nuevoCorreo"],
					           "contacto" => $_POST["nuevoTelefono"],
							   "codigo_hc" => $_POST["nuevoHistoria"],
							   "sexo" => $_POST["genero"],
							   "fecha_nacimiento" => $_POST["nuevoFecha"],
					           "direccion"=>$_POST["nuevoDireccion"],
							   "id_ubigeo_nacimiento" => $_POST["nuevoDistrito"], // Captura el ID del distrito
                			   "id_ubigeo_procedencia" => $_POST["procedenciaDistrito"], // Captura el ID del distrito
							   "ocupacion" => $_POST["nuevaOcupacion"],
							   "estado_civil" => $_POST["nuevoEstadoCivil"],
							   "grado_instruccion" => $_POST["nuevoGradoInstruccion"],
							   "religion" => $_POST["nuevoReligion"],
							   "estado"=>$estado);

				$respuesta = ModeloPaciente::mdlIngresarPaciente($tabla, $datos);
			
				if($respuesta == "ok"){
					echo '<script>
					swal({
						type: "success",
						title: "¡El Paciente ha sido guardado correctamente!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"
					}).then(function(result){
						if(result.value){						
							window.location = "paciente";
						}
					});			
					</script>';
				}	
			}else{

				echo '<script>

					swal({

						type: "error",
						title: "¡El Paciente no puede ir vacío o llevar caracteres especiales!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"

					}).then(function(result){

						if(result.value){
						
							window.location = "paciente";

						}

					});
				

				</script>';

			}


		}


	}

	/*=============================================
	EDITAR DE CLIENTE
	=============================================*/

	static public function ctrEditarPaciente(){
		if(isset($_POST["editarNombre"])){
			if(preg_match('/[a-zA-Z0-9 ]/', $_POST["editarNombre"]) &&
			   preg_match('/^[0-9]+$/', $_POST["editarRuc"]) &&
			   /*preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $_POST["editarCorreo"]) && */ 
			   preg_match('/^[#\.\-a-zA-Z0-9 ]+$/', $_POST["editarDireccion"])){
				$tabla = "paciente";
				$datos = array("dni" => $_POST["editarRuc"],
							   "id_paciente" => $_POST["idPaciente"],
					           "nombres" => $_POST["editarNombre"],
							   "apellidos" => $_POST["editarApellido"],
					           "correo" => $_POST["editarCorreo"],
					           "contacto" => $_POST["editarTelefono"],
							   "codigo_hc" => $_POST["editarHistoria"],
							   "sexo" => $_POST["editarGenero"],
							   "fecha_nacimiento" => $_POST["editarFecha"],
					           "direccion"=>$_POST["editarDireccion"],
							   "id_ubigeo_nacimiento" => $_POST["editarDistrito"],
            				   "id_ubigeo_procedencia" => $_POST["editarProcedenciaDistrito"],
							   "ocupacion" => $_POST["editarOcupacion"],
								"estado_civil" => $_POST["editarEstadoCivil"],
								"grado_instruccion" => $_POST["editarGradoInstruccion"],
								"religion" => $_POST["editarReligion"]);

				$respuesta = ModeloPaciente::mdlEditarPaciente($tabla, $datos);		
				if($respuesta == "ok"){
					echo '<script>
					swal({
						type: "success",
						title: "¡El paciente ha sido guardado correctamente!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"
					}).then(function(result){
						if(result.value){					
							window.location = "paciente";
						}
					});
					</script>';


				}	


			}else{

				echo '<script>

					swal({

						type: "error",
						title: "¡El Paciente no puede ir vacío o llevar caracteres especiales!",
						showConfirmButton: true,
						confirmButtonText: "Cerrar"

					}).then(function(result){

						if(result.value){
						
							window.location = "paciente";

						}

					});
				

				</script>';

			}
		}
	}

	static public function ctrBorrarPaciente(){

		if(isset($_GET["idPaciente"])){

			$tabla ="paciente";
			$datos = $_GET["idPaciente"];

			$respuesta = ModeloPaciente::mdlBorrarPaciente($tabla, $datos);

			if($respuesta == "ok"){

				echo'<script>

				swal({
					  type: "success",
					  title: "El Paciente ha sido borrado correctamente",
					  showConfirmButton: true,
					  confirmButtonText: "Cerrar"
					  }).then(function(result){
								if (result.value) {

								window.location = "paciente";

								}
							})

				</script>';

			}		

		}

	}

	 public function ctrCrearIngreso(){

			if(isset($_POST["nuevoMotivo"])){

				$tabla = "ingresoemergencia";

				$datos = array("id_paciente" => $_POST["idPacienteIngreso"],
							"motivo_consulta" => $_POST["nuevoMotivo"],
							"tipo_seguro" => $_POST["nuevoSeguro"],
							"id_responsable" => $_SESSION["id"], // ID del usuario logueado
							"estado" => "activo");

				$respuesta = ModeloPaciente::mdlRegistroIngreso($tabla, $datos);

				if($respuesta == "ok"){
					echo '<script>
						swal({
							icon: "success",
							title: "¡Ingreso Registrado!",
							text: "El paciente ha sido enviado a la cola de triaje",
							showConfirmButton: true,
							confirmButtonText: "Cerrar"
						}).then(function(result){
							if(result.value){
								window.location = "paciente";
							}
						});
					</script>';
				}
			}
		}

		static public function ctrSubirDni(){
		if(isset($_FILES["archivoDni"]["tmp_name"])){
			
			// 1. Crear directorio si no existe
			$directorio = "vistas/archivos/pacientes/".$_POST["idPacienteDni"];
			if(!file_exists($directorio)){
				mkdir($directorio, 0755, true);
			}
			// 2. Definir ruta y nombre
			$extension = pathinfo($_FILES["archivoDni"]["name"], PATHINFO_EXTENSION);
			$ruta = $directorio."/dni_".$_POST["idPacienteDni"].".". $extension;

			// 3. Mover archivo
			if(move_uploaded_file($_FILES["archivoDni"]["tmp_name"], $ruta)){
				
				$datos = array(
					"id_paciente" => $_POST["idPacienteDni"],
					"tipo_documento" => "DNI",
					"ruta_archivo" => $ruta,
					"id_usuario" => $_SESSION["id"]
				);

				$respuesta = ModeloPaciente::mdlGuardarDocumento("documento", $datos);

				if($respuesta == "ok"){
					// AUDITORÍA RF03
					ControladorAuditoria::ctrRegistrarAuditoria("Digitalización", "SUBIR", "Subió DNI del paciente ID ".$datos["id_paciente"]);

					echo '<script>
						swal({
							icon: "success",
							title: "¡DNI registrado!",
							text: "El paciente se ha guardado su Dni correctamente",
							showConfirmButton: true,
							confirmButtonText: "Cerrar"
						}).then(function(result){
							if(result.value){
								window.location = "paciente";
							}
						});
					</script>';
				}
			}
		}
	}

	static public function ctrVerificarDocumento($idPaciente, $tipo){
		$tabla = "documento";
		$respuesta = ModeloPaciente::mdlVerificarDocumento($tabla, $idPaciente, $tipo);
		return $respuesta;
	}

	static public function ctrMostrarDocumentosIngreso($idIngreso){
		$tabla = "documento";
		$respuesta = ModeloPaciente::mdlMostrarDocumentosIngreso($tabla, $idIngreso);
		return $respuesta;
	}

	
    static public function ctrMostrarDocumentosPaciente($idPaciente, $tipo){
    
            // Llamamos al modelo de pacientes para buscar un documento específico
            $tabla = "documento";
            $respuesta = ModeloPaciente::mdlMostrarDocumentoIndividual($tabla, $idPaciente, $tipo);
            
            return $respuesta;
    }

	static public function ctrGuardarDocumento($datos){
    
		$tabla = "documento";

		// Iniciamos sesión para obtener el ID del usuario actual
		if(!isset($_SESSION)){ session_start(); }
		
		// Si no hay sesión (caso raro en AJAX), le asignamos un ID por defecto o 0
		$idUsuario = isset($_SESSION["id_usuario"]) ? $_SESSION["id_usuario"] : 1;

		$datosParaModelo = array(
			"id_paciente" => $datos["id_paciente"],
			"id_ingreso"  => $datos["id_ingreso"],
			"tipo_documento" => $datos["tipo"],
			"ruta_archivo" => $datos["ruta"],
			"id_usuario" => $idUsuario
		);

		$respuesta = ModeloPaciente::mdlGuardarDocumento1($tabla, $datosParaModelo);

		return $respuesta;
	}

	/*=============================================
    MOSTRAR DEPARTAMENTOS (Carga inicial)
    =============================================*/
    static public function ctrMostrarDepartamentos() {
        $tabla = "ubigeo_peru_departments";
        $respuesta =ModeloPaciente::mdlMostrarDepartamentos($tabla);
        return $respuesta;
    }

    /*=============================================
    MOSTRAR PROVINCIAS (Para el AJAX)
    =============================================*/
    static public function ctrMostrarProvincias($idDep) {
        $tabla = "ubigeo_peru_provinces"; // Asegúrate que este sea el nombre de tu tabla de provincias
        $respuesta = ModeloPaciente::mdlMostrarProvincias($tabla, $idDep);
        return $respuesta;
    }

    /*=============================================
    MOSTRAR DISTRITOS (Para el AJAX)
    =============================================*/
    static public function ctrMostrarDistritos($idProv) {
        $tabla = "ubigeo_peru_districts";
        $respuesta = ModeloPaciente::mdlMostrarDistritos($tabla, $idProv);
        return $respuesta;
    }
}

