<?php
    session_start();
    require_once($_SERVER['DOCUMENT_ROOT'] . '/conf.php');


    if (!auth_is_user()) {
        redirect("/");
    }

    if (session("groups") !== "admin") {
        redirect('/');
    }


    $list = [];
    if (isset($_POST['data'])) {
        $list = $_POST['data'];
    }

    $fields = [];
    if (isset($_POST['fields'])) {
        $fields = $_POST['fields'];
    }

    /* Получаем все ключи которые в таблице с данными */
    $keys_list = array_keys($list[0]);

    /* Получаем все ключи которые в полях заголовков таблицы */
    $keys_fields = array_keys($fields);

    $list_functions = [
        'id' => 'table_id',
        'summa' => 'adg_amount_convet_cur_tabel',
        'login' => 'adg_gen_link_item_users',
        'refer' => 'adg_gen_link_item_users',
        'plan_name' => 'get_name_plans',
        'date' => 'format_date',
        'system' => 'adg_gen_table_td_transaction',
        'ip' => 'login_reg_ip',
        'ip_refer' => 'login_reg_ip',
        'status' => 'adg_get_invest_status',
        'delete' => 'button_delete',
        'currency' => 'adg_get_currency',
    ];

    foreach ($list as $item) {
        echo '<tr>';
            foreach ($fields as $key => $field) {
                echo '<td>';
                $str = isset($item[$key]) ? $item[$key] : $key;
                $str = adg_action_function_in_table($key, $item, $list_functions);
                echo $str;
                echo '</td>';
            }
        echo '</tr>';
    }

    /**
     * @param $key - ключ поля
     * @param $item - данные
     * @param $list_functions - какие поля обрабатывают какие функции
     * @return string
     */
    function adg_action_function_in_table($key, $item, $list_functions) {
        $func = '';

        if (array_key_exists($key, $list_functions)) {
            $func = $list_functions[$key];
        }

        if (!$func) {
            return "Error: Not Found Function.";
        }

        /* Пока такой костыль, затем профи переишут */
        if ($key === 'id') {
            return $func($item['id']);
        }

        if ($key === 'summa') {
            return $func($item['system'], $item['summa']);
        }

        if ($key === 'login' || $key === 'refer') {
            return $func($item[$key]);
        }

        if ($key === 'plan_name') {
            return escape($func($item['plan_id']));
        }

        if ($key === 'date') {
            return $func($item[$key]);
        }

        if ($key === 'system') {
            return $func($item['transaction'], $item['system']);
        }

        if ($key === 'ip') {
            $color = login_check_chain_ip($item['login'], $item['ip']);
            return '<span ' . $color . '>' . escape($item['ip']) . '</span>';
        }

        if ($key === 'ip_refer') {
            $ip_refer = login_reg_ip($item['refer']);
            $color = login_check_chain_ip($item['refer'], $ip_refer);
            return '<span ' . $color . '>' . escape($ip_refer) . '</span>';
        }

        if ($key === 'status') {
            return $func($item['id']);
        }

        if ($key === 'currency') {
            return $func($item['currency']);
        }

        if ($key === 'delete') {
            return $func((int)$item['id'], 'delete', '/handlers/adg/invest.php', '/adg.php?page=invest');
        }

        return "Error: Not Found Function.";
    }

    function adg_get_currency ($cur) {
        return escape(strtoupper($cur));
    }

    /**
     * Вывод id для таблиц
     * @param $id
     * @return int
     */
    function table_id ($id) {
        return (int)$id;
    }

    /**
     * Получаем ячейку таблицы для для системы и транзакции
     * @param $transaction
     * @param $system
     * @return string
     */
    function adg_gen_table_td_transaction ($transaction, $system) {
        $str = '';
        $str .= '<div data-toggle="tooltip" data-placement="top" title="' . T('Транзакция: ') . escape($transaction) .'">';
        $str .= escape($system);
        if ($transaction == 'Накрутка') {
            $str .= ' ('.escape($transaction).')';
        }
        $str .= '</div>';
        return $str;
    }