<?php

namespace Saireh;

session_start();

include("fphp.php");
include("payroll/payroll.php");
include("email/mail.php");
include("hcm_files/PHPMailer/src/Exception.php");
include("hcm_files/PHPMailer/src/PHPMailer.php");
include("hcm_files/PHPMailer/src/SMTP.php");


use PHPMailer\PHPMailer\PHPMailer;

use Saireh\email\Email;
use function Saireh\PayRoll\api_upload_Folder;

date_default_timezone_set('America/Bogota');


function getPeriodo($enlace)
{
  $consulta = mysqli_query($enlace, "select * from periodo where id='" . $_SESSION['id_validar'] . "' order by nomina,periodo desc limit 1");
  if (mysqli_num_rows($consulta) != 0) {
    $row = mysqli_fetch_array($consulta);
    $_SESSION['per_validar'] = mostrar_fecha($row['desde']) . ' al ' . mostrar_fecha($row['hasta']) . " (Nom:" . $row['nomina'] . ")";
  } else {
    $_SESSION['per_validar'] = '';
  }
  return $consulta;
}

function getArchivoAsiento($enlace)
{
  $query = "SELECT archivo FROM asientos_usd WHERE aprobado = 1 and enviado = 0;";
  $consultaQ = mysqli_query($enlace, $query) or die("No se pudo realizar la consulta: " . $query . '=' . mysqli_error($enlace));
  $resultadoQ = mysqli_num_rows($consultaQ);

  return $consultaQ;
}

function send_email()
{
  $mail = new PHPMailer(true);
  $saireh_email = new Email($mail);

  //Enviar correo a Supervisor y RRHH
  $saireh_email->set_to_address(array(
    'JSANCH32@FORD.COM',
    'MCALLES1@FORD.COM',
    'NOMINA.FORD@SAIREH.COM'
  ));

  $asunto = 'Sincronizacion de ' . $_POST['archivo'];
  $mensaje = "Ha sido enviada la contabilidad con detalle " . $_POST['archivo'] . "<br>
              Se requiere su verificacion y aprobacion para ser contabilizado <br><br><br>
              
              Nota Importante: Este mensaje se genera de forma automatica al momento de realizar el envio del archivo desde SAIREH, el tiempo de transito del archivo desde la generacion de este mensaje puede variar entre 25 a 30 minutos hasta ser visible en sus servidores";

  $saireh_email->send($asunto, $mensaje);
}

function getRequest($mockDbSelector = Null)
{
  if (isset($_SESSION['tipousuario'])) {
    if ($_SESSION['tipousuario'] == '1')
      redirectTo('menu_personal.php');
  }
  if (trim($_SESSION['nombre_validar']) == '') {
    redirectTo('index.php');
  }
  if (substr($_SESSION['acceso_validar'], 41, 1) != '1') { //Valida si tiene permisos de acceso a Bancos
    "No tiene permisos de acceso";
    exit;
  }


  if ($mockDbSelector) {
    $enlace = cargar_conexion($mockDbSelector);
  } else {
    $enlace = cargar_conexion();
  }


  menu();

  echo "<font face='verdana' size=2>";
  $query = "SELECT * FROM nomina";
  $consulta = mysqli_query($enlace, $query);
  $resultado = mysqli_num_rows($consulta);

  return array($enlace, $consulta);
}

//RESTRICCI?N DE ACCESO A TRABAJADOR (ACCESO INDIVIDUAL)

function grabar_asientos($http_code, $enlace, $resultado_transmision, $archivo)
{
    if ($http_code == 200) {

        $queryUpdate = "
            UPDATE asientos_usd 
            SET enviado = 1,
                respuesta = 'El archivo fue transmitido satisfactoriamente',
                hora_envio = '" . date('Y-m-d H:i:s') . "'
            WHERE archivo = '" . $archivo . "';
        ";

    } else if ($http_code > 200) {

        $queryUpdate = "
            UPDATE asientos_usd 
            SET respuesta = '" . mysqli_real_escape_string($enlace, $resultado_transmision) . "'
            WHERE archivo = '" . $archivo . "';
        ";

    } else {

        $queryUpdate = "
            UPDATE asientos_usd 
            SET respuesta = 'ERROR'
            WHERE archivo = '" . $archivo . "';
        ";
    }

    mysqli_query($enlace, $queryUpdate) 
        or die("Error en UPDATE: " . mysqli_error($enlace));
}

function postRequest($enlace)
{
    if (!isset($_POST['generarBanco'])) {
        return;
    }

    $archivo = $_POST["archivo"];
    $archivo_encode = $archivo . "encode";

    // Validar existencia del archivo
    if (!file_exists($archivo_encode)) {
        echo "❌ Error: El archivo '$archivo_encode' no existe.";
        return;
    }

    // Leer contenido
    $base64 = file_get_contents($archivo_encode);

    // Recibir respuesta del API (array asociativo)
    $api = api_upload_Folder('contabilidad.txt', $base64);

    $http_code      = $api["http_code"];
    $result_upload  = $api["response"];

    // Actualizar BD
    grabar_asientos($http_code, $enlace, $result_upload, $archivo);

    // Enviar correo
    send_email();

    return array($result_upload, $archivo);
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $enlace = cargar_conexion(isset($mockDbSelector) ? $mockDbSelector : Null);
  list($result_upload, $nombre_archivo) = postRequest($enlace);


  redirectTo($_SERVER['PHP_SELF'], array("resultUpload" => $result_upload, "filename" => cifrarNombreArchivo($nombre_archivo)));
} else {
  list($enlace, $consulta) = getRequest(isset($mockDbSelector) ? $mockDbSelector : Null);
}

?>
<html>

<head>
  <script src="js/jquery.min.js"></script>
  <script src="autocompletar/js/bootstrap3-typeahead.min.js"></script>

  <link rel="stylesheet" href="css/timepicker.min.css">
  <script src="js/timepicker.min.js"></script>

  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

  <script src='js/bootstrap.min.js'></script>

  <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
	integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
		integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
		crossorigin="anonymous"></script> -->
  <!--
<script src="//cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="//cdn.datatables.net/1.10.25/css/jquery.dataTables.min.css"> -->

</head>
<style>
  <?php include_once "css/generar_asientos.css"; ?>
</style>

<body>
  <?php
  if (isset($_GET['resultUpload']) && isset($_GET['filename'])) {
  ?>

    <script>
      // Declarar una variable global sin la palabra clave var
      var shouldDownloadFile = true;
      var FILE_NAME = "<?php echo $_GET['filename']; ?>"
      alert("<?php echo $_GET['resultUpload']; ?>");
    </script>

  <?php
  } else { ?>
    <script>
      // Declarar una variable global sin la palabra clave var
      var shouldDownloadFile = false;
    </script>
  <?php
    include_once "views/generar_asientos_view.php";
  }
  ?>
  <script type="text/javascript" src="js/generar_asientos.js"></script>
</body>

</html>