<?php
require_once __DIR__ . '/../../../code/app.php';

header("Content-Type: application/json; charset=utf-8");

$respuesta = (object)[];

$permisos = App::verificarAcceso();

$idUsuarioActual = App::obtenerIdUsuario();

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $accion = isset($_GET['accion']) ? $_GET['accion'] : null;

    switch ($accion) {
        case 'obtenerResumenDesdeNube':
            $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, 'http://192.168.11.2:8080/actualizacionFE/API/?k=U2FsdGVkX19w0fv1e2EHtlIjPo0rRsAw1mT6YV5cHh5iR6Ay9nRbC8o2e%2FGl15D70%2FMlSrOtYebWYjD2Nx9gxwPs4MK4si63nQ7BXIz4HP6bI%3D&q=resumenActualizaciones');

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $output = curl_exec($ch);

            if ($output === false) {
                $respuesta->status = 500;
                $respuesta->message = 'No es posible comunicarse con la empresa ';
                $respuesta->details = 'Error: ' . curl_error($ch);
                break;
            }

            $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

            if ($httpcode != 200) {
                $respuesta->status = 500;
                $respuesta->message = 'No es posible comunicarse con la empresa, Error: ' . $output;
                break;
            }

            curl_close($ch);

            $response = json_decode($output);

            $data = isset($response->data) ? $response->data : [];

            $mensaje = isset($response->message) ? $response->message : 'success';

            $respuesta->status = $httpcode;
            $respuesta->data = $data;
            break;
        case 'obtenerClientesActivos':
            $db = obtenerConexion();

            $query = "select cuentas.codsucursal,
                count(distinct(enc.codcliente)) clientes
            FROM [" . DB_NET . "].dbo.fac_transaccion_enc enc
            inner join [" . DB_NET . "].dbo.ser_cuenta_cliente cuentas on enc.codcliente = cuentas.codcliente
            where cast(fechaproceso as date) between '2023-01-01' and cast(getdate() as date)
            AND cuentas.codsucursal > 0
            group by cuentas.codsucursal";
            $stmt = $db->prepare($query, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);

            try {
                $stmt->execute();
                $data = $stmt->fetchAll(PDO::FETCH_OBJ);

                $clientesMesActual = 0;
                $clientesMesAnterior = 0;

                foreach ($data as $row) {
                    $clientesMesActual += $row->clientes;
                }

                $archivo = file_get_contents(__DIR__ . '/../../docs/contadorClientes.json');
                $json = json_decode($archivo);

                if (empty($json)) $json = (object)[];
                $mesActual = date('nY');
                $mesAnterior = date('nY', strtotime('-1 month'));

                if (!isset($json->{$mesAnterior})) $json->{$mesAnterior} = $clientesMesActual;

                if ($clientesMesAnterior == 0) $clientesMesAnterior = $clientesMesActual;

                $json->{$mesActual} = $clientesMesActual;

                file_put_contents(__DIR__ . '/../../docs/contadorClientes.json', json_encode($json));

                $respuesta->status = 200;
                $respuesta->data = (object)[
                    'mesActual' => $clientesMesActual,
                    'mesAnterior' => $clientesMesAnterior,
                    'datosSucursales' => $data
                ];
            } catch (PDOException $e) {
                $respuesta->status = 500;
                $respuesta->message = $e->getMessage();
            }
            break;
        default:
            $respuesta->status = 400;
            $respuesta->message = "Acción no válida";
            break;
    }
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);
    !empty($_POST) && $input = $_POST;
    $accion = isset($input['accion']) ? $input['accion'] : null;

    switch ($accion) {
        default:
            $respuesta->status = 400;
            $respuesta->message = 'Acción no válida';
            break;
    }
}

$httpCode = isset($respuesta->status) ? $respuesta->status : 500;
http_response_code($httpCode);
echo json_encode($respuesta);
