<?php

include_once '.autoload.php';

use Axioma\Utils as utils;

$config = Axioma\Config::instance();
foreach ($_POST as $key => $value) {
    if ($key != 'page' && $key != 'action' && $key != 'step') {
        $config->setValue($key, $value);
    }
}

$app = new Axioma\Server\App();

$errors = array();
$warnings = array();
$info = array();
$error = '';

$activation_mail = 'activation@axioma-gis.ru';
$activation_text = array();

if (isset($_POST['step']) && $_POST['step'] == 'activate') {
    if (!$app->activateWithCode($config->code, $error, $app_output)) {
        $errors[] = $error;
    } else {
        $info[] = _('Программа успешно активирована');
    }
    $dont_check_file = true;
} else {
    $dont_check_file = false;
}
if (isset($_POST['step']) && $_POST['step'] == 'get_hwid') {
    $activation_text = array();
    $config->hwid = $app->getHWID($activation_text, $error);
    if (!empty($error)) {
        $errors[] = $error;
    }
}
if (isset($config->hwid) && !isset($activation_text)) {
    $activation_text = utils::makeActivationText($app, $config);
}
?>

<div class="formDiv notes">
    <?php echo _('Для активации программы отправьте письмо на электронную почту'); ?><br>
    <a href="<?php echo "mailto: $activation_mail?subject=" . rawurlencode(_('Активация программы'));
    if (isset($activation_text) && !empty($activation_text)) {
        echo "&body=" . rawurlencode(implode(PHP_EOL, $activation_text));
    }
    ?>">
    <?php echo $activation_mail; ?>
    </a><br>
    <?php echo _('Письмо должно содержать:') ?>
</div>
<div class="formDiv normalBorder">
    <table class="formTbl">
        <tr>
            <th><label for="program"><?php echo _('Название программы:'); ?></label></th>
            <td><?php echo \Axioma\Server\App::completeName(); ?></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <th><label for="company"><?php echo _('Название компании:'); ?></label></th>
            <td><input type="text" name="company" value="<?php echo htmlspecialchars($app->company()); ?>"
                    onchange="submit_page(this.name, this.value);"/>
            </td>
            <td class="check">
                <?php $hasCompany = utils::callCheck($app, 'checkCompanyName', $errors, $warnings); ?>
            </td>
        </tr>
        <tr>
            <th><label for="serial"><?php echo _('Серийный номер:'); ?></label></th>
            <td><input type="text" id="serial" name="serial"
                    value="<?php echo htmlspecialchars($app->serialNumber()); ?>"
                    onchange="submit_page(this.name, this.value);"/>
            </td>
            <td class="check">
                <?php $hasSerial = utils::callCheck($app, 'checkSerialNumber', $errors, $warnings); ?>
            </td>
        </tr>
        <tr>
            <th><label for="hwid"><?php echo _('Идентификатор оборудования:'); ?></label></th>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <th>&nbsp;</th>
            <td><textarea name="hwid" rows=3 readonly><?php echo $config->hwid; ?></textarea></td>
            <td><input id="letter" type="hidden" value = "<?php echo implode(PHP_EOL, $activation_text); ?>" /></td>
        </tr>
    </table>
</div>

<div class="formDiv normalBorder">
<table class="buttonTbl">
    <tr>
    <td><input type="button" value="<?php echo _('Получить идентификатор'); ?>"
                            <?php if (!$hasSerial || !$hasCompany) {
                                echo 'disabled';
                            }?>
                            onclick="submit_page('step', 'get_hwid');"/>
    <td><input type="button" value="<?php echo 'Копировать текст в буфер'; ?>"
                            <?php if (!isset($activation_text) || empty($activation_text)) {
                                echo 'disabled';
                            } ?>
                            onclick="copy_letter();"/>
    </td>
    </tr>
</table>
</div>

