<?php
require_once("../../functions.php");
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, false, false, '', false, false);

$acumulado = recortarDecimal(filter_input(INPUT_POST, "acumulado", FILTER_SANITIZE_SPECIAL_CHARS));
$pagar = recortarDecimal(filter_input(INPUT_POST, "pagar", FILTER_SANITIZE_SPECIAL_CHARS));
$restante = recortarDecimal(filter_input(INPUT_POST, "restante", FILTER_SANITIZE_SPECIAL_CHARS));
$nota = filter_input(INPUT_POST, "nota", FILTER_SANITIZE_SPECIAL_CHARS);
$id_empleado = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);

if (SISTEMA_INCIDENCIAS) {
    $fechas = get_ult_fecha_cierre();
    if (!empty($fechas)) {
        $fechainicio = $fechas[0]['fecha_inicio'];
        $fechafin = $fechas[0]['fecha_fin'];
    } else {
        $fechainicio = date('Y-m-d');
        $fechafin = date('Y-m-d');
    }
} else {
    // Aplicación manual: ambas fechas son hoy
    $fechainicio = date('Y-m-d');
    $fechafin = date('Y-m-d');
}

$acumulado_num = ($acumulado === '' || $acumulado === null) ? 0 : (float)$acumulado;
$pagar_num = ($pagar === '' || $pagar === null) ? 0 : (float)$pagar;
$restante_num = ($restante === '' || $restante === null) ? 0 : (float)$restante;

//guardar registro en historial
if (!consulta(
    "INSERT INTO `historial_horas_acumuladas`(`id_empleado`, `fecha_inicio`, `fecha_fin`, `horas_disponibles`, `horas_pagadas`, `horas_acumuladas`, `nota`) VALUES (?,?,?,?,?,?,?);",
    [$id_empleado, $fechainicio, $fechafin, $acumulado_num, $pagar_num, $restante_num, $nota],
    false
)) {
    crear_notificacion('error', 'No se ha podido guardar en el historial de horas acumuladas');
    exit;
}
$result = consulta("SELECT horas_acu FROM empleados WHERE id=?;", [$id_empleado], true);

//restar las horas de empleados por el restante
if (!consulta("UPDATE `empleados` SET `horas_acu`=? WHERE id=?;", [$restante, $id_empleado], false)) {
    crear_log(
        "error",
        "Error al actualizar horas acumuladas",
        $pag,
        "No se ha podido actualizar las horas acumuladas correctamente, porque ha ocurrido un error en la consulta con estos parámetros ".json_encode([$id_empleado, $fechainicio, $fechafin, $acumulado, $pagar, $restante,$nota])
    );
    crear_notificacion('error', 'No se ha podido actualizar las horas acumuladas correctamente');
} else {
    crear_log(
        "info",
        "Horas acumuladas actualizadas",
        $pag,
        "Se han actualizado las horas acumuladas correctamente con estos parámetros ".json_encode([$id_empleado, $fechainicio, $fechafin, $acumulado, $pagar, $restante,$nota])
    );
    crear_notificacion('correcto', 'Se han actualizado las horas acumuladas correctamente');
}

function recortarDecimal($numero)
{
    // Reemplaza coma por punto para unificar el formato
    $numero = str_replace(',', '.', $numero);

    // Separa parte entera y decimal
    $partes = explode('.', $numero);

    if (count($partes) === 2) {
        // Toma solo el primer dígito decimal
        return $partes[0] . '.' . substr($partes[1], 0, 1);
    }

    // Si no tiene decimal, lo devuelve igual
    return $numero;
}
