<?php

require_once "conexion.php";

class ModeloHistory
{
    // public static function mdlGetHistoryBetweenDates($fecha_inicio, $fecha_final, $filtros)
    // {

    //     $conn = new Conexion();

    //     $db = $conn->get_connection();

    //     $sqlFiltro = '';

    //     if (!is_null($filtros)) {

    //         $numFiltros = (empty($filtros)) ? 0 : count($filtros);

    //         $i = 1;

    //         foreach ($filtros as $key => $filtro) {



    //             $campo = $filtro['campo'];



    //             if ($campo == "id_usuario") {

    //                 $sqlFiltro .= "id_usuario = " . $filtro['data']['id_usuario'];
    //             }



    //             if ($campo == "accion") {

    //                 $sqlFiltro .= "accion = '" . $filtro['data']['accion'] . "'";
    //             }



    //             if ($numFiltros > 1) {

    //                 if ($i != $numFiltros) {

    //                     $sqlFiltro .= " AND ";
    //                 }
    //             }



    //             $i++;
    //         }
    //     }

    //     $sqlTotal = '';

    //     if ($sqlFiltro != '')

    //         $sqlTotal .= ' AND ' . $sqlFiltro;

    //     $sql = "SELECT * FROM history WHERE fecha_alta >= :fecha_inicio and fecha_alta <= :fecha_final " . $sqlTotal . " ORDER BY fecha_alta DESC";

    //     // echo $sql;

    //     $stmt = $db->prepare($sql);

    //     $stmt->bindParam(":fecha_inicio", $fecha_inicio);

    //     $stmt->bindParam(":fecha_final", $fecha_final);

    //     $stmt->execute();

    //     return ($stmt->rowCount() >= 1) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : false;
    // }

    // public static function mdlGetHistoryByTableAndId($nombre_tabla, $id_tabla, $id_usuario)
    // {

    //     $conn = new Conexion();

    //     $db = $conn->get_connection();

    //     if (is_null($id_usuario)) {

    //         $sql = "SELECT * FROM history WHERE nombre_tabla = :nombre_tabla and id_tabla = :id_tabla ORDER BY fecha_alta DESC";

    //         $stmt = $db->prepare($sql);

    //         $stmt->bindParam(":nombre_tabla", $nombre_tabla);

    //         $stmt->bindParam(":id_tabla", $id_tabla);
    //     } else {

    //         $sql = "SELECT * FROM history WHERE id_usuario = :id_usuario and nombre_tabla = :nombre_tabla and id_tabla = :id_tabla ORDER BY fecha_alta DESC";

    //         $stmt = $db->prepare($sql);

    //         $stmt->bindParam(":id_usuario", $id_usuario);

    //         $stmt->bindParam(":nombre_tabla", $nombre_tabla);

    //         $stmt->bindParam(":id_tabla", $id_tabla);
    //     }

    //     $stmt->execute();

    //     return ($stmt->rowCount() >= 1) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : false;
    // }

    // public static function mdlGetHistory($accion, $nombre_tabla, $id_tabla, $id_usuario)
    // {

    //     $conn = new Conexion();

    //     $db = $conn->get_connection();

    //     if (is_null($id_usuario)) {

    //         $sql = "SELECT * FROM history WHERE accion = :accion and nombre_tabla = :nombre_tabla and id_tabla = :id_tabla ORDER BY fecha_alta DESC";

    //         $stmt = $db->prepare($sql);

    //         $stmt->bindParam(":accion", $accion);

    //         $stmt->bindParam(":nombre_tabla", $nombre_tabla);

    //         $stmt->bindParam(":id_tabla", $id_tabla);
    //     } else {

    //         $sql = "SELECT * FROM history WHERE id_usuario = :id_usuario and accion = :accion and nombre_tabla = :nombre_tabla and id_tabla = :id_tabla ORDER BY fecha_alta DESC";

    //         $stmt = $db->prepare($sql);

    //         $stmt->bindParam(":id_usuario", $id_usuario);

    //         $stmt->bindParam(":accion", $accion);

    //         $stmt->bindParam(":nombre_tabla", $nombre_tabla);

    //         $stmt->bindParam(":id_tabla", $id_tabla);
    //     }

    //     $stmt->execute();

    //     return ($stmt->rowCount() >= 1) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : false;
    // }

    public static function mdlAddNewRegister($accion, $nombre_tabla, $id_tabla, $id_usuario, $valor_anterior)
    {

        $conn = new Conexion();

        $db = $conn->get_connection();

        if ($accion == "create" || $valor_anterior == NULL) {

            $sql = "INSERT INTO historial(id_usuario, accion, nombre_tabla, id_tabla) VALUES (:id_usuario, :accion, :nombre_tabla, :id_tabla)";

            $stmt = $db->prepare($sql);

            $stmt->bindParam(":id_usuario", $id_usuario);

            $stmt->bindParam(":accion", $accion);

            $stmt->bindParam(":nombre_tabla", $nombre_tabla);

            $stmt->bindParam(":id_tabla", $id_tabla);
            
        } else {

            $sql = "INSERT INTO historial(id_usuario, accion, nombre_tabla, id_tabla, valor_anterior) VALUES (:id_usuario, :accion, :nombre_tabla, :id_tabla, :valor_anterior)";

            $stmt = $db->prepare($sql);

            $stmt->bindParam(":id_usuario", $id_usuario);

            $stmt->bindParam(":accion", $accion);

            $stmt->bindParam(":nombre_tabla", $nombre_tabla);

            $stmt->bindParam(":id_tabla", $id_tabla);

            $stmt->bindParam(":valor_anterior", $valor_anterior);
        }

        $stmt->execute();
    }
}