<div class="formDiv notes">
    <?php echo _('Вы получите <b>Код активации</b> не позднее следующего рабочего дня.'); ?>
</div>

<div class="formDiv normalBorder">
    <table class="formTbl">
        <tr>
            <th><label for="app_license"><?php echo _('Файл лицензии:'); ?></label></th>
            <td><input type="text" name="app_license"
                    value="<?php echo htmlspecialchars($app->licensePath(false)); ?>"
                    onchange="submit_page(this.name, this.value);"/>
            </td>
            <td class="check">
                <?php $canActivate =
                    $dont_check_file || utils::callCheck($app, 'checkLicenseCreateAccess', $error, $warnings);
                ?>
            </td>
        </tr>
        <tr>
            <th><label for="code"><?php echo _('Код активации:'); ?></label></th>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <th>&nbsp;</th>
            <td>
                <textarea id="code" name="code" rows=6 placeholder="<?php echo _('Введите код активации'); ?>"
                    <?php echo $canActivate ? '' : 'disabled'; ?> onchange="allowActivate();"></textarea>
            </td>
            <td>&nbsp;</td>
        </tr>
    </table>
</div>

<div class="formDiv normalBorder">
<table class="buttonTbl">
    <tr>
    <td><input type="button" id="activate" value="<?php echo _('Активировать программу'); ?>" disabled
        onclick="activate();"/></td>
    <td><input type="button" value="<?php echo 'Сохранить и вернуться назад'; ?>" onclick="goback();"/></td>
    </tr>
</table>
</div>

<?php utils::showMessageBlocks($errors, $warnings, $info); ?>

<?php if (!empty($errors) && !empty($app_output)) { ?>
<div id="server_log" class="formDiv normalBorder">
    <p><i><?php echo _('Журнал последнего запуска:'); ?></i></p>
    <p>
    <?php echo implode('<br>', $app_output); ?>
    </p>
</div>
<?php } ?>

<script>
    var serialMask = new Cleave('#serial', {
        uppercase: true,
        delimiter: '-',
        delimiterLazyShow: false,
        prefix: '<?php echo 'AL' . substr(Axioma\Server\App::version(), 0, 1); ?>',
        blocks: [5, 5, 5, 5],
        noImmediatePrefix: true
    });
    $('#serial').val('<?php echo htmlspecialchars($app->serialNumber()); ?>');

    function submit_page(name, value) {
        var cfg_data=<?php echo $config->toJson(); ?>;
        cfg_data[name]=value;
        cfg_data['action'] = 'activate';
        $.post("install.php", cfg_data, function(data) {
            $('#content').html(data);
        });
    }

    function goback() {
        var cfg_data=<?php echo $config->toJson(); ?>;
        delete cfg_data['code'];
        cfg_data['action'] = 'save';
        $.post("install.php", cfg_data, function(data) {
            $('#content').html(data);
        });
    }

    function copy_letter() {
        var letterText = document.getElementById("letter");
        navigator.clipboard.writeText(letterText.value).then(() => {
            $('#infoDiv').prepend("<p class='ok'><?php echo _('Текст письма скопирован в буфер обмена');?></p>").show();
        }).catch(() => {
            $('#errorDiv').prepend("<p><?php echo _('Произошла ошибка при копировании в буфер обмена'); ?></p>").show();
        });
    }

    function allowActivate() {
        var text = $('#code').val();
        if (jQuery.trim(text).length) {
            $('#activate').prop('disabled', false);
        }
    }

    function activate() {
        var cfg_data=<?php echo $config->toJson(); ?>;
        cfg_data['code'] = $('#code').val();
        cfg_data['step'] = 'activate';
        cfg_data['action'] = 'activate';
        $.post("install.php", cfg_data, function(data) {
            $('#content').html(data);
        });
    }
    window.onload = function(event) {
        if (!document.getElementById('content')) {
            window.location = 'index.php?page=activation';
        }
    }
</script>
