File size: 7,538 Bytes
4e1d4ee
94e14dc
 
 
 
65d94dd
995e423
3763d04
ec2f9d4
 
 
 
 
 
 
 
 
 
 
 
 
7a01815
 
 
a31b49e
 
772c6d6
 
a31b49e
 
 
 
 
 
 
 
 
 
772c6d6
a31b49e
 
 
 
 
 
7a01815
 
 
 
 
 
 
772c6d6
7a01815
 
 
 
 
 
ec2f9d4
a31b49e
 
f47f85a
772c6d6
 
 
 
 
 
 
 
ec2f9d4
3763d04
94e14dc
079b426
65d94dd
a31b49e
6506d29
009bb14
a31b49e
 
 
009bb14
a31b49e
 
 
 
 
 
 
65d94dd
a31b49e
90d04c3
a31b49e
6506d29
 
 
a31b49e
 
65d94dd
90d04c3
f9d7605
90d04c3
6b23076
995e423
3763d04
995e423
 
 
 
 
 
 
2404702
41a6c80
 
 
bcd40b3
41a6c80
 
 
 
bcd40b3
 
 
 
41a6c80
bcd40b3
 
 
 
 
 
 
 
 
 
 
 
 
 
995e423
41a6c80
 
 
bcd40b3
 
 
 
 
 
41a6c80
bcd40b3
 
a31b49e
bcd40b3
 
 
 
 
 
 
41a6c80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6506d29
41a6c80
 
 
 
ff18898
bcd40b3
3763d04
94e14dc
bcd40b3
41a6c80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>API Request</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/notyf/notyf.min.css">
    <style>
        body {
            font-family: Arial, sans-serif;
            text-align: center;
            background-color: #f0f0f0;
            margin: 0;
            padding: 0;
        }
        h1 {
            background-color: #4CAF50;
            color: white;
            padding: 20px;
            margin: 0;
            border-bottom: 2px solid #388E3C;
            font-size: 28px;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
        }
        .form-group {
            margin: 20px auto;
            width: 100%;
            max-width: 400px; /* Устанавливаем максимальную ширину */
            text-align: left;
        }
        .form-group label {
            display: block;
            margin-bottom: 8px;
            font-size: 16px;
        }
        .form-group input,
        .form-group select {
            width: 100%;
            padding: 12px; /* Увеличиваем внутренний отступ */
            font-size: 16px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
            margin-bottom: 20px;
        }
        button {
            display: block;
            margin: 20px auto;
            color: white;
            background-color: #4CAF50;
            border: none;
            cursor: pointer;
            padding: 12px 24px; /* Увеличиваем внутренний отступ */
            font-size: 16px;
            border-radius: 5px;
            transition: background-color 0.3s ease;
        }
        button:hover {
            background-color: #388E3C;
        }
        #dropdown-container {
            margin-top: 20px;
        }
        #dropdown-container select {
            width: 100%; /* Устанавливаем ширину выпадающего списка */
            padding: 12px; /* Увеличиваем внутренний отступ */
            font-size: 16px;
            border: 1px solid #ccc;
            border-radius: 5px;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <h1>WhatsGRM - Принудительное обновление базы данных с Бизон 365</h1>

    <div class="form-group">
        <label for="tokenInput">API-токен администратора Бизон 365:</label>
        <input type="text" id="tokenInput" placeholder="Введите токен">
    </div>

    <div class="form-group">
        <label for="dateSelect">Выбор даты:</label>
        <select id="dateSelect">
            <option value="2021-01-01T00:00:00">2021-01-01</option>
            <option value="2022-01-01T00:00:00">2022-01-01</option>
            <option value="2023-01-01T00:00:00">2023-01-01</option>
            <option value="2024-01-01T00:00:00">2024-01-01</option>
        </select>
    </div>

    <div class="form-group">
        <label for="typeSelect">Выбор формата вебинара:</label>
        <select id="typeSelect">
            <option value="AutoWebinars">Автовебинарные комнаты</option>          
            <option value="LiveWebinars">Вебинарные комнаты</option>

        </select>
    </div>

    <button id="sendRequestButton">Получить список комнат Бизон 365</button>
    <div id="dropdown-container"></div>
    <button id="sendGetRequestButton">Обновить базу пользователей WhatCRM</button>

    <script src="https://cdn.jsdelivr.net/npm/notyf/notyf.min.js"></script>
    <script>
        const notyf = new Notyf({
            duration: 5000,
            position: {
                x: 'right',
                y: 'top',
            },
        });

        let requestButtonClicked = false;

        // Привязываем обработчики событий только один раз
        document.getElementById('sendRequestButton').addEventListener('click', function() {
            if (requestButtonClicked) return; // Если уже нажимали, выходим

            requestButtonClicked = true; // Устанавливаем флаг, что кнопка уже была нажата

            const token = document.getElementById('tokenInput').value;
            const minDate = document.getElementById('dateSelect').value;
            const type = document.getElementById('typeSelect').value;
            const url = '/send_request';

            fetch(url, {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded'
                },
                body: 'token=' + encodeURIComponent(token) + '&minDate=' + encodeURIComponent(minDate) + '&type=' + encodeURIComponent(type)
            })
            .then(response => response.json())
            .then(data => {
                console.log('JSON Response:', data);
                createDropdown(data);
            })
            .catch(error => {
                console.error('Error:', error);
                notyf.error('Error: ' + error.message);
            })
            .finally(() => {
                requestButtonClicked = false; // Сбрасываем флаг после завершения запроса
            });
        });

        function createDropdown(data) {
            const container = document.getElementById('dropdown-container');
            container.innerHTML = ''; // Очистить контейнер перед добавлением нового списка

            const select = document.createElement('select');
            select.id = 'dropdown';
            select.classList.add('form-group');
            data.forEach(item => {
                const option = document.createElement('option');
                option.value = item;
                option.text = item;
                select.appendChild(option);
            });
            container.appendChild(select);

            // Привязываем обработчик событий только один раз
            const sendGetRequestButton = document.getElementById('sendGetRequestButton');
            sendGetRequestButton.removeEventListener('click', handleGetRequest); // Удаляем старый обработчик, если есть
            sendGetRequestButton.addEventListener('click', handleGetRequest);
        }

        function handleGetRequest() {
            const selectedValue = document.getElementById('dropdown').value;
            const token = document.getElementById('tokenInput').value;
            const getUrl = '/send_get_request?token=' + encodeURIComponent(token) + '&webinarId=' + encodeURIComponent(selectedValue);

            fetch(getUrl, {
                method: 'GET'
            })
            .then(response => response.json())
            .then(data => {
                console.log('GET Response:', data);
                notyf.success('Пользователи добавлены в базу данных WhatsGRM');
            })
            .catch(error => {
                console.error('Error:', error);
                notyf.error('Error: ' + error.message);
            });
        }
    </script>
</body>
</html>