<?php
// rcontrol/iclock/cdata.php
require_once dirname(dirname(__FILE__)) . '/includes/adms_helpers.php';

$sn = isset($_GET['SN']) ? $_GET['SN'] : '';
$table = isset($_GET['table']) ? $_GET['table'] : '';

$reloj = rcontrol_get_reloj_by_sn($sn);

if (!$reloj) {
    rcontrol_reject_unauthorized($sn);
}

rcontrol_update_ultimo_contacto((int)$reloj['id']);

$method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '';

if ($method == 'GET') {
    $response_body = '';
    $response_body .= 'GET OPTION FROM: ' . $sn . "\n";
    $response_body .= "Stamp=9999\n";
    $response_body .= "OpStamp=0\n";
    $response_body .= "ErrorDelay=60\n";
    $response_body .= "Delay=30\n";

    $timezone_nombre = 'America/Santiago';
    $timezone_offset = -4;

    try {
        $timezone = new DateTimeZone($timezone_nombre);
        $timezone_now = new DateTime('now', $timezone);
        $timezone_offset = (int)($timezone->getOffset($timezone_now) / 3600);
    } catch (Exception $e) {
        $timezone_offset = -4;
    }

    $response_body .= "TransInterval=1\n";
    $response_body .= "Realtime=1\n";
    $response_body .= "TimeZone=" . $timezone_offset . "\n";
    $response_body .= "Encrypt=0\n";

    rcontrol_text_response($response_body, 200);
}

if ($method == 'POST' && $table == 'ATTLOG') {
    $data = rcontrol_get_request_data('ICLOCK CDATA SN=' . $sn . ' TABLE=' . $table);
    $asistencias = rcontrol_parse_attlog_body(isset($data['body']) ? $data['body'] : '');

    $tiene_marca_util = false;

    foreach ($asistencias as $asistencia) {
        $pin = isset($asistencia['pin']) ? trim($asistencia['pin']) : '';

        if ($pin !== '' && $pin !== '0') {
            $tiene_marca_util = true;
            break;
        }
    }

    if (!$tiene_marca_util) {
        rcontrol_text_response("OK\n", 200);
    }

    rcontrol_write_asistencia_log($data);

    $raw_id = rcontrol_insert_asistencia_raw($data, $reloj);

    if ($raw_id) {
        rcontrol_procesar_attlog($raw_id, $data, $reloj);
    }

    rcontrol_text_response("OK\n", 200);
}

if ($method == 'POST' && $table == 'OPERLOG') {
    $data = rcontrol_get_request_data('ICLOCK CDATA SN=' . $sn . ' TABLE=' . $table);

    rcontrol_write_log($data);

    $raw_id = rcontrol_insert_asistencia_raw($data, $reloj);

    if ($raw_id) {
        rcontrol_procesar_operlog_huellas($raw_id, $data, $reloj);
    }

    rcontrol_text_response("OK\n", 200);
}

rcontrol_text_response("OK\n", 200);