<?php

use Core\Db;
use Moderation\{AdmFactory, Announcement, Moderator, ModFactory, UserRegistrationList};

/** @var User $u */

if (!defined('GAME')) {
    die();
}

$m = new Moderator($u->info['id']);

if (!$m->isModerator) {
    return;
}

$merror = '';
$uer = '';
$go = isset($_GET['go']) ? round($_GET['go']) : 0;

if (!empty($_POST['logingo'])) {
    $moderation = new ModFactory(
        strip_tags($_POST['logingo']),
        empty($_POST['modReason']) ? '' : $_POST['modReason'],
        $u->info['room'],
    );
    $administration = new AdmFactory(
        strip_tags($_POST['logingo'])
    );

    if (!empty($_POST['silence']) && !empty($_POST['time'])) {
        $moderation->silence($_POST['time']);
    } elseif (!empty($_POST['unsilence'])) {
        $moderation->unsilence();
    } elseif (!empty($_POST['prison']) && !empty($_POST['time'])) {
        $moderation->prison($_POST['time']);
    } elseif (!empty($_POST['unprison'])) {
        $moderation->unprison();
    } elseif (!empty($_POST['depersonalize']) && !empty($_POST['time'])) {
        $moderation->depersonalize($_POST['time']);
    } elseif (!empty($_POST['undepersonalize'])) {
        $moderation->undepersonalize();
    } elseif (!empty($_POST['ban']) && $m->canBlockUsers) {
        $moderation->ban();
    } elseif (!empty($_POST['unban']) && $m->canBlockUsers) {
        $moderation->unban();
    } elseif (!empty($_POST['addmoderator']) && $m->isAdmin) {
        $administration->addmoderator();
    } elseif (!empty($_POST['deletemoderator']) && $m->isAdmin) {
        $administration->removemoderator();
    } elseif (!empty($_POST['changegender']) && $m->isAdmin) {
        $administration->changegender();
    } elseif (!empty($_POST['changelogin']) && !empty($_POST['newLogin']) && $m->isAdmin) {
        $administration->changelogin($_POST['newLogin']);
    } elseif (!empty($_POST['giveitem']) && !empty($_POST['itemId']) && $m->isAdmin) {
        $administration->additem((int)$_POST['itemId']);
    } elseif (!empty($_POST['kickfrombattle']) && $m->isAdmin) {
        $administration->kickfrombattle();
    } elseif (!empty($_POST['toggleinvisibility']) && $m->isAdmin) {
        $administration->toggleinvisibility();
    }

    if (!empty($moderation->status)) {
        $uer = $moderation->status;
    } elseif (!empty($administration->status)) {
        $uer = $administration->status;
    }

}

if (!empty($_POST['marrypartner1']) && !empty($_POST['marrypartner2'])) {
    if (!empty($_POST['marry'])) {
        $uer = 'marry: Not available';
    } elseif (!empty($_POST['unmarry'])) {
        $uer = 'unmarry: Not available';
    }
}

echo '<script src="/js/jquery.js"></script>';

if ($go == 3 && $m->isAdmin) {
    ?>
    <table style="width: 100%">
        <tr>
            <td style="text-align: center;"><h3>Редактирование обучающих квестов</h3></td>
            <td style="text-align: right; width: 150px;">
                <input type="button" value="&gt;" onclick="location='main.php?moderation';"/>
                <input type="button" value="Вернуться" onclick="location='main.php?moderation&go=3';"/>
            </td>
        </tr>
        <tr>
            <td><?= empty($merror) ? '' : "<span style='color: red;'>$merror</span>" ?>

                <?php
                $sx = ['Мужской', 'Женский', 'Общий'];
                if (isset($_GET['eq'])) {
                    $pl = Db::getRow('select * from an_quest where id = ?', [(int)$_GET['eq']]);
                    if (isset($pl['id'])) {
                        if (isset($_POST['pl_name'])) {
                            $pl['name'] = $_POST['pl_name'];
                            $pl['sex'] = $_POST['pl_sex'];
                            $pl['ico_bot'] = $_POST['pl_ico_bot'];
                            $pl['name_bot'] = $_POST['pl_name_bot'];
                            $pl['info'] = $_POST['pl_info'];
                            $pl['act'] = $_POST['pl_act'];
                            $pl['next'] = $_POST['pl_next'];
                            $pl['win'] = $_POST['pl_win'];
                            $pl['data'] = $_POST['pl_data'];
                            $pl['room'] = $_POST['pl_room'];
                            $pl['module'] = $_POST['pl_module'];

                            Db::sql(
                                'update an_quest set
                                                name = ?,
                                                sex = ?,
                                                ico_bot = ?,
                                                name_bot = ?,
                                                info = ?,
                                                act = ?,
                                                next = ?,
                                                win = ?,
                                                data = ?,
                                                room = ?,
                                                module = ?
                                            where id = ?',
                                [
                                    $pl['name'],
                                    $pl['sex'],
                                    $pl['ico_bot'],
                                    $pl['name_bot'],
                                    $pl['info'],
                                    $pl['act'],
                                    $pl['next'],
                                    $pl['win'],
                                    $pl['data'],
                                    $pl['room'],
                                    $pl['module'],
                                    $pl['id'],
                                ]
                            );

                            $pl = Db::getRow('select * from an_quest where id = ?', [(int)$_GET['eq']]);
                        }
                        ?>
                        <form method="post" action="/main.php?moderation&go=3&eq=<?= $pl['id'] ?>">
                            #id: <?= $pl['id'] ?><br/>
                            <label>
                                Название квеста:
                                <input style="width:200px;" name="pl_name" type="text" value="<?= $pl['name'] ?>">
                            </label><br/>
                            <hr/>
                            <label>
                                Пол: <input style="width:20px;" name="pl_sex" type="text" value="<?= $pl['sex'] ?>">
                            </label><br/>
                            <label>
                                Картинка бота: <input style="width:216px;" name="pl_ico_bot" type="text" value="<?= $pl['ico_bot'] ?>">
                            </label><br/>
                            <label>
                                Имя бота: <input style="width:253px;" name="pl_name_bot" type="text" value="<?= $pl['name_bot'] ?>">
                            </label>
                            <hr/>
                            <br/>
                            <label>
                                Информация:<br/><textarea style="width:330px;" name="pl_info"><?= $pl['info'] ?></textarea>
                            </label><br/>
                            <label>
                                Действие: <input style="width:255px;" name="pl_act" type="text" value="<?= $pl['act'] ?>">
                            </label><br/>
                            <label>
                                Следующий квест: <input style="width:200px;" name="pl_next" type="text" value="<?= $pl['next'] ?>">
                            </label><br/>
                            <label>
                                Награда: <input style="width:200px;" name="pl_win" type="text" value="<?= $pl['win'] ?>"> (опыт|кр|екр|предметы)
                            </label><br/>
                            <label>
                                Дата: <input style="width:200px;" name="pl_data" type="text" value="<?= $pl['data'] ?>">
                            </label><br/>
                            <hr/>
                            <label>
                                Комната (требует): <input name="pl_room" type="text" value="<?= $pl['room'] ?>">
                            </label><br/>
                            <label>
                                Модуль, действие (требует): <input name="pl_module" type="text" value="<?= $pl['module'] ?>">
                            </label>
                            <hr/>
                            <input type="submit" value="Сохранить квест">
                        </form>
                        <?php
                    } else {
                        echo '<div style="text-align: center">Квест не найден.</div>>';
                    }
                } else {
                    echo '<a href="/main.php?moderation&go=3&add=1">Добавить новый квест</a><hr>';
                    if (isset($_GET['del'])) {
                        Db::sql('delete from an_quest where id = ?', [(int)$_GET['del']]);
                    } elseif (isset($_GET['add'])) {
                        Db::sql('insert into an_quest (id) values (default)');
                    }
                    foreach (Db::getRows('select id, name, sex from an_quest') as ['id' => $qid, 'name' => $qname, 'sex' => $qsex]) {
                        $qsex = $sx[$qsex];
                        echo <<<HTML
                        <div>
                            <span style="width:50px;display:inline-block;">$qid</span>
                            <span style="width:250px;display:inline-block; font-weight: bold;">$qname($qsex)</span>
                            <a href="/main.php?moderation&go=3&eq=$qid">Изменить</a>
                            <a href="/main.php?moderation&go=3&del=$qid">Удалить</a>
                        </div>
                        <hr>
                        HTML;
                    }
                }
                ?>
            </td>
        </tr>
    </table>
    <?php
} elseif ($go == 2 && $m->isAdmin) {
    if (isset($_POST['q_name'])) {
        $qd = [];
        /* Array ([q_act_atr_1] => 0 [q_act_val_1] => [q_tr_atr_1] => 0 [q_tr_val_1] => [q_ng_atr_1] => 0 [q_ng_val_1] => [q_nk_atr_NaN] => 0
    [q_nk_val_NaN] => [q_info] => test описание [q_line1] => 1 [q_line2] => 1 [q_fast] => 1 [q_align1] => 1 [q_align2] => 1 [q_align3] => 1 ) */
        $qd['name'] = $_POST['q_name'];
        $qd['lvl'] = explode('-', $_POST['q_lvl']);
        $qd['info'] = $_POST['q_info'];
        if ($_POST['q_line1'] == 1) {
            $qd['line'] = $_POST['q_line2'];
        }
        if ($_POST['q_fast'] == 1) {
            $gd['fast'] = 1;
        }
        if ($_POST['align1'] == 1) {
            $qd['align'] = 1;
        } elseif ($_POST['align2'] == 1) {
            $qd['align'] = 3;
        } elseif ($_POST['align3'] == 1) {
            $qd['align'] = 7;
        }

        $i = 1;
        while ($i != -1) {
            if (isset($_POST['q_act_atr_' . $i])) {
                if ($_POST['q_act_val_' . $i] != '') {
                    $qd['act_date'] .= $_POST['q_act_atr_' . $i] . ':=:' . $_POST['q_act_val_' . $i] . ':|:';
                }
            } else {
                $i = -2;
                $qd['act_date'] = trim($qd['act_date'], ':|');
            }
            $i++;
        }
        $i = 1;
        while ($i != -1) {
            if (isset($_POST['q_tr_atr_' . $i])) {
                if ($_POST['q_tr_val_' . $i] != '') {
                    $qd['tr_date'] .= $_POST['q_tr_atr_' . $i] . ':=:' . $_POST['q_tr_val_' . $i] . ':|:';
                }
            } else {
                $i = -2;
                $qd['tr_date'] = trim($qd['tr_date'], ':|');
            }
            $i++;
        }
        $i = 1;
        while ($i != -1) {
            if (isset($_POST['q_ng_atr_' . $i])) {
                if ($_POST['q_ng_val_' . $i] != '') {
                    $qd['win_date'] .= $_POST['q_ng_atr_' . $i] . ':=:' . $_POST['q_ng_val_' . $i] . ':|:';
                }
            } else {
                $i = -2;
                $qd['win_date'] = trim($qd['win_date'], ':|');
            }
            $i++;
        }
        $i = 1;
        while ($i != -1) {
            if (isset($_POST['q_nk_atr_' . $i])) {
                if ($_POST['q_nk_val_' . $i] != '') {
                    $qd['lose_date'] .= $_POST['q_nk_atr_' . $i] . ':=:' . $_POST['q_nk_val_' . $i] . ':|:';
                }
            } else {
                $i = -2;
                $qd['lose_date'] = trim($qd['lose_date'], ':|');
            }
            $i++;
        }
        Db::sql(
            'insert into quests (name, min_lvl, max_lvl, tr_date, act_date, win_date, lose_date, info, line, align, fast) values (?,?,?,?,?,?,?,?,?,?,?)',
            [
                $qd['name'],
                $qd['lvl'][0],
                $qd['lvl'][1],
                $qd['tr_date'],
                $qd['act_date'],
                $qd['win_date'],
                $qd['lose_date'],
                $qd['info'],
                $qd['line'],
                $qd['align'],
                $qd['fast'],
            ]
        );
    }
    ?>
    <script src="/js/modpanel.js"></script>

    <title>Текстовое поле</title>
    <style>
        .vtop {
            vertical-align: top;
        }

        .center {
            text-align: center;
        }

        table.cs0 {
            border-spacing: 0;
        }

        table.cp5 {
            border-collapse: collapse;
        }

        table.cp5 td {
            padding: 5px;
        }

        table.newquest {
            width: 100%;
            border: 0;
            background-color: #e1e1e1;
        }
    </style>
    <table style="width: 100%;">
        <tr>
            <td class="center"><h3>Редактор заданий</h3></td>
            <td style="width: 150px; text-align: right;">
                <input type="button" class="btn btn-success" value="Вернуться" onclick="location='/main.php?moderation';"/>
            </td>
        </tr>
        <tr>
            <td>
                <table class="cs0 cp5 newquest">
                    <!-- -->
                    <tr>
                        <td style="border-bottom:1px solid #CCCCCC;">
                            <div style="margin-left:11px;">
                                <a href="javascript:void(0)" onclick="nqst()">Добавить новое задание</a>
                            </div>
                            <div></div>
                        </td>
                    </tr>
                    <tr id="addNewquest" style="display:none;">
                        <td style="border-bottom:1px solid #CCCCCC; background-color: #dadada;">
                            <b>Панель добавления новых заданий:</b><br>
                            <form method="post" action="/main.php?moderation&go=2">

                                <table class="cs0 cp5" style="width: 100%; border: 0;">
                                    <tr>
                                        <td class="vtop" style="width: 200px;"><label for="q_name">Название задания</label></td>
                                        <td><input name="q_name" id="q_name" size="60" maxlength="50">
                                        </td>
                                    </tr>
                                    <tr>
                                        <td class="vtop"><label for="q_lvl">Уровень задания</label></td>
                                        <td><input name="q_lvl" id="q_lvl" value="0-21" size="10" maxlength="5"/></td>
                                    </tr>
                                    <tr>
                                        <td class="vtop">Действия</td>
                                        <td class="vtop" id="qact"><a href="javascript:void(0)" onclick="addqact()"><small>[+] добавить</small></a></td>
                                    </tr>
                                    <tr>
                                        <td class="vtop">Условия</td>
                                        <td class="vtop" id="qtr"><a href="javascript:void(0)" onclick="addqtr()"><small>[+] добавить</small></a></td>
                                    </tr>
                                    <tr>
                                        <td class="vtop">Награда</td>
                                        <td class="vtop" id="qng"><a href="javascript:void(0)" onclick="addqng()"><small>[+] добавить</small></a></td>
                                    </tr>
                                    <tr>
                                        <td class="vtop">Неудача</td>
                                        <td class="vtop" id="qnk"><a href="javascript:void(0)" onclick="addqnk()"><small>[+] добавить</small></a></td>
                                    </tr>
                                    <tr>
                                        <td class="vtop"><label for="q_info">Описание задания</label></td>
                                        <td><textarea name="q_info" id="q_info" style="width:90%" rows="7"></textarea></td>
                                    </tr>
                                    <tr style="background-color: #cbcbcb">
                                        <td class="vtop center">
                                            <label><input name="q_line1" type="checkbox" id="checkbox3" value="1">
                                                Линейное задание</label>
                                        </td>
                                        <td>
                                            <label><input name="q_line2" id="q_line3" size="5" maxlength="3">
                                                , id линейного сюжета</label>
                                        </td>
                                    </tr>
                                    <tr style="background-color: #cbcbcb">
                                        <td class="vtop center">
                                            <label><input name="q_fast" type="checkbox" id="q_fast" value="1">
                                                Быстрое задание</label>
                                        </td>
                                    </tr>
                                    <tr style="background-color: #cbcbcb">
                                        <td class="vtop center">
                                            <small>
                                                <label>
                                                    <input name="q_align1" type="checkbox" id="q_align1" value="1">Свет,
                                                </label>
                                                <label>
                                                    <input name="q_align2" type="checkbox" id="q_align2" value="1"/>Тьма,
                                                </label><br>
                                                <label>
                                                    <input name="q_align3" type="checkbox" id="q_align3" value="1"/>Нейтрал,
                                                </label>
                                            </small>
                                        </td>
                                        <td>
                                            <input type="submit" value="Добавить задание"/>
                                        </td>
                                    </tr>
                                </table>
                            </form>
                        </td>
                    </tr>
                    <!-- -->
                </table>

                <table class="cs0 cp5 newquest">
                    <!-- -->
                    <?php
                    if (isset($_GET['delq'])) {
                        Db::sql('delete from quests where id = ?', [$_GET['delq']]);
                    }
                    $ql = Db::getRows('select id, name, info from quests');
                    foreach ($ql as $quest): ?>
                        <tr>
                            <td style="border-bottom:1px solid #CCCCCC; width: 300px;">
                                <div style="margin-left:11px;"><?= $quest['name'] ?></div>
                                <div></div>
                            </td>
                            <td style="border-bottom:1px solid #CCCCCC; background-color: #dadada; width: 75px;">
                                <div style="text-align: center;">
                                    <a href="/main.php?moderation&go=2&delq=<?= $quest['id'] ?>">удалить</a>
                                </div>
                            </td>
                            <td style="border-bottom:1px solid #CCCCCC;">
                                <small><b>Описание:</b> <?= $quest['info'] ?></small>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                    <!-- -->
                </table>
            </td>
        </tr>
    </table>
    <?php
} else {
    ?>
    <style>
        .modpow {
            background-color: #ddd5bf;
        }

        .mt {
            background-color: #b1a993;
            padding: 5px 10px;
        }

        .md {
            padding: 10px;
        }
    </style>
    <div id="useMagic" style="display:none; position:absolute; border:solid 1px #776f59; left: 50px; top: 186px;" class="modpow">
        <div class="mt" id="modtitle"></div>
        <div class="md" id="moddata"></div>
    </div>
    <div style="display: grid; grid-template-columns: auto 150px;">
        <div style="text-align: center;">
            <?php ?>
            <h3>Модераторская</h3>
            <?php ?>
        </div>
        <div style="text-align: right;">
            <input type="button" class="btn btn-danger" value="Вернуться" onclick="location='main.php';">
        </div>
    </div>

    <form action="/main.php?moderation&rnd=<?= PassGen::intCode() ?>" method="post" name="F1" id="F1">
        <span style="color: red;"><?= $uer ?></span>
        <br>
        <div style="padding:10px; margin:5px; border-bottom:1px solid #cac9c7;">
            <h4>Наложить/Снять наказание</h4>
            <form method="post" id="moderation">
                <label for="logingo">Логин персонажа:</label>
                <input type="text" id="logingo" name="logingo">
                <label for="modReason">Причина действия (где применимо):</label>
                <input type="text" id="modReason" name="modReason">
            </form>

            <div>
                <label>Время в минутах: <input type="number" min="1" name="time" form="moderation"></label>
                <input type="submit" name="silence" value="Молчанка в чате" form="moderation">
                <input type="submit" name="unsilence" value="❌ Снять молчанку" form="moderation"><br>

                <label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
                <input type="submit" name="prison" value="Посадить в тюрьму" form="moderation">
                <input type="submit" name="unprison" value="❌ Выпустить из тюрьмы" form="moderation"><br>

                <label>Количество дней: <input type="number" min="1" name="time" form="moderation"></label>
                <input type="submit" name="depersonalize" value="Скрыть профиль" form="moderation">
                <input type="submit" name="undepersonalize" value="❌ Раскрыть профиль" form="moderation"><br>

                <form method="post">
                    <label for="marrypartner1">Партнёр 1</label>
                    <input type="text" id="marrypartner1" name="logingo">
                    <label for="marrypartner2">Партнёр 2</label>
                    <input type="text" id="marrypartner2" name="logingo2">
                    <input type="submit" name="marry" value="💘 Свадьба!">
                    <input type="submit" name="unmarry" value="💔 Развод!">
                </form>

                <?php if ($m->canBlockUsers): ?>
                    <div style="background-color: lightcoral; margin: 5px 1px; border: 1px dashed crimson;">
                        <input type="submit" name="ban" value="🔒 ️Заблокировать>" form="moderation">
                        <input type="submit" name="unban" value="🔓 Разблокировать" form="moderation">
                    </div>
                <?php endif; ?>
            </div>

            <?php if ($m->isAdmin): ?>
                <div>
                    <a href="/main.php?moderation&go=2">Редактировать квесты, задания и обучающие программы</a><br>
                    <a href="/main.php?moderation&go=3">Редактировать квесты для Нубозавров</a><br>
                    <a href="/main.php?moderation&go=1">Редактировать возможности подчиненных</a><br>
                </div>

                <input type="submit" name="addmoderator" value="Назначить модератором>" form="moderation">
                <input type="submit" name="deletemoderator" value="❌ Убрать из модераторов" form="moderation">
                <input type="submit" name="kickfrombattle" value="⚔️ Вытащить из боя>" form="moderation">
                <input type="submit" name="changegender" value="👨🏻‍🤝‍👩🏻 Сменить пол" form="moderation"><br>

                <label for="newLogin">Новый логин:</label> <input type="text" id="newLogin" name="newLogin">
                <input type="submit" name="changelogin" value="📝 Сменить логин"><br>

                <label for="itemId">ID предмета:</label> <input type="number" id="itemId" name="itemId" min="1">
                <input type="submit" name="giveitem" value="🎁 Подарить предмет"><br>

                <button disabled>Добавить опыта</button> <i style="color: grey">- очень сломанная херня.</i>
            <?php endif; ?>
        </div>

        <?php
        if ($m->isAdmin) {
            /** Мегафон только для администраторов. */
            Announcement::init();

            /** Регистрации персонажей только для администраторов. */
            UserRegistrationList::get();

            /** Лог действий модераторов только для администраторов. */
            $dsee = [];
            if (!isset($_POST['smod1'])) {
                $_POST['smod1'] = date('d.m.Y');
            }
            $dsee['date'] = explode('.', $_POST['smod1']);
            $dsee['date'] = $dsee['date'][2] . '-' . $dsee['date'][1] . '-' . $dsee['date'][0];
            $dsee['t1'] = strtotime($dsee['date'] . ' 00:00:00');
            $dsee['t2'] = strtotime($dsee['date'] . ' 23:59:59');
            $dsee['date'] = date('d.m.Y', $dsee['t1']);
            ?>
            <div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;">
                <h4>Показать лог действий модераторов</h4>
                <label>
                    Показать действия за
                    <input name="smod1" type="text" id="smod1" value="<?= $_POST['smod1'] ?>" size="11" maxlength="10">
                </label>
                <label>
                    Логин модератора
                    <input name="smod2" type="text" id="smod2" value="<?= $_POST['smod2'] ?>" size="30" maxlength="30">
                </label>
                <input type="submit" name="delosee3" id="delosee3" class="btn" value="Поиск"/>
            </div>
            <?php
            if (isset($_POST['delosee3'])) {
                foreach (Db::getRows('select uid, time, text from users_delo where login = ? and time between ? and ?', [$_POST['smod2'], $dsee['t1'], $dsee['t2']]) as $log) {
                    $date = date('d.m.Y H:i:s', $log['time']);
                    $login = User::getLogin($log['uid']);
                    echo <<<HTML
                    <div style="padding:0 10px 5px 10px; margin:5px; border-bottom:1px solid #cac9c7;">
                        <div style="display:inline-block;width:150px;color:green">$date</div>
                        {$log['text']} персонажу $login
                    </div>
                    HTML;
                }
            }
        } ?>
    </form>
    <?php
}