PageSourceSearch

https://ixc.redeideiatelecom.com.br/central_assinante_web/assets/js/classes/class_1.js

js redeideiatelecom.com.br collected 2026-09-24 14:35:53 UTC 253,080 bytes, 5,161 lines download raw bytes

1class HotsiteWeb {
2    constructor() {
3        this.slice = 12;
4        this.home = false;
5        app.cordova_app = false;
6        document.addEventListener('deviceready', this.onDeviceReady, false);
7    }
8
9    onDeviceReady() {
10        return app.cordova_app = true;
11    }
12
13    getUrlAppAndroid() {
14        return app.url_app_android;
15    }
16
17    getIdCliente() {
18        return this.id_cliente;
19    }
20
21    getConnectionsAcs() {
22        const data = {
23            ACTION: 'getDevices',
24        };
25
26        const criar_toast = this.criarToast;
27        try {
28            $.get(`${__SERVER__}/model/connections/connections.php`, data, (data) => {
29                try {
30                    data = JSON.parse(data);
31                } catch (e) {
32                    data = data;
33                }
34
35                if (data != '' && data != undefined) {
36                    $(document).ready(() => {
37                        app.loading = false;
38                        router.history.current.matched[0].instances.default.connections = data;
39
40                        validaActiveClass('#pg_connections');
41                    });
42
43                    return;
44                }
45
46                return app.loading = false;
47            }).fail((e) => {
48                router.history.current.matched[0].instances.default.connections = [];
49                $(document).ready(() => {
50                    app.loading = false;
51                    router.history.current.matched[0].instances.default.loading = false;
52                    validaActiveClass('#pg_connections');
53                });
54                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'error_outline', 'red', 'id_erro');
55            });
56        } catch (e) {
57            return `Exception Class HotsiteWeb -> getDevices() -> ${e}`;
58        }
59    }
60
61    changedConfigWifi(configWifi) {
62        const data = {
63            CONFIG_WIFI: configWifi,
64            ACTION: 'changedConfigWifi',
65        };
66
67        app.loading = true;
68        const criar_toast = this.criarToast;
69        try {
70            $.get(`${__SERVER__}/model/connections/connections.php`, data, (data) => {
71                try {
72                    data = JSON.parse(data);
73                } catch (e) {
74                    data = data;
75                }
76                app.loading = false;
77                $('#modalAlterarDevice').modal('hide');
78
79                if (data != '' && data != undefined) {
80                    if (data.type == 'success') {
81                        criar_toast('2000', 'Sucesso!', 'Alteração no Wi-Fi está sendo processada. Isso pode levar alguns minutos para ser concluído. Por favor, aguarde.!', 'done', 'green', 'id_sucesso');
82                    } else if (data.message) {
83                        criar_toast('4000', 'Erro!', data.message, 'fas fa-times', 'red', 'id_erro');
84                    } else {
85                        criar_toast('4000', 'Erro!', 'Erro ao tentar executar a operaçao!.', 'fas fa-times', 'red', 'id_erro');
86                    }
87                }
88            }).fail((e) => {
89                app.loading = false;
90                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'error_outline', 'red', 'id_erro');
91            });
92        } catch (e) {
93            return `Exception Class HotsiteWeb -> changedConfigWifi() -> ${e}`;
94        }
95    }
96
97    rebootDevice(id_device) {
98        const data = {
99            ID_DEVICE: id_device || 0,
100            ACTION: 'rebootDevice',
101        };
102
103        app.loading = true;
104        const criar_toast = this.criarToast;
105        try {
106            $.get(`${__SERVER__}/model/connections/connections.php`, data, (data) => {
107                try {
108                    data = JSON.parse(data);
109                } catch (e) {
110                    data = data;
111                }
112                app.loading = false;
113                if (data != '' && data != undefined) {
114                    if (data.type == 'success') {
115                        criar_toast('2000', 'Sucesso!', 'Dispositivo reiniciado com sucesso.', 'done', 'green', 'id_sucesso');
116                    } else if (data.message) {
117                        criar_toast('4000', 'Erro!', data.message, 'fas fa-times', 'red', 'id_erro');
118                    } else {
119                        criar_toast('4000', 'Erro!', 'Erro ao tentar executar a operaçao!.', 'fas fa-times', 'red', 'id_erro');
120                    }
121                }
122            }).fail((e) => {
123                app.loading = false;
124                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'error_outline', 'red', 'id_erro');
125            });
126        } catch (e) {
127            return `Exception Class HotsiteWeb -> rebootDevice() -> ${e}`;
128        }
129    }
130
131    initModalConnections(device) {
132        app.data_wifi = {
133            selectedWifi: '',
134            ssid: '',
135            passwordWifi1: '',
136            passwordWifi2: '',
137        };
138        app.device_config_modal = device;
139        $('.main-panel').css('opacity', '0.3');
140        $('#modalAlterarDevice').on('hidden.bs.modal', () => {
141            $('.main-panel').css('opacity', '1');
142        });
143
144        $('.topbar , .sidebar, #botaoPagarCreditCard, .botoes_fechar').click((e) => {
145            $('#fecharAlterarConnections').click();
146        });
147    }
148
149    getDadosServidor() {
150        const data = {
151            ACTION: 'getDadosServidor',
152        };
153
154        const criar_toast = this.criarToast;
155
156        try {
157            $.get(`${__SERVER__}/model/speed_test/speed_test.php`, data, (data) => {
158                try {
159                    data = JSON.parse(data);
160                } catch (e) {
161                    data = data;
162                }
163
164                if (data != '' && data != undefined) {
165                    $(document).ready(() => {
166                        const servidor = data.mensagem.SERVIDOR;
167                        router.history.current.matched[0].instances.default.IP = data.mensagem.IP;
168                        router.history.current.matched[0].instances.default.PingServer = servidor.servidor_ping;
169                        router.history.current.matched[0].instances.default.SpeedTestServer = servidor.servidor_instalacao;
170                        router.history.current.matched[0].instances.default.ServerName = servidor.servidor_instalacao;
171                        app.showSpeedTest = !!servidor.servidor_instalacao;
172                        router.history.current.matched[0].instances.default.SpeedTest = true;
173                        router.history.current.matched[0].instances.default.loading = false;
174                        router.history.current.matched[0].instances.default.iframe = true;
175                        return app.loading = false;
176                    });
177                }
178            }).fail((e) => {
179                app.loading = false;
180                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
181            });
182        } catch (e) {
183            throw e;
184        }
185    }
186
187    getDadosCarteira(idReceber, callbackSuccess) {
188        const data = {
189            ACTION: 'getDadosCarteira',
190            ID_RECEBER: idReceber,
191        };
192
193        const criar_toast = this.criarToast;
194
195        try {
196            $.post(`${__SERVER__}/model/faturas/faturas.php`, data, callbackSuccess)
197                .fail((e) => {
198                    app.loading = false;
199                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
200                });
201        } catch (e) {
202            throw e;
203        }
204    }
205
206    /**
207     * Dados cliente
208     */
209    buscarDadosCliente() {
210        const data = {
211            ACTION: 'getDadosCliente',
212        };
213
214        const criar_toast = this.criarToast;
215
216        try {
217            $.get(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
218                try {
219                    data = JSON.parse(data);
220                } catch (e) {
221                    data = data;
222                }
223
224                if (data != '' && data != undefined) {
225                    router.history.current.matched[0].instances.default.dados_cliente_padrao = data.dados_cliente;
226                    router.history.current.matched[0].instances.default.dados_cliente = data.dados_cliente;
227                    router.history.current.matched[0].instances.default.paises = data.paises;
228                    router.history.current.matched[0].instances.default.estados = data.estados;
229                    router.history.current.matched[0].instances.default.cidades = data.cidades;
230                    router.history.current.matched[0].instances.default.mostrar_tela = 'A';
231                    router.history.current.matched[0].instances.default.cliente_nome = data.dados_cliente.fantasia;
232
233                    router.history.current.matched[0].instances.default.habilitar_altera_senha = data.dados_cliente.habilitar_altera_senha;
234                    $(document).ready(() => {
235                        const hs_web = new HotsiteWeb();
236                        hs_web.buscarLogo();
237
238                        app.loading = false;
239                        router.history.current.matched[0].instances.default.loading = false;
240                        router.history.current.matched[0].instances.default.mostrar_privacidade = !app.mostra_builder;
241
242                        setTimeout(() => {
243                            const acessoAutomatico = document.getElementById('acesso_automatico');
244                            if (typeof acessoAutomatico !== 'undefined' && acessoAutomatico != null) {
245                                if (data.dados_cliente.acesso_automatico_central === 'S') {
246                                    acessoAutomatico.checked = true;
247                                } else {
248                                    acessoAutomatico.checked = false;
249                                }
250                            }
251                        });
252
253                        hs_web.setarPermissaoDadosCliente();
254                    });
255                    return;
256                }
257
258                router.history.current.matched[0].instances.default.dados_cliente_padrao = [];
259                router.history.current.matched[0].instances.default.dados_cliente = [];
260                router.history.current.matched[0].instances.default.paises = [];
261                router.history.current.matched[0].instances.default.estados = [];
262                router.history.current.matched[0].instances.default.cidades = [];
263            }).fail((e) => {
264                app.loading = false;
265                router.history.current.matched[0].instances.default.loading = false;
266                router.history.current.matched[0].instances.default.dados_cliente_padrao = [];
267                router.history.current.matched[0].instances.default.dados_cliente = [];
268                router.history.current.matched[0].instances.default.paises = [];
269                router.history.current.matched[0].instances.default.estados = [];
270                router.history.current.matched[0].instances.default.cidades = [];
271                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
272            });
273        } catch (e) {
274            return `Exception Class HotsiteWeb -> buscarDadosCliente() -> ${e}`;
275        }
276    }
277
278    updateFirebaseToken() {
279        if (window.ReactNativeWebView) {
280            this.getTokenAPP()
281                .then((token) => {
282                    $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, { ACTION: 'updateFirebaseToken', TOKEN: token }, () => {})
283                        .fail(() => {});
284                });
285        }
286    }
287
288    getCidades(estado) {
289        const data = {
290            ACTION: 'getCidades',
291            ESTADO: estado || 0,
292        };
293
294        const hs_web = new HotsiteWeb();
295
296        try {
297            $.get(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
298                try {
299                    data = JSON.parse(data);
300                } catch (e) {
301                    data = data;
302                }
303
304                if (data != '' && data != undefined) {
305                    router.history.current.matched[0].instances.default.cidades = data;
306
307                    $(document).ready(() => {
308                        app.loading = false;
309                        router.history.current.matched[0].instances.default.loading = false;
310                        router.history.current.matched[0].instances.default.dados_cliente.cidade_nome = '';
311                        $("input[name='cidades']").focus();
312                    });
313                    return;
314                }
315                router.history.current.matched[0].instances.default.cidades = [];
316            }).fail((e) => {
317                app.loading = false;
318                router.history.current.matched[0].instances.default.cidades = [];
319                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
320            });
321        } catch (e) {
322            return `Exception Class HotsiteWeb ->
322 buscarDadosCliente() -> ${e}`;
323        }
324    }
325
326    solicitarAtualizacaoCadastro(dados) {
327        const data = {
328            ACTION: 'setDadosClienteAlteracao',
329            DADOS_ALTERACAO: dados || '',
330        };
331
332        const hs_web = new HotsiteWeb();
333
334        try {
335            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
336                try {
337                    data = JSON.parse(data);
338                } catch (e) {
339                    data = data;
340                }
341
342                if (data != '' && data != undefined) {
343                    if (data.tipo === 'sucesso') {
344                        hs_web.criarToast('3000', 'Sucesso!', data.mensagem, 'fas fa-check', 'green', 'id_sucesso');
345                        router.history.current.matched[0].instances.default.atualizando_dados = false;
346                        hs_web.buscarDadosCliente();
347                    } else {
348                        hs_web.criarToast('5000', 'Erro!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
349                        $(document).ready(() => {
350                            app.loading = false;
351                        });
352                    }
353                }
354            }).fail((e) => {
355                app.loading = false;
356                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
357            });
358        } catch (e) {
359            return `Exception Class HotsiteWeb -> buscarDadosCliente() -> ${e}`;
360        }
361    }
362
363    alterarSenha(senha_atual, senha_nova, senha_nova_repetir) {
364        const data = {
365            SENHA_ATUAL: senha_atual || '',
366            SENHA_NOVA: senha_nova || '',
367            SENHA_NOVA_REPETIR: senha_nova_repetir || '',
368            ACTION: 'setAlterarSenha',
369        };
370
371        const criar_toast = this.criarToast;
372
373        try {
374            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
375                try {
376                    data = JSON.parse(data);
377                } catch (e) {
378                    data = data;
379                }
380                if (data != '' && data != undefined) {
381                    if (data[0].tipo == 'sucesso') {
382                        router.history.current.matched[0].instances.default.dados_cliente.senha_atual = '';
383                        router.history.current.matched[0].instances.default.dados_cliente.senha_nova = '';
384                        router.history.current.matched[0].instances.default.dados_cliente.senha_nova_repetir = '';
385                        router.history.current.matched[0].instances.default.atualizando_dados_senha = false;
386                        criar_toast('2000', 'Sucesso!', 'Senha alterada com sucesso.', 'fas fa-check', 'green', 'id_sucesso');
387                    } else {
388                        router.history.current.matched[0].instances.default.atualizando_dados_senha = false;
389                        criar_toast('4000', 'Erro!', `${data[0].mensagem}.`, 'fas fa-exclamation-circle', 'red', 'id_erro');
390                    }
391                }
392            }).fail((e) => {
393                router.history.current.matched[0].instances.default.atualizando_dados_senha = false;
394                router.history.current.matched[0].instances.default.dados_cliente.senha_atual = '';
395                router.history.current.matched[0].instances.default.dados_cliente.senha_nova = '';
396                router.history.current.matched[0].instances.default.dados_cliente.senha_nova_repetir = '';
397                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
398            });
399        } catch (e) {
400            return `Exception Class HotsiteWeb -> alterarSenha() -> ${e}`;
401        }
402    }
403
404    setSenhaAtualParaMD5(senha) {
405        const data = {
406            SENHA_ATUAL: senha || '',
407            ACTION: 'criptografarSenhaParaMD5',
408        };
409        const toast = this.criarToast;
410
411        try {
412            $.get(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
413                data = JSON.parse(data);
414
415                if (data.criptografada === 'S' && senha !== '') {
416                    const campoSenhaAtual = document.getElementById('senha_atual');
417                    campoSenhaAtual.value = data.message;
418                    router.history.current.matched[0].instances.default.dados_cliente.senha_atual = data.message;
419                    toast('5000', 'Sucesso!', 'Como a opção "Senha codificada" está ativada no cadastro do cliente, a senha digitada também foi criptografada!', 'fas fa-check', 'green', 'id_sucesso');
420                }
421            }).fail((e) => {
422                toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
423            });
424        } catch (e) {
425            return `Exception Class HotsiteWeb -> retornarSenhaMD5() -> ${e}`;
426        }
427    }
428
429    cadastrarNovoCliente(array_dados) {
430        const data = {
431            NOME: array_dados.nome,
432            TELEFONE: array_dados.telefone,
433            CPF_CNPJ: array_dados.cpf_cnpj,
434            EMAIL: array_dados.email,
435            ACTION: 'getValidaCadastro',
436        };
437
438        const criar_toast = this.criarToast;
439
440        try {
441            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
442                data = JSON.parse(data);
443
444                if (data != '' && data != undefined) {
445                    if (Array.isArray(data)) {
446                        const countErros = data.length;
447                        let i = 0;
448                        while (i <= countErros) {
449                            criar_toast('5000', 'Erro!', data[i].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
450                            i++;
451                        }
452                    } else if (data.tipo == 'sucesso') {
453                        criar_toast('3000', 'Sucesso!', data.mensagem, 'fas fa-check', 'green', 'id_sucesso');
454                        setTimeout("location.href = '/central_assinante_web/login';", 3000);
455                    } else {
456                        criar_toast('5000', 'Erro!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
457                    }
458                }
459            }).fail((e) => {
460                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
461            });
462        } catch (e) {
463            return `Exception Class HotsiteWeb -> enviarNovoAtendimento() -> ${e}`;
464        }
465    }
466
467    validarEmail(email) {
468        let valid = true;
469        const emails = email.replace(';', ',').split(',');
470
471        jQuery.each(emails, function () {
472            if (jQuery.trim(this) != '') {
473                if (!jQuery.trim(this).match(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i)) valid = false;
474            }
475        });
476        return valid;
477    }
478
479    habilitarDesabilitarAcessoAutomatico(acesso_automatico) {
480        const data = {
481            ACESSO_AUTOMATICO: acesso_automatico ? 'S' : 'N',
482            ACTION: 'setHabilitarDesabilitarAcessoAutomatico',
483        };
484
485        const hs_web = new HotsiteWeb();
486
487        try {
488            $.get(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
489                data = JSON.parse(data);
490                if (data != '' && data != undefined) {
491                    $(document).ready(() => {
492                        app.loading = false;
493                    });
494
495                    if (data.tipo === 'sucesso') {
496                        hs_web.criarToast('3000', 'Sucesso!', data.mensagem, 'fas fa-check', 'green', 'id_sucesso');
497                    } else if (acesso_automatico) {
498                        hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro ao tentar ativar Acesso Automático', 'fas fa-exclamation-circle', 'red', 'id_erro');
499                    } else {
500                        hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro ao tentar desativar Acesso Automático', 'fas fa-exclamation-circle', 'red', 'id_erro');
501                    }
502                }
503            }).fail((e) => {
504                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
505            });
506        } catch (e) {
507            return `Exception Class HotsiteWeb -> enviarNovoAtendimento() -> ${e}`;
508        }
509    }
510
511    /**
512     * Faturas
513     */
514    buscarFaturas(slice, home = false, pg_faturas, valida_loading) {
515        const data = {
516            SLICE: slice || this.slice,
517            HOME: home || this.home,
518            ACTION: 'getFaturas',
519        };
520        const hs_web = new HotsiteWeb();
521
522        const criar_toast_pendencia = this.criarToastPendencia;
523        const valida_resize_home = this.validaResizeHome;
524        const valida_resize_faturas = this.validaResizeFaturas;
525        const valida_loading_function = this.validaLoading;
526        try {
527            $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
528                try {
529                    data = JSON.parse(data);
530                } catch (e) {
531                    data = data;
532                }
533                if (data != '' && data != undefined) {
534                    router.history.current.matched[0].instances.default.faturas = data;
535                    router.history.current.matched[0].instances.default.is_safari = IS_SAFARI;
536
537                    if (data.total_registros <= SLICE_FATURA) {
538                        router.history.current.matched[0].instances.default.mostrar_cinco_faturas = true;
539                    } else {
540                        router.history.current.matched[0].instances.default.mostrar_cinco_faturas = false;
541                    }
542
543                    if (pg_faturas) {
544                        valida_resize_faturas();
545                    } else {
546                        valida_resize_home();
547                    }
548
549                    $(document).ready(() => {
550                        if (valida_loading) {
551                            LOADING_FATURA = false;
552                            valida_loading_function();
553                        } else {
554                            app.loading = false;
555                            router.history.current.matched[0].instances.default.loading = false;
556
557                            hs_web.setarPermissaoFaturas();
558
559                            validaActiveClass('#pg_fatura');
560                        }
561                    });
562                    return;
563                }
564
565                router.history.current.matched[0].instances.default.faturas = [];
566
567                $(document).ready(() => {
568                    if (valida_loading) {
569                        LOADING_FATURA = false;
570                        valida_loading_function();
571                    } else {
572                        app.loading = false;
573                        router.history.current.matched[0].instances.default.loading = false;
574                    }
575                });
576            }).fail((e) => {
577                $(document).ready(() => {
578                    if (valida_loading) {
579                        LOADING_FATURA = false;
580                        valida_loading_function();
581                    } else {
582                        app.loading = false;
583                        router.history.current.matched[0].instances.default.loading = false;
584                    }
585                });
586
587                router.history.current.matched[0].instances.default.loading = false;
588                router.history.current.matched[0].instances.default.faturas = [];
589                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
590            });
591        } catch (e) {
592            return `Exception Class HotsiteWeb -> buscarFaturas() -> ${e}`;
593        }
594    }
595
596    enviarFaturaSMS(tipo, id_receber) {
597        const data = {
598            ID_RECEBER: id_receber || 0,
599            TIPO: 'SMS',
600            ACTION: 'setBoletoSMS',
601        };
602
603        app.loading = true;
604
605        const criar_toast = this.criarToast;
606
607        try {
608            $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
609                try {
610                    data = JSON.parse(data);
611                } catch (e) {
612                    data = data;
613                }
614                app.loading = false;
615                if (data != '' && data != undefined) {
616                    if (data[0].tipo == 'sucesso') {
617                        criar_toast('2000', 'Sucesso!', 'A fatura foi enviada por SMS para seu celular.', 'fas fa-check', 'green', 'id_sucesso');
618                    } else {
619                        criar_toast('2000', 'Erro!', 'Ocorreu um erro ao enviar a fatura.', 'fas fa-exclamation-circle', 'red', 'id_erro');
620                    }
621                }
622            }).fail((e) => {
623                app.loading = false;
624                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
625            });
626        } catch (e) {
627            return `Exception Class HotsiteWeb -> enviarFaturaSMS() -> ${e}`;
628        }
629    }
630
631    enviarFaturaEMAIL(id_receber) {
632        const data = {
633            ID_RECEBER: id_receber || 0,
634            ACTION: 'setBoletoEMAIL',
635        };
636
637        app.loading = true;
638        const criar_toast = this.criarToast;
639        try {
640            $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
641                try {
642                    data = JSON.parse(data);
643                } catch (e) {
644                    data = data;
645                }
646
647                app.loading = false;
648                if (data != '' && data != undefined) {
649                    if (data.tipo == 'sucesso') {
650                        criar_toast('2000', 'Sucesso!', 'A fatura foi enviada para seu email.', 'fas fa-check', 'green', 'id_sucesso');
651                    } else if (data[0].mensagem) {
652                        criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
653                    } else {
654                        criar_toast('4000', 'Erro!', 'Ocorreu um erro ao enviar a fatura.', 'fas fa-exclamation-circle', 'red', 'id_erro');
655                    }
656                }
657            }).fail((e) => {
658                app.loading = false;
659                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
660            });
661        } catch (e) {
662            return `Exception Class HotsiteWeb -> enviarFaturaEMAIL() -> ${e}`;
663        }
664    }
665
666    restoreModalVariavel() {
667        app.modal_url = '';
668        app.link_fatura = '';
669        app.pdf_fatura_nota = '';
670    }
671
672    imprimirFatura(id_receber, criar_toast, alt_gateway = false) {
673        app.modal_url = '';
674        this.restoreModalVariavel();
675
676        const data = {
677            ID_RECEBER: id_receber || 0,
678            APP: app.cordova_app ? 'S' : 'N',
679            ACTION: 'getBoletoArquivo',
680            ALT_GATEWAY: (alt_gateway === true),
681        };
682
683        $('#btn_imprimir_fat_').attr('disabled', true);
684
685        app.loading_modal = true;
686        var criar_toast = criar_toast || this.criarToast;
687
688        try {
689            if (data.APP === 'S') {
690                app.loading = true;
691
692                let permiteDownload = true;
693
694                /**
695                 *  Validar se o Boleto eh um Link Gateway para mostrar o modal
696                 * */
697                $.ajax({
698                    url: `${__SERVER__}/model/faturas/faturas.php`,
699                    async: false,
700                    type: 'GET',
701                    data,
702                }).done((data) => {
703                    try {
704                        data = JSON.parse(data);
705                    } catch (e) {
706                        data = data;
707                    }
708
709                    if (data[0].tipo == 'link') {
710                        permiteDownload = false;
711                        $('#btn_imprimir_fat_').attr('disabled', false);
712                        app.loading = false;
713                        app.modal_url = '';
714                        app.loading_modal = false;
715
716                        cordova.InAppBrowser.open(
717                            data[0].mensagem,
718                            '_blank',
719                            'location=yes',
720                        );
721                    }
722                }).fail(() => {
723                    app.loading = false;
724                    app.modal_url = '';
725                    app.loading_modal = false;
726                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
727                });
728
729                if (permiteDownload) {
730                    const fileTransfer = new FileTransfer();
731                    const fileURL = `${cordova.file.dataDirectory}fatura.pdf`;
732                    const uri = `${__SERVER__}/model/faturas/faturas.php?ID_RECEBER=${data.ID_RECEBER}&APP=${data.APP}&ACTION=${data.ACTION}`;
733
734                    fileTransfer.download(uri, fileURL,
735                        (entry) => {
736                            cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
737                                error(e) {
738                                    app.loading = false;
739                                    alert('Instale um leitor de arquivo .pdf!');
740                                },
741                                success(e) {
742                                    app.loading = false;
743                                },
744                            });
745                        },
746                        (e) => {
747                            app.loading = false;
748                            alert('Erro ao baixar arquivo!');
749                        }, false, {});
750
751                    $('#btn_imprimir_fat_').attr('disabled', false);
752                }
753            } else {
754                $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
755                    try {
756                        data = JSON.parse(data);
757                    } catch (e) {
758                        data = data;
759                    }
760                    if (data[0].tipo !== 'erro') {
761                        if (data[0].tipo == 'link') {
762                            $('#btn_imprimir_fat_').attr('disabled', false);
763                            return app.link_fatura = data[0].mensagem;
764                        }
765                        if (typeof window.ReactNativeWebView !== 'undefined') {
766                            postMessageMobile('base64', JSON.stringify({
767                                base: data[0].mensagem.base_pdf,
768                                nome: btoa((Math.floor(Math.random() * 9999) + 1000)) + data[1],
769                            })).then(
770                                (retorno) => {
771                                    $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
772                                    document.getElementById('modalImpressaoClose').click();
773                                    if (JSON.parse(retorno.data).retorno == 'success') {
774                                        criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
775                                    } else {
776                                        criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
777                                    }
778                                },
779                            );
780                        } else {
781                            if (data[2] == 'true') {
782                                $('#btn_imprimir_fat_').attr('disabled', false);
783
784                                const xmlHttp = new XMLHttpRequest();
785                                xmlHttp.open('GET', `${__SERVER__}/model/faturas/faturas.php?APP=N&ACTION=retornarArquivo&CAMINHO=${data[1]}`, true);
786                                xmlHttp.responseType = 'blob';
787                                xmlHttp.onreadystatechange = function (e) {
788                                    if (xmlHttp.readyState === 4 && (xmlHttp.status === 200 || xmlHttp.status === 0)) {
789                                        const link = document.createElement('a');
790                                        link.href = URL.createObjectURL(xmlHttp.response);
791                                        link.download = 'Fatura.pdf';
792                                        link.click();
793
794                                        document.getElementById('modalImpressaoClose').click();
795                                    }
796                                };
797                                xmlHttp.send();
798                            }
799                            app.loading_modal = false;
800                            if (data != '' && data != undefined && !navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i)) {
801                                if (data[0].tipo == 'sucesso') {
802                                    $('#btn_imprimir_fat_').attr('disabled', false);
803                                    return app.modal_url = data[0].mensagem.base_pdf;
804                                }
805                            }
806                        }
807                    } else {
808                        if (data[0].mensagem) {
809                            criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
810
811                            app.loading_modal = false;
812                        } else {
813                            criar_toast('2000', 'Aviso!', 'Ocorreu um erro ao imprimir a fatura.', 'fas fa-exclamation-circle', 'red', 'id_erro');
814                        }
815                        $('#btn_imprimir_fat_').attr('disabled', false);
816                    }
817                }).fail((e) => {
818                    app.modal_url = '';
819                    app.loading_modal = false;
820                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
821                    $('#btn_imprimir_fat_').attr('disabled', false);
822                });
823            }
824        } catch (e) {
825            return `Exception Class HotsiteWeb -> imprimirFatura() -> ${e}`;
826        }
827    }
828
829    suspenderContrato(id_contrato, data_inicial_suspensao, data_final_suspensao) {
830        const closeButton = document.querySelector('#modalConcluirSuspensao button[data-dismiss=modal]');
831        closeButton.click();
832        const criar_toast = this.criarToast;
833        const data = {
834            ID_CONTRATO: id_contrato || 0,
835            DATA_INICIAL_SUSPENSAO: data_inicial_suspensao || 0,
836            DATA_FINAL_SUSPENSAO: data_final_suspensao || 0,
837            ACTION: 'suspenderContrato',
838        };
839        $.ajax({
840            url: `${__SERVER__}/model/planos/planos.php`,
841            async: true,
842            type: 'GET',
843            data,
844        }).done((data) => {
845            try {
846                closeButton.click();
847                data = JSON.parse(data);
848
849                if (data.tipo === 'S') {
850                    new HotsiteWeb().buscarPlanos(SLICE_PLANO, false, '', true);
851                    criar_toast('5000', 'Sucesso!', data.resp, 'fas fa-check', 'green', 'id_sucesso');
852                } else {
853                    criar_toast('5000', 'Erro!', data.resp, 'fas fa-exclamation-circle', 'red', 'id_erro');
854                }
855            } catch (e) {
856                data = data;
857            }
858        }).fail(() => {
859            criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
860        });
861    }
862
863    removerSuspensaoContrato(id_contrato) {
864        const closeButton = document.querySelector('#modalRemoveSuspensaoConcluir button[data-dismiss=modal]');
865        closeButton.click();
866        const criar_toast = this.criarToast;
867        const data = {
868            ID_CONTRATO: id_contrato || 0,
869            ACTION: 'removerSuspensaoContrato',
870        };
871        $.ajax({
872            url: `${__SERVER__}/model/planos/planos.php`,
873            async: true,
874            type: 'GET',
875            data,
876        }).done((data) => {
877            try {
878                closeButton.click();
879                data = JSON.parse(data);
880
881                if (data.tipo === 'S') {
882                    new HotsiteWeb().buscarPlanos(SLICE_PLANO, false, '', true);
883
884                    criar_toast('5000', 'Sucesso!', data.resp, 'fas fa-check', 'green', 'id_sucesso');
885                } else {
886                    criar_toast('5000', 'Erro!', data.resp, 'fas fa-exclamation-circle', 'red', 'id_erro');
887                }
888            } catch (e) {
889                data = data;
890            }
891        }).fail(() => {
892            criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
893        });
894    }
895
896    imprimirPix(id_receber) {
897        const criar_toast = this.criarToast;
898        criar_toast('25000', '', 'Caso você já tenha efetuado o pagamento por outro meio, aguarde seu processamento!', '', 'yellow', '');
899
900        const headerPix = document.getElementById('headerPix');
901        const pixLoading = document.getElementById('pixLoading');
902        const qrCodePix = document.getElementById('qrCodePix');
903        const pixFooter = document.getElementById('pixFooter');
904        const pixCopiaECola = document.getElementById('qrCodePixCopiaECola');
905        const botaoFecharModal = document.getElementById('fecharConsultarFatura');
906        let botaoImprimirPixConsultarFatura = '';
907        if (document.getElementById('botaoImprimirPixConsultarFatura')) {
908            botaoImprimirPixConsultarFatura = document.getElementById('botaoImprimirPixConsultarFatura');
909        } else if (document.getElementById('btn_imprimir_pix')) {
910            botaoImprimirPixConsultarFatura = document.getElementById('btn_imprimir_pix');
911        } else if (document.getElementById('btn_imprimir_pix_home')) {
912            botaoImprimirPixConsultarFatura = document.getElementById('btn_imprimir_pix_home');
913        } else if (document.getElementById('btn_imprimir_pix_home_')) {
914            botaoImprimirPixConsultarFatura = document.getElementById('btn_imprimir_pix_home_');
915        } else if (document.getElementById('btn_imprimir_pix_')) {
916            botaoImprimirPixConsultarFatura = document.getElementById('btn_imprimir_pix_');
917        }
918        const modalPix = document.getElementById('modalPix');
919
920        pixLoading.style.display = 'block';
921        headerPix.style.display = 'none';
922        qrCodePix.style.display = 'none';
923        pixFooter.style.display = 'none';
924        pixCopiaECola.style.display = 'none';
925
926        botaoFecharModal.click();
927        botaoImprimirPixConsultarFatura.setAttribute('disabled', '');
928
929        let success = false;
930
931        const data = {
932            ID_RECEBER: id_receber || 0,
933            ACTION: 'getDadosPix',
934        };
935
936        $.ajax({
937            url: `${__SERVER__}/model/faturas/faturas.php`,
938            async: false,
939            type: 'GET',
940            data,
941        }).done((data) => {
942            pixLoading.style.display = 'none';
943            modalPix.style.overflow = 'scroll';
944            try {
945                data = JSON.parse(data);
946
947                if (data.type === 'success') {
948                    success = true;
949                    headerPix.style.display = 'block';
950                    headerPix.style.textAlign = 'left';
951                    qrCodePix.style.display = 'block';
952                    pixFooter.style.display = 'block';
953                    pixCopiaECola.style.display = 'block';
954
955                    headerPix.innerHTML = `<p><b>${data.pix.dadosPix.devedor.nome}</b><\p>`
956                        + `<p><b>Valor: </b>R$ ${data.pix.dadosPix.valor.original}<\p>`
957                        + `<p><b>Código PIX válido até: </b>${data.pix.dadosPix.expiracaoPix} (Horário de Brasília)<\p>`
958                        + `<p style="text-align: center">${data.pix.dadosPix.solicitacaoPagador}</p>`;
959                    if (data.gateway.gatewayNome == 'fortunus') {
960                        qrCodePix.innerHTML = `<img id="imgQrCode" src="data:image/svg+xml;base64,${data.pix.qrCode.imagemQrcode}" style="max-width: 200px; max-height: 200px;"></center>`;
961                    } else {
962                        qrCodePix.innerHTML = `<img id="imgQrCode" src="data:image/png;base64,${data.pix.qrCode.imagemQrcode}" style="max-width: 200px; max-height: 200px;"></center>`;
963                    }
964
965                    pixCopiaECola.innerHTML = `Pix Copia e Cola: <input readonly="readonly" id="inputPixCopiaECola" value="${data.pix.qrCode.qrcode}"> <button id="botaoCopiarPix">Copiar</button><br><br>`
966                        + '<p><b id="counter">00:00</b></p>';
967
968                    const botaoCopiarPix = document.getElementById('botaoCopiarPix');
969                    botaoCopiarPix.addEventListener('click', () => {
970                        const inputPixCopiaECola = document.getElementById('inputPixCopiaECola');
971
972                        const displaySuccessToast = () => criar_toast(
973                            2000,
974                            'Sucesso!',
975                            'Chave Pix copiada para a área de transferência.',
976                            'fas fa-check',
977                            'green',
978                            'id_sucesso',
979                            true,
980                        );
981
982                        const displayErrorToast = () => criar_toast(
983                            2000,
984                            'Erro!',
985                            'Não foi possível copiar a chave pix.',
986                            'fas fa-times',
987                            'red',
988                            'id_erro',
989                            true
990                        );
991
992                        navigator.clipboard.writeText(inputPixCopiaECola?.value || '').then(() => {
993                            const isClipboardTextMatching = (clipboardText) => clipboardText === inputPixCopiaECola?.value;
994                            navigator.clipboard.readText().then((clipboardText) => {
995                                if (isClipboardTextMatching(clipboardText)) {
996                                    displaySuccessToast();
997                                } else {
998                                    displayErrorToast();
999                                }
1000                            });
1001                        }).catch(displayErrorToast);
1002                    });
1003
1004                    pixFooter.innerHTML = '<p>Utilize o app do seu banco para escanear o código <b>PIX</b> e concluir o pagamento.<br>';
1005
1006                    if (data.gateway.gatewayNome == 'sicoobApi') {
1007                        pixFooter.innerHTML = '<p><b>ATENÇÃO</b>: O processamento da transação via PIX pode demorar <b>até 1 dia útil</b> para ser efetivada.<br><br>';
1008                    }
1009                } else {
1010                    headerPix.style.display = 'block';
1011                    headerPix.style.textAlign = 'center';
1012                    headerPix.innerHTML = `${'<img src="data:image/png;base64,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"/>'
1013                        + '</center><p>'}${data.mensagem}</p>`;
1014                    criar_toast('5000', 'Erro!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1015                }
1016            } catch (e) {
1017                data = data;
1018            }
1019        }).fail(() => {
1020            criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1021        });
1022
1023        if (success) {
1024            this.consultarStatusPix(id_receber);
1025        }
1026        botaoImprimirPixConsultarFatura.removeAttribute('disabled');
1027    }
1028
1029    consultarStatusPix(id_receber) {
1030        const criar_toast = this.criarToast;
1031
1032        let mm = 4;
1033        let ss = 59;
1034
1035        const tempo = 1000;
1036
1037        const cron = setInterval(() => { timer(); }, tempo);
1038
1039        function timer() {
1040            ss--;
1041
1042            if (ss === 0) {
1043                if (mm === 0) {
1044                    document.getElementById('counter').innerText = '00:00';
1045                    clearInterval(cron);
1046                    return;
1047                }
1048                ss = 59;
1049                mm--;
1050            }
1051
1052            document.getElementById('counter').innerText = (`0${mm}:${ss < 10 ? `0${ss}` : ss}`);
1053        }
1054
1055        const data = {
1056            ID_RECEBER: id_receber || 0,
1057            ACTION: 'getStatusPix',
1058        };
1059
1060        $.ajax({
1061            url: `${__SERVER__}/model/faturas/faturas.php`,
1062            async: true,
1063            type: 'GET',
1064            data,
1065            timeout: 296000,
1066        }).done((data) => {
1067            try {
1068                data = JSON.parse(data);
1069
1070                if (data.type === 'success') {
1071                    const imgQrCode = document.getElementById('imgQrCode');
1072                    const qrCodePix = document.getElementById('qrCodePix');
1073                    const pixCopiaECola = document.getElementById('qrCodePixCopiaECola');
1074                    pixCopiaECola.style.display = 'none';
1075                    qrCodePix.removeChild(imgQrCode);
1076
1077                    qrCodePix.innerHTML = '<svg id="payedPix" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 130.2 130.2" style="max-height: 200px">\n'
1078                        + '  <circle class="path circle" fill="none" stroke="#77B6A8" stroke-width="6" stroke-miterlimit="10" cx="65.1" cy="65.1" r="62.1"/>\n'
1079                        + '  <polyline class="path check" fill="none" stroke="#77B6A8" stroke-width="6" stroke-linecap="round" stroke-miterlimit="10" points="100.2,40.2 51.5,88.8 29.8,67.5 "/>\n'
1080                        + '</svg><br><br>'
1081                        + '<p class="success" style="color: #77B6A8; text-align: center; font-size: 1.25em;">Seu pagamento foi confirmado!</p>';
1082                } else {
1083                    const pixFooter = document.getElementById('pixFooter');
1084                    const pixCopiaECola = document.getElementById('qrCodePixCopiaECola');
1085                    const qrCodePix = document.getElementById('qrCodePix');
1086                    const imgQrCode = document.getElementById('imgQrCode');
1087                    pixFooter.style.display = 'none';
1088                    imgQrCode.style.display = 'none';
1089                    pixCopiaECola.style.display = 'none';
1090                    qrCodePix.style.textAlign = 'center';
1091                    qrCodePix.innerHTML = `${'<img src="data:image/png;base64,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"/>'
1092                        + '</center><p>'}${data.mensagem}</p>`;
1093                    criar_toast('5000', 'Erro!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1094                }
1095            } catch (e) {
1096
1097            }
1098        }).fail(() => {
1099            const pixFooter = document.getElementById('pixFooter');
1100            const pixCopiaECola = document.getElementById('qrCodePixCopiaECola');
1101            const qrCodePix = document.getElementById('qrCodePix');
1102            const imgQrCode = document.getElementById('imgQrCode');
1103            pixFooter.style.display = 'none';
1104            imgQrCode.style.display = 'none';
1105            pixCopiaECola.style.display = 'none';
1106            qrCodePix.style.textAlign = 'center';
1107            qrCodePix.innerHTML = '<img src="data:image/png;base64,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"/>'
1108                + '</center><p>Tempo para leitura do QrCode expirado. Por favor recarregue a página!</p>';
1109            criar_toast('5000', 'Erro!', 'Tempo para leitura do QrCode expirado. Por favor recarregue a página!', 'fas fa-exclamation-circle', 'red', 'id_erro');
1110        });
1111    }
1112
1113    imprimirQuitacaoDebitos(ano_selecionado) {
1114        this.restoreModalVariavel();
1115
1116        const data = {
1117            APP: app.cordova_app ? 'S' : 'N',
1118            ACTION: 'getQuitacaoDebito',
1119            ANO_CONTRATO: ano_selecionado,
1120        };
1121
1122        const criar_toast = this.criarToast;
1123        app.loading_modal = true;
1124
1125        try {
1126            if (data.APP === 'S') {
1127                app.loading = true;
1128
1129                $.get(`${__SERVER__}/model/faturas/faturas.php`, { APP: 'N', ACTION: 'getQuitacaoDebito' }, (data) => {
1130                    try {
1131                        data = JSON.parse(data);
1132                    } catch (e) {
1133                        data = data;
1134                    }
1135                    if (data[0].tipo === 'sucesso') {
1136                        if (__REACT_NATIVE__) {
1137                            window.ReactNativeWebView.postMessage(JSON.stringify({
1138                                type: 'download',
1139                                url: encodeURI(`${__SERVER__}/model/faturas/faturas.php?APP=S&ACTION=getQuitacaoDebito&ANO_CONTRATO=${ano_selecionado}`),
1140                                sessao: $.cookie('sessao'),
1141                            }));
1142                        } else {
1143                            const fileTransfer = new FileTransfer();
1144                            const fileURL = `${cordova.file.dataDirectory}quitacao_debito.pdf`;
1145                            const uri = `${__SERVER__}/model/faturas/faturas.php?APP=S&ACTION=getQuitacaoDebito&ANO_CONTRATO=${ano_selecionado}`;
1146
1147                            fileTransfer.download(uri, fileURL,
1148                                (entry) => {
1149                                    cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
1150                                        error(e) {
1151                                            app.loading = false;
1152                                            alert('Instale um leitor de arquivo .pdf!');
1153                                        },
1154                                        success(e) {
1155                                            app.loading = false;
1156                                        },
1157                                    });
1158                                },
1159                                (e) => {
1160                                    app.loading = false;
1161                                    alert('Erro ao baixar arquivo!');
1162                                }, false, {});
1163                        }
1164                    } else {
1165                        app.loading = false;
1166                        return criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1167                    }
1168                }).fail((e) => {
1169                    app.modal_url = '';
1170                    app.loading = false;
1171                    app.loading_modal = false;
1172                    return criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1173                });
1174            } else {
1175                $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1176                    if (typeof window.ReactNativeWebView !== 'undefined') {
1177                        data = JSON.parse(data);
1178                        $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
1179                        $('#modalImpressaoClose').click();
1180                        postMessageMobile('base64', JSON.stringify({
1181                            base: data[0].mensagem.base_pdf,
1182                            nome: btoa(`${Math.floor(Math.random() * 9999) + 1000}arquivo.pdf`),
1183                        })).then(
1184                            (retorno) => {
1185                                $('#btn_imprimir_fat_').attr('disabled', false);
1186                                if (JSON.parse(retorno.data).retorno == 'success') {
1187                                    criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
1188                                } else {
1189                                    return criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1190                                }
1191                            },
1192                        );
1193                    } else {
1194                        if (data != '<strong>TCPDF ERROR: </strong>[Image] Unable to get the size of the image: /var/www/includes/../') {
1195                            data = JSON.parse(data);
1196                        }
1197
1198                        app.loading_modal = false;
1199                        if (data[0].tipo == 'sucesso') {
1200                            if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i)) {
1201                                const link = document.createElement('a');
1202                                link.href = `data:application/octet-stream;base64,${data[0].mensagem.base_pdf}`;
1203                                link.download = 'QuitacaoDebito.pdf';
1204                                link.click();
1205                                $('#modalImpressaoClose').click();
1206                            } else {
1207                                return app.modal_url = data[0].mensagem.base_pdf;
1208                            }
1209                        } else {
1210                            return criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
1211                        }
1212                    }
1213                }).fail((e) => {
1214                    app.modal_url = '';
1215                    app.modal_nome = '';
1216                    app.loading_modal = false;
1217                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1218                });
1219            }
1220        } catch (e) {
1221            return `Exception Class HotsiteWeb -> imprimirQuitacaoDebitos() -> ${e}`;
1222        }
1223    }
1224
1225    instanciarCartao() {
1226        new Card({
1227            form: document.querySelector('.form-pagamento'),
1228            container: '.card-wrapper',
1229            placeholders: {
1230                number: '•••• •••• •••• ••••',
1231                name: 'Nome completo',
1232                expiry: '••/••••',
1233                cvc: '•••',
1234            },
1235        });
1236    }
1237
1238    ativarRecorrenciaVindi(id_contrato, numero_cartao, mes, ano, dv, cartaoNome, bandeira) {
1239        const criar_toast = this.criarToast;
1240
1241        const data = {
1242            ID_CONTRATO: id_contrato || 0,
1243            NUMERO_CARTAO: numero_cartao || 0,
1244            MES: mes || 0,
1245            ANO: ano || 0,
1246            DV: dv || 0,
1247            BANDEIRA: bandeira || '',
1248            CARTAO_NOME: cartaoNome || '',
1249            ACTION: 'ativarRecorrenciaVindi',
1250        };
1251
1252        try {
1253            $.post(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1254                try {
1255                    data = JSON.parse(data);
1256                } catch (e) {
1257                    data = data;
1258                }
1259                const response = data[0];
1260                if (response.tipo === 'sucesso') {
1261                    criar_toast(10000, 'Sucesso!', response.mensagem, 'fas fa-check', 'green', 'id_sucesso', true);
1262                    setTimeout("location.href = '/central_assinante_web/planos';", 3000);
1263                } else {
1264                    const { mensagem } = response;
1265                    criar_toast(3000, 'Ops!', mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1266                }
1267                console.log(data);
1268                app.loading = false;
1269            }).fail((e) => {
1270                criar_toast('3000', 'Erro!', 'Ocorreu um erro no servidor. Por favor entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1271                setTimeout("location.href = '/central_assinante_web/planos';", 3000);
1272            });
1273            function noBack() { window.history.forward(); }
1274            noBack();
1275            window.onload = noBack;
1276            window.onpageshow = function (evt) { if (evt.persisted)noBack(); };
1277            window.onunload = function () { void (0); };
1278        } catch (e) {
1279            return `Exception Class HotsiteWeb -> ativarRecorrenciaVindi() -> ${e}`;
1280        }
1281    }
1282
1283    pagarFatura(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, creditcardGateway, gerenciaIdentificadorConta, paymentToken = '', dataEnvioRequisicao = '', captchaValidationHash = '') {
1284        const GATEWAYS_DE_CARTAO_INTERMEDIDADORES = ['GN', 'GP'];
1285
1286        const hs_web = new HotsiteWeb();
1287        const criar_toast = this.criarToast;
1288
1289        if (paymentToken == '') {
1290            if (creditcardGateway == 'GN') {
1291                this.gerarPaymentTokenGerenciaNetCardEPagar(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, gerenciaIdentificadorConta, captchaValidationHash);
1292                return;
1293            } else if (creditcardGateway == 'IG') {
1294                this.generateIuguPaymentToken(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome,creditCardAmbiente,gerenciaIdentificadorConta, captchaValidationHash);
1295                return;
1296            }
1297        }
1298        const data = {
1299            ID_RECEBER: id_receber || 0,
1300            PARCELAMENTO: parcelas || 0,
1301            NUMERO_CARTAO: numero_cartao || 0,
1302            MES: mes || 0,
1303            ANO: ano || 0,
1304            BANDEIRA: bandeira || '',
1305            DV: dv || 0,
1306            RECORRENTE: recorrente || 0,
1307            CARTAO_NOME: cartaoNome || '',
1308            PAYMENT_TOKEN: paymentToken,
1309            DATA_ENVIO_REQUISICAO: dataEnvioRequisicao,
1310            ACTION: 'setPagamentoCartao',
1311            CAPTCHA_VALIDATION_HASH: captchaValidationHash,
1312        };
1313
1314        try {
1315            $.post(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1316                try {
1317                    data = JSON.parse(data);
1318                } catch (e) {
1319                    data = data;
1320                }
1321
1322                if (data != '' && data != undefined) {
1323                    hs_web.esconderToast('processandoPagamento');
1324                    const message = data[0];
1325                    if (message.tipo == 'sucesso') {
1326                        if (GATEWAYS_DE_CARTAO_INTERMEDIDADORES.includes(creditcardGateway)) {
1327                            criar_toast(
1328                                10000,
1329                                message?.title ?? 'Sucesso!',
1330                                message.mensagem,
1331                                message?.icon ?? 'fas fa-check',
1332                                message?.color ?? 'blue',
1333                                'id_sucesso',
1334                                true,
1335                            );
1336                        } else {
1337                            criar_toast(3000, 'Sucesso!', 'Transação finalizada! Aguardando confirmação do pagamento. Isso poderá levar algumas horas. Por favor, aguarde',
1338                                'fas fa-check', 'green', 'id_sucesso', true);
1339                            hs_web.criarToastComprovante(id_receber, recorrente);
1340                        }
1341                        router.replace({ path: '/central_assinante_web/faturas' });
1342                    } else if (message.tipo == 'erro_tentativa_pagamento') {
1343                        hs_web.esconderToast('processandoPagamento');
1344                        hs_web.encerrarSessaoHotsite();
1345
1346                        alert(
1347                            'Limite de tentativas excedido.\n'
1348                            + 'Por motivos de segurança, o limite máximo de tentativas de pagamento foi atingido. É necessário realizar o login novamente para continuar o processo de pagamento.',
1349                        );
1350
1351                        window.location.reload();
1352                    } else {
1353                        const { gateway } = data[0];
1354                        const { errorCode, showErrors } = data[0];
1355                        let message;
1356
1357                        const creditCardException = new CreditCardsExceptions();
1358
1359                        if (gateway === 'C3' || gateway === 'YA') {
1360                            message = creditCardException.getMessageException(gateway, errorCode, bandeira);
1361                        } else if (errorCode && (creditCardException.showMessageException(gateway, errorCode) || showErrors)) {
1362                            message = data[0].mensagem;
1363                        }
1364
1365                        if (!message) {
1366                            message = 'Erro ao realizar pagamento. Por favor, verifique as informações fornecidas para o pagamento e tente novamente.';
1367                        }
1368
1369                        criar_toast(3000, 'Ops!', message, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1370                    }
1371                }
1372                app.loading = false;
1373            }).fail((e) => {
1374                hs_web.esconderToast('processandoPagamento');
1375                criar_toast('3000', 'Erro!', 'Ocorreu um erro no servidor. Por favor entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1376                setTimeout("location.href = '/central_assinante_web/faturas';", 3000);
1377            });
1378            function noBack() { window.history.forward(); }
1379            noBack();
1380            window.onload = noBack;
1381            window.onpageshow = function (evt) { if (evt.persisted)noBack(); };
1382            window.onunload = function () { void (0); };
1383        } catch (e) {
1384            return `Exception Class HotsiteWeb -> pagarFatura() -> ${e}`;
1385        }
1386    }
1387
1388    generateIuguPaymentToken(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome,creditCardAmbiente,gerenciaIdentificadorConta, captchaValidationHash = '') {
1389        Iugu.setAccountID(gerenciaIdentificadorConta);
1390        Iugu.setTestMode(creditCardAmbiente === 'T');
1391
1392        const [firstName, lastName] = cartaoNome ? Iugu.utils.getFirstLastNameByFullName(cartaoNome) : ['', ''];
1393        const cardNumber = numero_cartao.replaceAll(/\D/g, '');
1394
1395        const hs_web = new HotsiteWeb();
1396        const criar_toast = this.criarToast;
1397
1398        if (!this.invalidIuguCardDetails(cardNumber, dv, bandeira, mes, ano, firstName, lastName)) {
1399            const creditCard = Iugu.CreditCard(cardNumber, mes, ano, firstName, lastName, dv);
1400
1401            Iugu.createPaymentToken(creditCard, function(response) {
1402                if (!response.errors) {
1403                    const now = new Date();
1404                    const data = now.getFullYear()+'-'+(now.getMonth()+1).toString().padStart(2, '0')+'-'+now.getDate().toString().padStart(2, '0')+' '+now.getHours()+':'+now.getMinutes().toString().padStart(2, '0')+':'+now.getSeconds().toString().padStart(2, '0');
1405                    hs_web.pagarFatura(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente,'IG',gerenciaIdentificadorConta,response.id, data, captchaValidationHash);
1406                } else {
1407                    const message = 'Erro ao realizar pagamento. Por favor, verifique as informações fornecidas para o pagamento e tente novamente.';
1408                    criar_toast(3000, 'Ops!', message, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1409                    app.loading=false;
1410                }
1411            });
1412        }
1413    }
1414
1415    invalidIuguCardDetails(cardNumber, dv, bandeira, mes, ano, firstName, lastName) {
1416        let invalidFields = [];
1417        let requiredFields = [];
1418
1419        if (!cardNumber) {
1420            requiredFields.push('Número do cartão');
1421        } else if (!Iugu.utils.validateCreditCardNumber(cardNumber)) {
1422            invalidFields.push('Número do cartão');
1423        }
1424        if (!firstName && !lastName) {
1425            requiredFields.push('Nome impresso no cartão');
1426        } else if (!Iugu.utils.validateFirstName(firstName) || !Iugu.utils.validateLastName(lastName)) {
1427            invalidFields.push('Nome impresso no cartão');
1428        }
1429        if (!mes && !ano) {
1430            requiredFields.push('Data de validade');
1431        } else if (!Iugu.utils.validateExpiration(mes, ano)) {
1432            invalidFields.push('Data de validade');
1433        }
1434        if (!dv) {
1435            requiredFields.push('Código de segurança');
1436        } else if (!Iugu.utils.validateCVV(dv, bandeira)) {
1437            invalidFields.push('Código de segurança');
1438        }
1439
1440        return this.handleInvalidIuguCard(invalidFields, requiredFields);
1441    }
1442
1443    handleInvalidIuguCard(invalidFields, requiredFields) {
1444        let message = '';
1445        let timeout = 3000;
1446
1447        if (requiredFields.length > 1) {
1448            timeout = 5000;
1449            const fields = requiredFields.join('", "');
1450            message = 'Notamos que os campos "' + fields + '" continuam vazios, preencha-os para prosseguir.';
1451        } else if (requiredFields.length === 1) {
1452            message = 'Quase pronto! Apenas o campo "' + requiredFields[0] + '" faltou ser preenchido. Preencha para continuar.';
1453        } else if (invalidFields.length > 1) {
1454            timeout = 5000;
1455            const fields = invalidFields.join('", "');
1456            message = 'As informações inseridas nos campos "' + fields + '", estão inválidas. Verifique e tente novamente.';
1457        } else if (invalidFields.length === 1) {
1458            message = 'A informação inserida no campo "' + invalidFields[0] + '", está inválida. Verifique e tente novamente.';
1459        }
1460
1461        if (message) {
1462            this.criarToast(timeout, 'Ops!', message, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1463            app.loading = false;
1464            return true;
1465        }
1466
1467        return false;
1468    }
1469
1470    gerarPaymentTokenGerenciaNetCardEPagar(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, gerenciaIdentificadorConta, captchaValidationHash = '') {
1471        const urlBase = creditCardAmbiente == 'T' ? 'https://sandbox.gerencianet.com.br/v1/cdn/' : 'https://api.gerencianet.com.br/v1/cdn/';
1472        const s = document.createElement('script');
1473        s.type = 'text/javascript';
1474        const v = parseInt(Math.random() * 1000000);
1475        s.src = `${urlBase + gerenciaIdentificadorConta}/${v}`;
1476        s.async = false;
1477        s.id = gerenciaIdentificadorConta;
1478        if (!document.getElementById(gerenciaIdentificadorConta)) {
1479            document.getElementsByTagName('head')[0].appendChild(s);
1480        }
1481        top.$gn = {
1482            validForm: true,
1483            processed: false,
1484            done: {},
1485            ready(fn) {
1486                $gn.done = fn;
1487            },
1488        };
1489        $gn.ready((checkout) => {
1490            top.checkout = checkout;
1491            this.gerarPaymentTokenGerenciaNet(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, 'GN', gerenciaIdentificadorConta, captchaValidationHash);
1492        });
1493
1494        if (typeof top.checkout !== 'undefined') {
1495            this.gerarPaymentTokenGerenciaNet(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, 'GN', gerenciaIdentificadorConta, captchaValidationHash);
1496        }
1497    }
1498
1499    gerarPaymentTokenGerenciaNet(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, creditcardGateway, gerenciaIdentificadorConta, captchaValidationHash = '') {
1500        const criar_toast = this.criarToast;
1501        const hs_web = new HotsiteWeb();
1502        const callback = (error, response) => {
1503            if (error) {
1504                criar_toast(3000, 'Ops!', this.getErrorMessageGerencianetCard(error), 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1505                app.loading = false;
1506            } else {
1507                const now = new Date();
1508                const data = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')} ${now.getHours()}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;
1509                hs_web.pagarFatura(id_receber, parcelas, numero_cartao, mes, ano, bandeira, dv, recorrente, cartaoNome, creditCardAmbiente, creditcardGateway, gerenciaIdentificadorConta, response.data.payment_token, data, captchaValidationHash);
1510            }
1511        };
1512
1513        top.checkout.getPaymentToken({
1514            brand: bandeira,
1515            number: numero_cartao.replace(/\D/g, ''),
1516            cvv: dv,
1517            expiration_month: mes,
1518            expiration_year: ano,
1519            reuse: recorrente,
1520        }, callback);
1521    }
1522
1523    getErrorMessageGerencianetCard(error) {
1524        const invalidParameters = {
1525            invalid_brand: 'A bandeira do cartão informada é inválida. As opções válidas são: Visa, Mastercard, Amex, Diners, Elo ou Hipercard',
1526            invalid_card_number: 'O número do cartão informado é inválido',
1527            invalid_expiration_month: 'A data de validade informada é inválida',
1528        }
1529
1530        const invalidProperties = {
1531            cvv: 'O Código de segurança informado é inválido',
1532            expiration_year: 'A data de validade informada é inválida',
1533        }
1534
1535        if (invalidParameters[error.error]) {
1536            return invalidParameters[error.error];
1537        } else if (error.error === 'invalid_data' && invalidProperties[error.error_description?.property]) {
1538            return invalidProperties[error.error_description.property];
1539        }
1540
1541        return error.error_description?.message ?? error.error_description;
1542    }
1543
1544    comprovantePagamento(id_receber, acao) {
1545        const data = {
1546            ID_RECEBER: id_receber || 0,
1547            ACAO: acao,
1548            APP: app.cordova_app ? 'S' : 'N',
1549            ACTION: 'getImprinmirComprovanteCartao',
1550        };
1551
1552        const hs_web = new HotsiteWeb();
1553
1554        try {
1555            if (data.APP === 'S' && acao == 'N') {
1556                app.loading = true;
1557
1558                const fileTransfer = new FileTransfer();
1559                const fileURL = `${cordova.file.dataDirectory}comprovante.pdf`;
1560                const uri = `${__SERVER__}/model/faturas/faturas.php?ID_RECEBER=${data.ID_RECEBER}&ACAO=${data.ACAO}&APP=${data.APP}&ACTION=${data.ACTION}`;
1561
1562                fileTransfer.download(uri, fileURL,
1563                    (entry) => {
1564                        cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
1565                            error(e) {
1566                                app.loading = false;
1567                                alert('Instale um leitor de arquivo .pdf!');
1568                            },
1569                            success(e) {
1570                                app.loading = false;
1571                            },
1572                        });
1573                    },
1574                    (e) => {
1575                        app.loading = false;
1576                        alert('Erro ao baixar arquivo!');
1577                    }, false, {});
1578            } else {
1579                $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1580                    try {
1581                        data = JSON.parse(data);
1582                    } catch (e) {
1583                        data = data;
1584                    }
1585
1586                    if (data != '' && data != undefined) {
1587                        if (data.tipo == 'sucesso') {
1588                            if (typeof (data.mensagem) === 'object' && typeof window.ReactNativeWebView === 'undefined') {
1589                                app.modal_nome = `Comprovante - Fatura ${id_receber}`;
1590                                app.modal_url = data.mensagem.base_pdf;
1591                                app.loading_modal = false;
1592
1593                                return $('#modalImpressao').modal('toggle');
1594                            }
1595                            postMessageMobile('base64', JSON.stringify({
1596                                base: data.mensagem.base_pdf,
1597                                nome: btoa(`${Math.floor(Math.random() * 9999) + 1000}comprovante.pdf`),
1598                            })).then(
1599                                (retorno) => {
1600                                    if (JSON.parse(retorno.data).retorno == 'success') {
1601                                        criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
1602                                    } else {
1603                                        criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
1604                                    }
1605                                },
1606                            );
1607
1608                            return hs_web.criarToast('2000', 'Sucesso!', data.mensagem, 'fas fa-check', 'green', 'id_sucesso');
1609                        }
1610                        return hs_web.criarToast(5000, 'Ops!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1611                    }
1612                }).fail((e) => hs_web.criarToast(5000, 'Ops!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', false));
1613            }
1614        } catch (e) {
1615            hs_web.criarToast(5000, 'Ops!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
1616            return `Exception Class HotsiteWeb -> pagarFatura() -> ${e}`;
1617        }
1618    }
1619
1620    recorrenciaVindi() {
1621        $(document).ready(() => {
1622            const hs_web = new HotsiteWeb();
1623
1624            app.loading = false;
1625            router.history.current.matched[0].instances.default.loading = false;
1626            validaActiveClass('#pg_plano');
1627            hs_web.setarPermissaoFaturas();
1628            hs_web.instanciarCartao();
1629
1630            this.loadCaptcha();
1631        });
1632    }
1633
1634    buscarParcelas(id_receber) {
1635        const data = {
1636            ACTION: 'getParcelas',
1637            ID_RECEBER: id_receber || 0,
1638        };
1639
1640        const criar_toast = this.criarToast;
1641
1642        try {
1643            $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1644                data = JSON.parse(data);
1645                if (data != '' && data != undefined) {
1646                    if (data[0].tipo == 'sucesso') {
1647                        router.history.current.matched[0].instances.default.cartao_parcelas = data[0].mensagem.parcelas;
1648                        router.history.current.matched[0].instances.default.permite_recorrencia = !!data[0].mensagem.recorrente.permite_recorrencia;
1649                        router.history.current.matched[0].instances.default.contrato_recorrente = !!data[0].mensagem.recorrente.existe_token;
1650
1651                        router.history.current.matched[0].instances.default.recorrente = !!data[0].mensagem.recorrente.existe_token;
1652                        router.history.current.matched[0].instances.default.credit_card_gateway = data[0].mensagem.gateway;
1653
1654                        if (data[0].mensagem.recorrente.existe_token) {
1655                            criar_toast('5000', 'Informativo!', 'Esta fatura já possui pagamento programado como recorrente!', 'fas fa-exclamation-circle', 'yellow', 'id_erro');
1656                        }
1657                    } else if (!data[0].tipo == 'erro') {
1658                        criar_toast('4000', 'Ops!', 'Houve algum problema ao tentar gerar as parcelas. Entre em contato conosco.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1659                    }
1660
1661                    $(document).ready(() => {
1662                        const hs_web = new HotsiteWeb();
1663
1664                        app.loading = false;
1665                        router.history.current.matched[0].instances.default.loading = false;
1666                        validaActiveClass('#pg_fatura');
1667                        hs_web.setarPermissaoFaturas();
1668                        hs_web.instanciarCartao();
1669
1670                        this.loadCaptcha();
1671                    });
1672                }
1673            }).fail((e) => {
1674                router.history.current.matched[0].instances.default.cartao_parcelas = [];
1675                $(document).ready(() => {
1676                    app.loading = false;
1677                    router.history.current.matched[0].instances.default.loading = false;
1678                    validaActiveClass('#pg_fatura');
1679                });
1680                criar_toast('5000', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1681            });
1682        } catch (e) {
1683            return `Exception Method buscarParcelas() -> ${e}`;
1684        }
1685    }
1686
1687    loadCaptcha() {
1688        const refreshCaptcha = this.refreshCaptchaImage;
1689
1690        const captchaRequestData = {
1691            length: 7,
1692            height: 40,
1693            width: 200,
1694        };
1695
1696        const xhttp = new XMLHttpRequest();
1697
1698        xhttp.onreadystatechange = function () {
1699            if (this.readyState === 4 && this.status === 200) {
1700                const img = document.createElement('img');
1701                const response = JSON.parse(xhttp.responseText);
1702                img.id = 'captchaPaymentImage';
1703                img.src = `data:image/png;base64,${response.data.captchaImageBase64}`;
1704                img.style.width = captchaRequestData.width;
1705                img.style.height = captchaRequestData.height;
1706                img.addEventListener('click', (event) => {
1707                    refreshCaptcha(event.srcElement.id);
1708                });
1709                document.getElementById('rowCaptcha').prepend(img);
1710                document.getElementById('captchaKey').value = response.data.cacheKey;
1711            }
1712        };
1713
1714        xhttp.open('GET', '/api-module/auth/generate-captcha-image?length=7&height=40&width=200', true);
1715        xhttp.send();
1716    }
1717
1718    refreshCaptchaImage(imageElementId) {
1719        const xhttp = new XMLHttpRequest();
1720        xhttp.onreadystatechange = function () {
1721            if (this.readyState === 4 && this.status === 200) {
1722                const img = document.getElementById(imageElementId);
1723                const response = JSON.parse(xhttp.responseText);
1724                img.src = `data:image/png;base64,${response.data.captchaImageBase64}`;
1725                document.getElementById('captchaKey').value = response.data.cacheKey;
1726            }
1727        };
1728        xhttp.open('GET', '/api-module/auth/generate-captcha-image?length=7&height=40&width=200', true);
1729        xhttp.send();
1730    }
1731
1732    buscarCarteirasFatura() {
1733        const data = {
1734            ACTION: 'getCarteirasFatura',
1735        };
1736        const criar_toast = this.criarToast;
1737
1738        try {
1739            $.get(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
1740                data = JSON.parse(data);
1741                if (data.utiliza_fatura && data.carteiras.length == 0) {
1742                    criar_toast('5000', 'Ops!', 'Não existe nenhuma carteira configurada para aparecer na central, entre em contato com o suporte', 'fas fa-exclamation-circle', 'red', 'id_erro');
1743                } else if (data != '' && data != undefined) {
1744                    $(document).ready(() => {
1745                        app.loading = false;
1746                        router.history.current.matched[0].instances.default.loading = false;
1747                        app.carteiras_faturas = data.carteiras;
1748                    });
1749                }
1750            }).fail((e) => {
1751                router.history.current.matched[0].instances.default.cartao_parcelas = [];
1752                $(document).ready(() => {
1753                    app.loading = false;
1754                    router.history.current.matched[0].instances.default.loading = false;
1755                    validaActiveClass('#pg_fatura');
1756                });
1757                criar_toast('5000', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1758            });
1759        } catch (e) {
1760            return `Exception Method buscarParcelas() -> ${e}`;
1761        }
1762    }
1763
1764    /**
1765     * Notas
1766     */
1767    buscarNotas(slice) {
1768        const data = {
1769            SLICE: slice || this.slice,
1770            ACTION: 'getNotas',
1771        };
1772
1773        const criar_toast = this.criarToast;
1774        const valida_resize_notas = this.validaResizeNotas;
1775
1776        try {
1777            $.get(`${__SERVER__}/model/notas/notas.php`, data, (data) => {
1778                try {
1779                    data = JSON.parse(data);
1780                } catch (e) {
1781                    data = data;
1782                }
1783
1784                data.total_registros = data.slice(-1)[0].total_registros;
1785
1786                if (data) {
1787                    router.history.current.matched[0].instances.default.notas = data;
1788                    valida_resize_notas();
1789
1790                    router.history.current.matched[0].instances.default.is_safari = IS_SAFARI;
1791                    router.history.current.matched[0].instances.default.mostrar_cinco_notas = data.total_registros <= SLICE_NOTA;
1792                    router.history.current.matched[0].instances.default.carregar_mais_
1792notas = !router.history.current.matched[0].instances.default.mostrar_cinco_notas;
1793
1794                    $(document).ready(() => {
1795                        app.loading = false;
1796                        router.history.current.matched[0].instances.default.loading = false;
1797                        validaActiveClass('#pg_nota');
1798                    });
1799
1800                    return;
1801                }
1802
1803                $(document).ready(() => {
1804                    app.loading = false;
1805                    router.history.current.matched[0].instances.default.loading = false;
1806                    validaActiveClass('#pg_nota');
1807                });
1808
1809                router.history.current.matched[0].instances.default.notas = [];
1810            }).fail((e) => {
1811                router.history.current.matched[0].instances.default.notas = [];
1812                router.history.current.matched[0].instances.default.mostrar_cinco_notas = false;
1813                $(document).ready(() => {
1814                    app.loading = false;
1815                    router.history.current.matched[0].instances.default.loading = false;
1816                    validaActiveClass('#pg_nota');
1817                });
1818                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1819            });
1820        } catch (e) {
1821            return `Exception Class HotsiteWeb -> buscarNotas() -> ${e}`;
1822        }
1823    }
1824
1825    imprimirNota(id_saida) {
1826        this.restoreModalVariavel();
1827
1828        const data = {
1829            ID_SAIDA: id_saida || 0,
1830            APP: app.cordova_app ? 'S' : 'N',
1831            ACTION: 'getImprimirNota',
1832        };
1833
1834        const criar_toast = this.criarToast;
1835        app.loading_modal = true;
1836
1837        try {
1838            if (data.APP === 'S') {
1839                app.loading = true;
1840
1841                const fileTransfer = new FileTransfer();
1842                const fileURL = `${cordova.file.dataDirectory}notas.pdf`;
1843                const uri = `${__SERVER__}/model/notas/notas.php?ID_SAIDA=${data.ID_SAIDA}&APP=${data.APP}&ACTION=${data.ACTION}`;
1844
1845                fileTransfer.download(uri, fileURL,
1846                    (entry) => {
1847                        cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
1848                            error(e) {
1849                                app.loading = false;
1850                                alert('Instale um leitor de arquivo .pdf!');
1851                            },
1852                            success(e) {
1853                                app.loading = false;
1854                            },
1855                        });
1856                    },
1857                    (e) => {
1858                        app.loading = false;
1859                        alert('Erro ao baixar arquivo!');
1860                    }, false, {});
1861            } else {
1862                $.get(`${__SERVER__}/model/notas/notas.php`, data, (data) => {
1863                    if (typeof window.ReactNativeWebView !== 'undefined') {
1864                        data = JSON.parse(data);
1865                        $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
1866                        document.getElementById('modalImpressaoClose').click();
1867                        postMessageMobile('base64', JSON.stringify({
1868                            base: data[0].mensagem.base_pdf,
1869                            nome: btoa((Math.floor(Math.random() * 9999) + 1000)) + data[1],
1870                        })).then(
1871                            (retorno) => {
1872                                $('#btn_imprimir_fat_').attr('disabled', false);
1873                                if (JSON.parse(retorno.data).retorno == 'success') {
1874                                    criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
1875                                } else {
1876                                    criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
1877                                }
1878                            },
1879                        );
1880                    } else {
1881                        if (data != '<strong>TCPDF ERROR: </strong>[Image] Unable to get the size of the image: /var/www/includes/nfe/images/logo.jpg') {
1882                            data = JSON.parse(data);
1883                        }
1884
1885                        if (data[2] == 'true') {
1886                            const xmlHttp = new XMLHttpRequest();
1887                            xmlHttp.open('GET', `${__SERVER__}/model/notas/notas.php?APP=N&ACTION=retornarArquivo&CAMINHO=${data[1]}`, true);
1888                            xmlHttp.responseType = 'blob';
1889                            xmlHttp.onreadystatechange = function (e) {
1890                                if (xmlHttp.readyState === 4 && (xmlHttp.status === 200 || xmlHttp.status === 0)) {
1891                                    const link = document.createElement('a');
1892                                    link.href = URL.createObjectURL(xmlHttp.response);
1893                                    link.download = 'Nota.pdf';
1894                                    link.click();
1895                                    document.getElementById('modalImpressaoClose').click();
1896                                }
1897                            };
1898                            xmlHttp.send();
1899                        }
1900
1901                        app.loading_modal = false;
1902                        if (data != '' && data != undefined && !navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i)) {
1903                            if (data[0].tipo == 'sucesso') {
1904                                return app.modal_url = data[0].mensagem.base_pdf;
1905                            }
1906                            criar_toast('2000', 'Erro!', 'Ocorreu um erro ao imprimir a nota.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1907                        }
1908                    }
1909                }).fail((e) => {
1910                    app.modal_url = '';
1911                    app.loading_modal = false;
1912                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
1913                });
1914            }
1915        } catch (e) {
1916            return `Exception Class HotsiteWeb -> imprimirNota() -> ${e}`;
1917        }
1918    }
1919
1920    /**
1921     * Contratos
1922     */
1923    buscarPlanos(slice, home, criar_toast_pendencia, pg_planos, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function) {
1924        const data = {
1925            SLICE: slice || this.slice,
1926            HOME: home || false,
1927            ACTION: 'getPlanos',
1928        };
1929
1930        var criar_toast_pendencia = criar_toast_pendencia || this.criarToastPendencia;
1931        var valida_resize_home = valida_resize_home || this.validaResizeHome;
1932        var valida_resize_planos = valida_resize_planos || this.validaResizePlanos;
1933        var valida_loading_function = valida_loading_function || this.validaLoading;
1934
1935        try {
1936            $.get(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
1937                try {
1938                    data = JSON.parse(data);
1939                } catch (e) {
1940                    data = data;
1941                }
1942
1943                if (data != '' && data != undefined) {
1944                    if (data.num_contratos_dash > 0 && app.pg_plano === 'S') {
1945                        if (home == true) {
1946                            const contratoSuspenso = data.planos[0].contrato_suspenso;
1947                            const statusVelocidade = data.planos[0].status_velocidade ? data.planos[0].status_velocidade : null;
1948                            const statusInternet = data.planos[0].status_internet ? data.planos[0].status_internet : null;
1949                            const desbloqueioConfianca = data.planos[0].desbloqueio_confianca ? data.planos[0].desbloqueio_confianca : null;
1950
1951                            if (desbloqueioConfianca === 'S' && (statusInternet === 'CA' || statusInternet === 'CM') && contratoSuspenso === 'N') {
1952                                criar_toast_pendencia('12000', 'Opa!', 'Desculpe, sua internet está temporariamente bloqueada pois existem mensalidades em atraso. Para usar a internet novamente, solicite o desbloqueio de confiança ou faça você mesmo pela central do assinante, na parte de contratos. Caso já tenha efetuado o pagamento, entre em contato conosco.', 'receipt', 'red', 'notificacao_planos', 'Ver contrato', 'planos');
1953                            } else if (statusInternet === 'FA' && statusVelocidade === 'R' && contratoSuspenso === 'N') {
1954                                criar_toast_pendencia('12000', 'Opa!', 'Seu contrato está com redução de velocidade devido a pendências financeiras. Por favor regularize sua situação financeira o quanto antes e aproveite a melhor internet!', 'receipt', 'red', 'notificacao_planos', 'Ver contrato', 'planos');
1955                            } else if (contratoSuspenso !== 'S') {
1956                                criar_toast_pendencia('12000', 'Opa!', 'Parece que você tem pendências nos contratos!', 'receipt', 'red', 'notificacao_planos', 'Ver contrato', 'planos');
1957                            }
1958                        }
1959                    }
1960
1961                    data.contratos_dash = data.contratos_dash.filter((contrato) => contrato.data_assinatura === '0000-00-00');
1962                    router.history.current.matched[0].instances.default.planos = data;
1963                    router.history.current.matched[0].instances.default.is_safari = IS_SAFARI;
1964
1965                    if (data.total_registros <= SLICE_PLANO) {
1966                        router.history.current.matched[0].instances.default.mostrar_cinco_planos = true;
1967                    } else {
1968                        router.history.current.matched[0].instances.default.mostrar_cinco_planos = false;
1969                    }
1970
1971                    if (pg_planos) {
1972                        valida_resize_planos();
1973                    } else {
1974                        valida_resize_home();
1975                    }
1976
1977                    $(document).ready(() => {
1978                        if (valida_loading) {
1979                            LOADING_PLANO = false;
1980                            valida_loading_function();
1981                        } else {
1982                            app.loading = false;
1983                            router.history.current.matched[0].instances.default.loading = false;
1984                            validaActiveClass('#pg_plano');
1985                        }
1986                    });
1987                    return;
1988                }
1989
1990                router.history.current.matched[0].instances.default.planos = {
1991                    planos: [],
1992                    pre_contratos: [],
1993                    contratos_dash: [],
1994                    financeiro_atrasado: [],
1995                    ativo_bloqueado: [],
1996                    ativo_bloqueado_desbloqueio_n: [],
1997                    ativo_desbloqueado: [],
1998                    ativo: [],
1999                    outros_status: [],
2000                };
2001
2002                $(document).ready(() => {
2003                    if (valida_loading) {
2004                        LOADING_PLANO = false;
2005                        valida_loading_function();
2006                    } else {
2007                        app.loading = false;
2008                        router.history.current.matched[0].instances.default.loading = false;
2009                        validaActiveClass('#pg_plano');
2010                    }
2011                });
2012            }).fail((e) => {
2013                router.history.current.matched[0].instances.default.planos = [];
2014
2015                $(document).ready(() => {
2016                    if (valida_loading) {
2017                        LOADING_PLANO = false;
2018                        valida_loading_function();
2019                    } else {
2020                        app.loading = false;
2021                        router.history.current.matched[0].instances.default.loading = false;
2022                        validaActiveClass('#pg_plano');
2023                    }
2024                });
2025                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2026            });
2027        } catch (e) {
2028            return `Exception Class HotsiteWeb -> buscarPlanos() -> ${e}`;
2029        }
2030    }
2031
2032    desbloqueioConfianca(id_contrato, valida_loading) {
2033        const data = {
2034            ID_CONTRATO: id_contrato || 0,
2035            ACTION: 'setDesbloqueioConfianca',
2036        };
2037        app.loading = true;
2038        const criar_toast = this.criarToast;
2039        const buscar_planos = this.buscarPlanos;
2040        const valida_resize_home = this.validaResizeHome;
2041        const valida_resize_planos = this.validaResizePlanos;
2042        const valida_loading_function = this.validaLoading;
2043
2044        try {
2045            $.get(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
2046                try {
2047                    data = JSON.parse(data);
2048                } catch (e) {
2049                    data = data;
2050                }
2051
2052                if (data != '' && data != undefined) {
2053                    if (data[0].tipo == 'sucesso') {
2054                        criar_toast('5000', 'Sucesso!', data[0].mensagem, 'fas fa-check', 'green', 'id_sucesso');
2055                    } else {
2056                        criar_toast('2000', 'Erro!', `Ocorreu um erro ao desbloquear o plano :${data[0].mensagem}`, 'fas fa-exclamation-circle', 'red', 'id_erro');
2057                    }
2058
2059                    if (valida_loading) {
2060                        return buscar_planos(2000000000, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2061                    }
2062                    return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2063                }
2064            }).fail((e) => {
2065                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2066
2067                if (valida_loading) {
2068                    return buscar_planos(2000000000, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2069                }
2070                return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2071            });
2072        } catch (e) {
2073            return `Exception Class HotsiteWeb -> desbloqueioConfianca() -> ${e}`;
2074        }
2075    }
2076
2077    liberacaoSuspensaoParcial(id_contrato, valida_loading) {
2078        const data = {
2079            ID_CONTRATO: id_contrato || 0,
2080            ACTION: 'setLiberacaoSuspensaoParcial',
2081        };
2082        app.loading = true;
2083        const criar_toast = this.criarToast;
2084        const buscar_planos = this.buscarPlanos;
2085        const valida_resize_home = this.validaResizeHome;
2086        const valida_resize_planos = this.validaResizePlanos;
2087        const valida_loading_function = this.validaLoading;
2088
2089        try {
2090            $.get(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
2091                try {
2092                    data = JSON.parse(data);
2093                } catch (e) {
2094                    data = data;
2095                }
2096
2097                if (data != '' && data != undefined) {
2098                    if (data[0].type == 'success') {
2099                        criar_toast('5000', 'Sucesso!', data[0].mensagem, 'fas fa-check', 'green', 'id_sucesso');
2100                    } else {
2101                        criar_toast('2000', 'Erro!', `Ocorreu um erro ao liberar o plano :${data[0].mensagem}`, 'fas fa-exclamation-circle', 'red', 'id_erro');
2102                    }
2103
2104                    if (valida_loading) {
2105                        return buscar_planos(2000000000, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2106                    }
2107                    return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2108                }
2109
2110                if (!data.length) {
2111                    criar_toast('2000', 'Erro!', 'Ocorreu um erro ao liberar o plano. Por favor, tente novamente ou entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2112                    app.loading = false;
2113                }
2114            }).fail((e) => {
2115                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2116
2117                if (valida_loading) {
2118                    return buscar_planos(2000000000, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2119                }
2120                return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2121            });
2122        } catch (e) {
2123            return `Exception Class HotsiteWeb -> liberacaoSuspensaoParcial() -> ${e}`;
2124        }
2125    }
2126
2127    salvarAssinatura(id_contrato, assinatura_base, valida_loading) {
2128        const data = {
2129            ID_CONTRATO: id_contrato || 0,
2130            ASSINATURA_BASE: assinatura_base || '',
2131            ACTION: 'setSalvarAssinatura',
2132        };
2133
2134        PAGE_PLANOS = !!valida_loading;
2135        app.loading = true;
2136
2137        const criar_toast = this.criarToast;
2138        const buscar_planos = this.buscarPlanos;
2139        const valida_resize_home = this.validaResizeHome;
2140        const valida_resize_planos = this.validaResizePlanos;
2141        const valida_loading_function = this.validaLoading;
2142
2143        try {
2144            $.post(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
2145                if (data != '<strong>TCPDF ERROR: </strong>Please provide a certificate file and password!') {
2146                    data = JSON.parse(data);
2147                }
2148
2149                if (data != '' && data != undefined) {
2150                    if (data[0].tipo == 'sucesso') {
2151                        app.loading = false;
2152                        criar_toast('4000', 'Sucesso!', 'O contrato foi assinado com sucesso.', 'fas fa-check', 'green', 'id_sucesso');
2153                    } else {
2154                        app.loading = false;
2155                        criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
2156                    }
2157                    if (valida_loading) {
2158                        return buscar_planos(2000000000, false, criar_toast, false, valida_loading, valida_resize_home, valida_resize_planos, val
2158ida_loading_function);
2159                    }
2160                    return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2161                }
2162            }).fail((e) => {
2163                if (valida_loading) {
2164                    return buscar_planos(2000000000, false, criar_toast, false, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2165                }
2166                return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2167
2168                app.loading = false;
2169                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2170            });
2171        } catch (e) {
2172            return `Exception Class HotsiteWeb -> desbloqueioConfianca() -> ${e}`;
2173        }
2174    }
2175
2176    salvarAssinaturaTermo(id_contrato, assinatura_base, valida_loading, id_termo, cliente_contrato_assinatura_termo_id) {
2177        const data = {
2178            ID_CONTRATO: id_contrato || 0,
2179            ASSINATURA_BASE: assinatura_base || '',
2180            ACTION: 'setSalvarAssinaturaTermo',
2181            ID_TERMO: id_termo,
2182            CLIENTE_CONTRATO_ASSINATURA_TERMO_ID: cliente_contrato_assinatura_termo_id,
2183        };
2184
2185        let disparaAjax = false;
2186
2187        PAGE_PLANOS = !!valida_loading;
2188        app.loading = true;
2189
2190        const criar_toast = this.criarToast;
2191        const buscar_planos = this.buscarPlanos;
2192        const valida_resize_home = this.validaResizeHome;
2193        const valida_resize_planos = this.validaResizePlanos;
2194        const valida_loading_function = this.validaLoading;
2195
2196        const assinatura = data.ASSINATURA_BASE;
2197
2198        if (assinatura.length > 1800) {
2199            data.ASSINATURA_BASE = assinatura;
2200            disparaAjax = true;
2201        }
2202
2203        try {
2204            if (disparaAjax) {
2205                $.ajax({
2206                    url: `${__SERVER__}/model/planos/planos.php`,
2207                    type: 'POST',
2208                    data,
2209                }).done((data) => {
2210                    if (data != '<strong>TCPDF ERROR: </strong>Please provide a certificate file and password!') {
2211                        data = JSON.parse(data);
2212                    }
2213
2214                    if (data != '' && data != undefined && data != null) {
2215                        if (data[0].tipo == 'sucesso') {
2216                            app.loading = false;
2217                            router.history.current.matched[0].instances.default.assinatura_termo = false;
2218                            criar_toast('4000', 'Sucesso!', data[0].mensagem, 'fas fa-check', 'green', 'id_sucesso');
2219                        } else {
2220                            app.loading = false;
2221                            criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
2222                        }
2223
2224                        if (valida_loading) {
2225                            return buscar_planos(2000000000, false, criar_toast, false, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2226                        }
2227                        return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2228                    }
2229                }).fail(() => {
2230                    if (valida_loading) {
2231                        return buscar_planos(2000000000, false, criar_toast, false, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2232                    }
2233                    return buscar_planos(SLICE_PLANO, false, criar_toast, true, valida_loading, valida_resize_home, valida_resize_planos, valida_loading_function);
2234
2235                    app.loading = false;
2236                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2237                    $('#btn_enviar_assinatura').prop('disabled', false);
2238                });
2239            }
2240        } catch (e) {
2241            return `Exception --> ${e}`;
2242        }
2243    }
2244
2245    imprimirPlano(id_contrato, id_termo = 0, cliente_contrato_assinatura_termo_id = 0) {
2246        this.restoreModalVariavel();
2247
2248        const data = {
2249            ID_CONTRATO: id_contrato || 0,
2250            APP: app.cordova_app ? 'S' : 'N',
2251            ACTION: 'getImprimirPlano',
2252            ID_TERMO: id_termo || null,
2253            CLIENTE_CONTRATO_ASSINATURA_TERMO_ID: cliente_contrato_assinatura_termo_id || null,
2254        };
2255
2256        const criar_toast = this.criarToast;
2257        app.loading_modal = true;
2258
2259        try {
2260            if (data.APP === 'S') {
2261                app.loading = true;
2262
2263                const fileTransfer = new FileTransfer();
2264                const fileURL = `${cordova.file.dataDirectory}contrato.pdf`;
2265                const uri = `${__SERVER__}/model/planos/planos.php?ID_CONTRATO=${data.ID_CONTRATO}&APP=${data.APP}&ACTION=${data.ACTION}&ID_TERMO=${data.ID_TERMO}&CLIENTE_CONTRATO_ASSINATURA_TERMO_ID=${data.CLIENTE_CONTRATO_ASSINATURA_TERMO_ID}`;
2266
2267                fileTransfer.download(uri, fileURL,
2268                    (entry) => {
2269                        cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
2270                            error(e) {
2271                                app.loading = false;
2272                                alert('Instale um leitor de arquivo .pdf!');
2273                            },
2274                            success(e) {
2275                                app.loading = false;
2276                                // alert('Abriu certo!');
2277                            },
2278                        });
2279                    },
2280                    (e) => {
2281                        app.loading = false;
2282                        alert('Erro ao baixar arquivo!');
2283                    }, false, {});
2284            } else {
2285                $.get(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
2286                    try {
2287                        data = JSON.parse(data);
2288                    } catch (e) {
2289                        data = data;
2290                    }
2291                    if (typeof window.ReactNativeWebView !== 'undefined') {
2292                        $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
2293                        document.getElementById('modalImpressaoClose').click();
2294                        postMessageMobile('base64', JSON.stringify({
2295                            base: data[0].mensagem.base_pdf,
2296                            nome: btoa(`${Math.floor(Math.random() * 9999) + 1000}arquivo.pdf`),
2297                        })).then(
2298                            (retorno) => {
2299                                $('#btn_imprimir_fat_').attr('disabled', false);
2300                                if (JSON.parse(retorno.data).retorno == 'success') {
2301                                    criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
2302                                } else {
2303                                    criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
2304                                }
2305                            },
2306                        );
2307                    } else {
2308                        if (data[2] == 'true') {
2309                            const xmlHttp = new XMLHttpRequest();
2310                            xmlHttp.open('GET', `${__SERVER__}/model/planos/planos.php?APP=N&ACTION=retornarArquivo&CAMINHO=${data[1]}`, true);
2311                            xmlHttp.responseType = 'blob';
2312                            xmlHttp.onreadystatechange = function (e) {
2313                                if (xmlHttp.readyState === 4 && (xmlHttp.status === 200 || xmlHttp.status === 0)) {
2314                                    const link = document.createElement('a');
2315                                    link.href = URL.createObjectURL(xmlHttp.response);
2316                                    link.download = 'ContratoInternet.pdf';
2317                                    link.click();
2318
2319                                    document.getElementById('modalImpressaoClose').click();
2320                                }
2321                            };
2322                            xmlHttp.send();
2323                        }
2324
2325                        if (data != '' && data != undefined) {
2326                            app.loading_modal = false;
2327                            if (data[0].tipo == 'sucesso') {
2328                                if (!navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i)) {
2329                                    return app.modal_url = data[0].mensagem.base_pdf;
2330                                }
2331                            } else {
2332                                criar_toast('2000', 'Erro!', 'Ocorreu um erro ao imprimir o contrato.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2333                            }
2334                        }
2335                    }
2336                }).fail((e) => {
2337                    app.loading_modal = false;
2338                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2339                });
2340            }
2341        } catch (e) {
2342            return `Exception Class HotsiteWeb -> imprimirPlano() -> ${e}`;
2343        }
2344    }
2345
2346    /**
2347     * Consumos
2348     */
2349    buscarConsumos(valida_loading) {
2350        const data = {
2351            ACTION: 'getConsumo',
2352        };
2353
2354        const criar_toast = this.criarToast;
2355        const valida_loading_function = this.validaLoading;
2356
2357        try {
2358            $.get(`${__SERVER__}/model/consumos/consumos.php`, data, (data) => {
2359                try {
2360                    data = JSON.parse(data);
2361                } catch (e) {
2362                    data = data;
2363                }
2364
2365                if (data != '' && data != undefined && !data[0]) {
2366                    router.history.current.matched[0].instances.default.consumos = data;
2367
2368                    if (data.consumo_diario.length && data.consumo_ultimo_mes.length && data.consumo_ultima_semana.length) {
2369                        router.history.current.matched[0].instances.default.selected_diario = data.consumo_diario[0].login;
2370                        router.history.current.matched[0].instances.default.selected_semanal = data.consumo_ultima_semana[0].login;
2371                        router.history.current.matched[0].instances.default.selected_mensal = data.consumo_mensal[0].login;
2372                    }
2373
2374                    $(document).ready(() => {
2375                        if (valida_loading) {
2376                            LOADING_CONSUMO = false;
2377                            valida_loading_function();
2378                        } else {
2379                            app.loading = false;
2380                            router.history.current.matched[0].instances.default.loading = false;
2381                            validaActiveClass('#pg_consumo');
2382                        }
2383                    });
2384
2385                    return;
2386                }
2387
2388                $(document).ready(() => {
2389                    if (valida_loading) {
2390                        LOADING_CONSUMO = false;
2391                        valida_loading_function();
2392                    } else {
2393                        app.loading = false;
2394                        router.history.current.matched[0].instances.default.loading = false;
2395                        validaActiveClass('#pg_consumo');
2396                    }
2397                });
2398
2399                router.history.current.matched[0].instances.default.consumos = {
2400                    consumo_mensal: [],
2401                    consumo_diario: [],
2402                    consumo_ultima_semana: [],
2403                    consumo_ultimo_mes: [],
2404                };
2405            }).fail((e) => {
2406                router.history.current.matched[0].instances.default.consumos = [];
2407                $(document).ready(() => {
2408                    app.loading = false;
2409                    router.history.current.matched[0].instances.default.loading = false;
2410                    validaActiveClass('#pg_consumo');
2411                });
2412                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2413            });
2414        } catch (e) {
2415            return `Exception Class HotsiteWeb -> buscarConsumos() -> ${e}`;
2416        }
2417    }
2418
2419    graficoConsumo(index, consumos_download, consumos_upload, labels, x_label) {
2420        $(document).ready(() => {
2421            const grafico_consumo = document.getElementById(index).getContext('2d');
2422            consumos_download = consumos_download.map((item) => item.replace(',', ''));
2423            consumos_upload = consumos_upload.map((item) => item.replace(',', ''));
2424
2425            const graficoConsumo = new Chart(grafico_consumo, {
2426                type: 'line',
2427                data: {
2428                    labels,
2429                    datasets: [{
2430                        label: 'Download em GB',
2431                        data: consumos_download,
2432                        borderColor: '#2bcbba',
2433                        backgroundColor: $(window).width() >= 460 ? '#2bcbba4a' : 'transparent',
2434                    }, {
2435                        label: 'Upload em GB',
2436                        data: consumos_upload,
2437                        borderColor: '#1E90FF',
2438                        backgroundColor: $(window).width() >= 460 ? '#1E90FF4f' : 'transparent',
2439                    }],
2440                },
2441                options: {
2442                    scales: {
2443                        yAxes: [{
2444                            scaleLabel: {
2445                                display: true,
2446                                labelString: 'Consumo em GB',
2447                            },
2448                        }],
2449                        xAxes: [{
2450                            gridLines: {
2451                                display: false,
2452                            },
2453                            scaleLabel: {
2454                                display: true,
2455                                labelString: x_label,
2456                            },
2457                        }],
2458                    },
2459                    responsive: true,
2460                    maintainAspectRatio: false,
2461                },
2462            });
2463        });
2464    }
2465
2466    /**
2467     * Atendimentos
2468     */
2469    buscarAtendimentos(slice, home, filtros, criar_toast_pendencia_atendimento, pg_atendimentos, valida_loading, valida_resize_home, valida_resize_atendimentos, valida_loading_function, validar_mensagem_lida) {
2470        const data = {
2471            SLICE: slice || this.slice,
2472            FILTROS: filtros || [],
2473            HOME: home || false,
2474            ACTION: 'getAtendimentos',
2475        };
2476
2477        var criar_toast_pendencia_atendimento = criar_toast_pendencia_atendimento || this.criarToastPendenciaAtendimento;
2478        var valida_resize_home = valida_resize_home || this.validaResizeHome;
2479        var valida_resize_atendimentos = valida_resize_atendimentos || this.validaResizeAtendimentos;
2480        var valida_loading_function = valida_loading_function || this.validaLoading;
2481        var validar_mensagem_lida = validar_mensagem_lida || this.validarMensagemLida;
2482
2483        try {
2484            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2485                try {
2486                    data = JSON.parse(data);
2487                } catch (e) {
2488                    data = data;
2489                }
2490
2491                if (data != '' && data != undefined) {
2492                    if (data.num_atendimentos > 0 && app.pg_atendimento === 'S') {
2493                        if (home == true) {
2494                            const id_atendimento_toast = data.atendimentos_dash[0].id;
2495                            criar_toast_pendencia_atendimento('40000000', 'Opa!', 'Você tem uma nova mensagem de atendimento!', 'headset_mic', 'green', 'notificacao_atendimento', 'Ver mensagem', `/central_assinante_web/atendimentos/mensagens/${id_atendimento_toast}`, id_atendimento_toast, validar_mensagem_lida);
2496                        }
2497                    }
2498
2499                    router.history.current.matched[0].instances.default.is_safari = IS_SAFARI;
2500
2501                    if (data.atendimentos) {
2502                        router.history.current.matched[0].instances.default.atendimentos = data;
2503                    }
2504
2505                    if (data.total_registros <= SLICE_ATENDIMENTO) {
2506                        router.history.current.matched[0].instances.default.mostrar_cinco_atendimentos = true;
2507                    } else {
2508                        router.history.current.matched[0].instances.default.mostrar_cinco_atendimentos = false;
2509                    }
2510
2511                    if (pg_atendimentos) {
2512                        valida_resize_atendimentos();
2513                    } else {
2514                        valida_resize_home();
2515                    }
2516
2517                    $(document).ready(() => {
2518                        if (valida_loading) {
2519                            LOADING_ATENDIMENTO = false;
2520                            valida_loading_function();
2521                        } else {
2522                            app.loading = false;
2523                            router.history.current.matched[0].instances.default.loading = false;
2524                            validaActiveClass('#pg_atendimento');
2525                        }
2526                    });
2527
2528                    return;
2529                }
2530
2531                router.history.current.matched[0].instances.default.atendimentos = [];
2532
2533                $(document).ready(() => {
2534                    if (valida_loading) {
2535                        LOADING_ATENDIMENTO = false;
2536                        valida_loading_function();
2537                    } else {
2538                        app.loading = false;
2539                        router.history.current.matched[0].instances.default.loading = false;
2540                    }
2541                });
2542            }).fail((e) => {
2543                router.history.current.matched[0].instances.default.atendimentos = [];
2544
2545                $(document).ready(() => {
2546                    if (valida_loading) {
2547                        LOADING_ATENDIMENTO = false;
2548                        valida_loading_function();
2549                    } else {
2550                        app.loading = false;
2551                        router.history.current.matched[0].instances.default.loading = false;
2552                    }
2553                });
2554                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2555            });
2556        } catch (e) {
2557            return `Exception Class HotsiteWeb -> buscarAtendimentos() -> ${e}`;
2558        }
2559    }
2560
2561    buscarMensagensAtendimento(id_atendimento, criar_toast) {
2562        const data = {
2563            ID_ATENDIMENTO: id_atendimento || 0,
2564            ACTION: 'getMensagens',
2565        };
2566
2567        var criar_toast = criar_toast || this.criarToast;
2568
2569        try {
2570            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2571                try {
2572                    data = JSON.parse(data);
2573                } catch (e) {
2574                    data = data;
2575                }
2576
2577                if (data.tipo == 'erro') {
2578                    router.replace('/central_assinante_web/');
2579                }
2580
2581                if (typeof data.atendimento !== 'undefined') {
2582                    if (data.atendimento != '') {
2583                        router.history.current.matched[0].instances.default.atendimentos = data;
2584
2585                        $(document).ready(() => {
2586                            app.loading = false;
2587                            router.history.current.matched[0].instances.default.enviar_mensagem = false;
2588                            router.history.current.matched[0].instances.default.loading = false;
2589                            validaActiveClass('#pg_atendimento');
2590                        });
2591                        return;
2592                    }
2593                }
2594
2595                $(document).ready(() => {
2596                    router.history.current.matched[0].instances.default.atendimentos = {};
2597                    app.loading = false;
2598                    router.history.current.matched[0].instances.default.enviar_mensagem = false;
2599                    router.history.current.matched[0].instances.default.loading = false;
2600                    router.replace('/central_assinante_web/');
2601                });
2602            }).fail((e) => {
2603                router.history.current.matched[0].instances.default.atendimentos = [];
2604
2605                $(document).ready(() => {
2606                    app.loading = false;
2607                    router.history.current.matched[0].instances.default.enviar_mensagem = false;
2608                    router.history.current.matched[0].instances.default.loading = false;
2609                    validaActiveClass('#pg_atendimento');
2610                });
2611                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2612            });
2613        } catch (e) {
2614            return `Exception Class HotsiteWeb -> buscarMensagensAtendimento() -> ${e}`;
2615        }
2616    }
2617
2618    enviarMensagem(id_atendimento, mensagem) {
2619        const data = {
2620            ID_ATENDIMENTO: id_atendimento || 0,
2621            MENSAGEM: mensagem || '',
2622            ACTION: 'setMensagem',
2623        };
2624
2625        const criar_toast = this.criarToast;
2626        const buscar_mensagens_atendimento = this.buscarMensagensAtendimento;
2627
2628        try {
2629            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2630                data = JSON.parse(data);
2631
2632                if (data != '' && data != undefined) {
2633                    if (data[0].tipo == 'sucesso') {
2634                        criar_toast('2000', 'Sucesso!', data[0].mensagem, 'fas fa-check', 'green', 'id_sucesso');
2635                        router.history.current.matched[0].instances.default.nova_mensagem = '';
2636                    } else {
2637                        criar_toast('4000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
2638                    }
2639
2640                    return buscar_mensagens_atendimento(id_atendimento, criar_toast);
2641                }
2642            }).fail((e) => {
2643                buscar_mensagens_atendimento(id_atendimento, criar_toast);
2644                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2645            });
2646        } catch (e) {
2647            return `Exception Class HotsiteWeb -> enviarMensagem() -> ${e}`;
2648        }
2649    }
2650
2651    validarMensagemLida(id_atendimento) {
2652        const data = {
2653            ID_ATENDIMENTO: id_atendimento || 0,
2654            ACTION: 'setMensagemVisualizadaCliente',
2655        };
2656
2657        try {
2658            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2659                data = JSON.parse(data);
2660
2661                if (data != '' && data != undefined) {
2662                    if (data[0].tipo == 'erro') {
2663                        console.log(`erro: ${data[0].mensagem}`);
2664                    }
2665                }
2666            }).fail((e) => {
2667                console.log(`Ocorreu algum erro no servidor -> STATUS: ${e.statusText}`);
2668            });
2669        } catch (e) {
2670            return `Exception Class HotsiteWeb -> validarMensagemLida() -> ${e}`;
2671        }
2672    }
2673
2674    buscarProtocolo() {
2675        const data = {
2676            ACTION: 'getProtocoloAtendimento',
2677        };
2678
2679        const criar_toast = this.criarToast;
2680
2681        try {
2682            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2683                data = JSON.parse(data);
2684
2685                if (data != '' && data != undefined) {
2686                    if (!data[0].tipo) {
2687                        router.history.current.matched[0].instances.default.atendimentos.protocolo_novo_atendimento = data;
2688                    } else {
2689                        criar_toast('2000', 'Erro!', 'Houve algum problema ao tentar gerar o protocolo de atendimento', 'fas fa-exclamation-circle', 'red', 'id_erro');
2690                    }
2691
2692                    $(document).ready(() => {
2693                        app.loading = false;
2694                        router.history.current.matched[0].instances.default.loading = false;
2695                        validaActiveClass('#pg_atendimento');
2696                    });
2697                }
2698            }).fail((e) => {
2699                router.history.current.matched[0].instances.default.atendimentos.protocolo_novo_atendimento = '';
2700                $(document).ready(() => {
2701                    app.loading = false;
2702                    router.history.current.matched[0].instances.default.loading = false;
2703                    validaActiveClass('#pg_atendimento');
2704                });
2705                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2706            });
2707        } catch (e) {
2708            return `Exception Method buscarProtocolo() -> ${e}`;
2709        }
2710    }
2711
2712    buscarDepartamento() {
2713        const data = {
2714            ACTION: 'getDepartamentos',
2715        };
2716
2717        const criar_toast = this.criarToast;
2718
2719        try {
2720            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2721                data = JSON.parse(data);
2722
2723                if (data != '' && data != undefined) {
2724                    if (!data[0].tipo) {
2725                        router.history.current.matched[0].instances.default.atendimentos.departamento_novo_atendimento = data;
2726                    } else {
2727                        criar_toast('2000', 'Erro!', 'Houve algum problema ao tentar listar os departamentos', 'fas fa-exclamation-circle', 'red', 'id_erro');
2728                    }
2729
2730                    $(document).ready(() => {
2731                        app.loading = false;
2732                        router.history.current.matched[0].instances.default.loading = false;
2733                        validaActiveClass('#pg_atendimento');
2734                    });
2735                }
2736            }).fail((e) => {
2737                router.history.current.matched[0].instances.default.atendimentos.departamento_novo_atendimento = [];
2738                $(document).ready(() => {
2739                    app.loading = false;
2740                    router.history.current.matched[0].instances.default.loading = false;
2741                    validaActiveClass('#pg_atendimento');
2742                });
2743                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2744            });
2745        } catch (e) {
2746            return `Exception Method buscarDepartamento() -> ${e}`;
2747        }
2748    }
2749
2750    buscarAssunto() {
2751        const data = {
2752            ACTION: 'getAssuntos',
2753        };
2754
2755        const criar_toast = this.criarToast;
2756
2757        try {
2758            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2759                data = JSON.parse(data);
2760
2761                if (data != '' && data != undefined) {
2762                    if (data.length > 0) {
2763                        router.history.current.matched[0].instances.default.atendimentos.assunto_novo_atendimento = data;
2764                    } else {
2765                        criar_toast('2000', 'Erro!', 'Houve algum problema ao tentar listar os assuntos', 'fas fa-exclamation-circle', 'red', 'id_erro');
2766                    }
2767
2768                    $(document).ready(() => {
2769                        app.loading = false;
2770                        router.history.current.matched[0].instances.default.loading = false;
2771                        validaActiveClass('#pg_atendimento');
2772                    });
2773                }
2774            }).fail((e) => {
2775                router.history.current.matched[0].instances.default.atendimentos.assunto_novo_atendimento = [];
2776                $(document).ready(() => {
2777                    app.loading = false;
2778                    router.history.current.matched[0].instances.default.loading = false;
2779                    validaActiveClass('#pg_atendimento');
2780                });
2781                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2782            });
2783        } catch (e) {
2784            return `Exception Method buscarAssunto() -> ${e}`;
2785        }
2786    }
2787
2788    enviarNovoAtendimento(titulo, prioridade, id_ticket_setor, mensagem, status, assunto, protocolo, filtros) {
2789        const data = {
2790            TITULO: titulo || '',
2791            PRIORIDADE: prioridade || '',
2792            ID_TICKET_SETOR: id_ticket_setor || 0,
2793            MENSAGEM: mensagem || '',
2794            STATUS: status || '',
2795            ASSUNTO: assunto || '',
2796            PROTOCOLO: protocolo || '',
2797            FILTROS: filtros || [],
2798            ACTION: 'setNovoAtendimento',
2799        };
2800
2801        const criar_toast = this.criarToast;
2802
2803        try {
2804            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2805                data = JSON.parse(data);
2806
2807                if (data != '' && data != undefined) {
2808                    if (data[0].tipo == 'sucesso') {
2809                        criar_toast('3000', 'Sucesso!', 'Seu atendimento foi aberto. Responderemos dentro de algumas horas &#x1F609', 'fas fa-check', 'green', 'id_sucesso');
2810                        router.replace({ path: '/central_assinante_web/atendimentos' });
2811                    } else {
2812                        criar_toast('5000', 'Erro!', 'Não foi possível abrir o atendimento. Verifique se todos os campos estão preenchidos.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2813                    }
2814                }
2815            }).fail((e) => {
2816                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2817            });
2818        } catch (e) {
2819            return `Exception Class HotsiteWeb -> enviarNovoAtendimento() -> ${e}`;
2820        }
2821    }
2822
2823    finalizarAtendimento(id_atendimento, filtros, slice, mensagem_finalizacao, criar_toast, buscar_atendimentos, valida_resize_home, valida_resize_atendimentos, valida_loading_function, validar_mensagem_lida) {
2824        const data = {
2825            ID_ATENDIMENTO: id_atendimento || 0,
2826            MENSAGEM: mensagem_finalizacao || '',
2827            SLICE: slice || this.slice,
2828            FILTROS: filtros || [],
2829            ACTION: 'setFinalizarAtendimento',
2830        };
2831
2832        app.loading = true;
2833
2834        var criar_toast = criar_toast || this.criarToast;
2835        var valida_resize_home = valida_resize_home || this.validaResizeHome;
2836        var valida_resize_atendimentos = valida_resize_atendimentos || this.validaResizeAtendimentos;
2837        var buscar_atendimentos = buscar_atendimentos || this.buscarAtendimentos;
2838        var valida_loading_function = valida_loading_function || this.validaLoading;
2839
2840        try {
2841            $.get(`${__SERVER__}/model/atendimentos/atendimentos.php`, data, (data) => {
2842                data = JSON.parse(data);
2843                if (data != '' && data != undefined) {
2844                    if (data[0].tipo == 'sucesso') {
2845                        criar_toast('2000', 'Sucesso!', 'O atendimento foi finalizado.', 'fas fa-check', 'green', 'id_sucesso');
2846                    } else {
2847                        criar_toast('4000', 'Erro!', 'Ocorreu um erro ao finalizar o atendimento. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2848                    }
2849                }
2850                return buscar_atendimentos(SLICE_ATENDIMENTO, false, [], criar_toast, true, false, valida_resize_home, valida_resize_atendimentos, valida_loading_function, validar_mensagem_lida);
2851            }).fail((e) => {
2852                buscar_atendimentos(SLICE_ATENDIMENTO, false, [], criar_toast, true, false, valida_resize_home, valida_resize_atendimentos, valida_loading_function, validar_mensagem_lida);
2853                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2854            });
2855        } catch (e) {
2856            return `Exception Class HotsiteWeb -> finalizarAtendimento() -> ${e}`;
2857        }
2858    }
2859
2860    /**
2861     * Franquias
2862     */
2863    aumentarNumeroPorcento(index) {
2864        const interval = setInterval(() => {
2865            if ($(`.count_${index}`).length) {
2866                clearInterval(interval);
2867                $(`.count_${index}`).each(function () {
2868                    const counter = $(this).text();
2869                    $(this).prop('Counter', 0).animate({
2870                        Counter: counter,
2871                    }, {
2872                        duration: 2000,
2873                        easing: 'swing',
2874                        step(now) {
2875                            $(this).text(parseFloat(now).toFixed(1));
2876                        },
2877                    });
2878                });
2879            }
2880        }, 200);
2881    }
2882
2883    moverBarraPorcentagem(index) {
2884        const interval = setInterval(() => {
2885            if ($(`.progress_${index}`).length) {
2886                clearInterval(interval);
2887                const porcentagem = ($(`.progress_${index}`).data('progress-percent'));
2888                $(`.bar_${index}`).stop().animate({
2889                    width: `${porcentagem}%`,
2890                }, 1600);
2891            }
2892        }, 200);
2893    }
2894
2895    buscarFranquias(slice, valida_loading) {
2896        const data = {
2897            SLICE: slice || this.slice,
2898            ACTION: 'getFranquias',
2899        };
2900
2901        const criar_toast = this.criarToast;
2902        const mover_porcentagem = this.moverBarraPorcentagem;
2903        const aumentar_porcentagem = this.aumentarNumeroPorcento;
2904        const valida_loading_function = this.validaLoading;
2905
2906        try {
2907            $.get(`${__SERVER__}/model/consumos/consumos.php`, data, (data) => {
2908                data = JSON.parse(data);
2909                if (data != '' && data != undefined) {
2910                    if (!data[0].tipo) {
2911                        router.history.current.matched[0].instances.default.franquias = data;
2912                    }
2913
2914                    $(document).ready(function () {
2915                        for (let x = 0; x < router.history.current.matched[0].instances.default.franquias.length; x++) {
2916                            mover_porcentagem.call(this, x);
2917                            aumentar_porcentagem.call(this, x);
2918                        }
2919                        if (valida_loading) {
2920                            LOADING_FRANQUIA = false;
2921                            valida_loading_function();
2922                        }
2923                    });
2924
2925                    return;
2926                }
2927
2928                router.history.current.matched[0].instances.default.franquias = [];
2929
2930                $(document).ready(() => {
2931                    if (valida_loading) {
2932                        LOADING_FRANQUIA = false;
2933                        valida_loading_function();
2934                    }
2935                });
2936            }).fail((e) => {
2937                router.history.current.matched[0].instances.default.franquias = [];
2938
2939                $(document).ready(() => {
2940                    if (valida_loading) {
2941                        LOADING_FRANQUIA = false;
2942                        valida_loading_function();
2943                    }
2944                });
2945                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
2946            });
2947        } catch (e) {
2948            return `Exception Class HotsiteWeb -> buscarFranquias() -> ${e}`;
2949        }
2950    }
2951
2952    /** RELATORIOS */
2953
2954    validaAcessoRelatorios() {
2955        const data = {
2956            ACTION: 'getPendenciaQuitacaoDebito',
2957        };
2958
2959        $(document).ready(() => {
2960            validaActiveClass('#pg_relatorios');
2961            router.history.current.matched[0].instances.default.pg_declaracao_debito = app.pg_declaracao_debito;
2962        });
2963
2964        const hs_web = new HotsiteWeb();
2965
2966        try {
2967            $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (data) => {
2968                try {
2969                    data = JSON.parse(data);
2970                } catch (e) {
2971                    data = data;
2972                }
2973
2974                if (data != '' && data != undefined) {
2975                    if (data[0].tipo == 'sucesso') {
2976                        router.history.current.matched[0].instances.default.possui_debito = false;
2977                        return hs_web.getRamais();
2978                    }
2979
2980                    router.history.current.matched[0].instances.default.possui_debito = true;
2981                    return hs_web.getRamais();
2982                }
2983            }).fail((e) => {
2984                router.history.current.matched[0].instances.default.possui_debito = true;
2985                return hs_web.getRamais();
2986            });
2987        } catch (e) {
2988            $(document).ready(() => {
2989                router.history.current.matched[0].instances.default.possui_debito = true;
2990            });
2991            return hs_web.getRamais();
2992        }
2993    }
2994
2995    getRamais() {
2996        const data = {
2997            ACTION: 'getRamais',
2998        };
2999
3000        try {
3001            $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (data) => {
3002                try {
3003                    data = JSON.parse(data);
3004                } catch (e) {
3005                    data = data;
3006                }
3007                if (data != '' && data != undefined) {
3008                    if (data.tipo == 'sucesso') {
3009                        $(document).ready(() => {
3010                            app.loading = false;
3011                        });
3012                        return router.history.current.matched[0].instances.default.ramais = data.mensagem;
3013                    }
3014                    $(document).ready(() => {
3015                        app.loading = false;
3016                    });
3017                    return router.history.current.matched[0].instances.default.ramais = [];
3018                }
3019            }).fail((e) => {
3020                $(document).ready(() => {
3021                    app.loading = false;
3022                });
3023                return router.history.current.matched[0].instances.default.ramais = [];
3024            });
3025        } catch (e) {
3026            $(document).ready(() => {
3027                app.loading = false;
3028                router.history.current.matched[0].instances.default.ramais = [];
3029            });
3030            return `Exception Class HotsiteWeb -> buscarFaturas() -> ${e}`;
3031        }
3032    }
3033
3034    getPeriodosRamal(ramal_selecionado) {
3035        const data = {
3036            ACTION: 'getPeriodosRamal',
3037            RAMAL: ramal_selecionado,
3038        };
3039
3040        try {
3041            $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (data) => {
3042                try {
3043                    data = JSON.parse(data);
3044                } catch (e) {
3045                    data = data;
3046                }
3047                if (data != '' && data != undefined) {
3048                    if (data.tipo == 'sucesso') {
3049                        $(document).ready(() => {
3050                            app.loading = false;
3051                        });
3052                        router.history.current.matched[0].instances.default.periodo_selecionado = 'Selecione um período...';
3053                        return router.history.current.matched[0].instances.default.periodos = data.mensagem;
3054                    }
3055                    $(document).ready(() => {
3056                        app.loading = false;
3057                    });
3058                    router.history.current.matched[0].instances.default.periodo_selecionado = 'Selecione um período...';
3059                    return router.history.current.matched[0].instances.default.periodos = [];
3060                }
3061            }).fail((e) => {
3062                $(document).ready(() => {
3063                    app.loading = false;
3064                });
3065                router.history.current.matched[0].instances.default.periodo_selecionado = 'Selecione um período...';
3066                return router.history.current.matched[0].instances.default.periodos = [];
3067            });
3068        } catch (e) {
3069            $(document).ready(() => {
3070                app.loading = false;
3071                router.history.current.matched[0].instances.default.periodo_selecionado = 'Selecione um período...';
3072                router.history.current.matched[0].instances.default.periodos = [];
3073            });
3074            return `Exception Class HotsiteWeb -> buscarFaturas() -> ${e}`;
3075        }
3076    }
3077
3078    imprimirDetalhamento(id_contrato) {
3079        this.restoreModalVariavel();
3080        const criar_toast = this.criarToast;
3081        const data = {
3082            ID_CONTRATO: id_contrato || 0,
3083            APP: app.cordova_app ? 'S' : 'N',
3084            ACTION: 'getDetalhamentoFinanceiro',
3085        };
3086
3087        app.loading_modal = true;
3088
3089        try {
3090            if (data.APP == 'S') {
3091                const fileTransfer = new FileTransfer();
3092                const fileURL = `${cordova.file.dataDirectory}detalhamento.pdf`;
3093                const uri = `${__SERVER__}/model/planos/planos.php?ID_CONTRATO=${data.ID_CONTRATO}&APP=${data.APP}&ACTION=${data.ACTION}`;
3094
3095                fileTransfer.download(uri, fileURL,
3096                    (entry) => {
3097                        cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
3098                            error(e) {
3099                                app.loading = false;
3100                                alert('Instale um leitor de arquivo .pdf!');
3101                            },
3102                            success(e) {
3103                                app.loading = false;
3104                            },
3105                        });
3106                    },
3107                    (e) => {
3108                        app.loading = false;
3109                        alert('Erro ao baixar arquivo!');
3110                    }, false, {});
3111            } else {
3112                $.get(`${__SERVER__}/model/planos/planos.php`, data, (data) => {
3113                    try {
3114                        data = JSON.parse(data);
3115                    } catch (e) {
3116                        data = data;
3117                    }
3118                    if (data != '' && data != undefined) {
3119                        if (typeof window.ReactNativeWebView !== 'undefined') {
3120                            $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
3121                            document.getElementById('modalImpressaoClose').click();
3122                            postMessageMobile('base64', JSON.stringify({
3123                                base: data[0].mensagem.base_pdf,
3124                                nome: btoa(`${Math.floor(Math.random() * 9999) + 1000}detalhamento.pdf`),
3125                            })).then(
3126                                (retorno) => {
3127                                    $('#btn_imprimir_fat_').attr('disabled', false);
3128                                    if (JSON.parse(retorno.data).retorno == 'success') {
3129                                        criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
3130                                    } else {
3131                                        criar_toast('2000', 'Erro!', `Ocorreu algum erro: ${data[0].mensagem}`, 'fas fa-exclamation-circle', 'red', 'id_erro');
3132                                    }
3133                                },
3134                            );
3135                        } else {
3136                            if (data[0].tipo == 'sucesso') {
3137                                $(document).ready(() => {
3138                                    app.loading = false;
3139                                    app.loading_modal = false;
3140                                });
3141                                if (navigator.userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i)) {
3142                                    const link = document.createElement('a');
3143                                    link.href = `data:application/octet-stream;base64,${data[0].mensagem.base_pdf}`;
3144                                    link.download = 'Detalhamento.pdf';
3145                                    link.click();
3146                                    document.getElementById('modalImpressaoClose').click();
3147                                } else {
3148                                    return app.modal_url = data[0].mensagem.base_pdf;
3149                                }
3150                            } else {
3151                                criar_toast('2000', 'Erro!', `Ocorreu algum erro:${data[0].mensagem}`, 'fas fa-exclamation-circle', 'red', 'id_erro');
3152                            }
3153
3154                            $(document).ready(() => {
3155                                app.loading = false;
3156                                app.loading_modal = false;
3157                            });
3158                            return app.modal_url = '';
3159                        }
3160                    }
3161                }).fail((e) => {
3162                    $(document).ready(() => {
3163                        app.loading = false;
3164                        app.loading_modal = false;
3165                    });
3166                    return app.modal_url = '';
3167                });
3168            }
3169        } catch (e) {
3170            return `Exception Class HotsiteWeb -> imprimirDetalhamento() -> ${e}`;
3171        }
3172    }
3173
3174    getAnosQuitacao() {
3175        const data = { ACTION: 'getAnosQuitacao' };
3176        try {
3177            app.loading = true;
3178            $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (response) => {
3179                $(document).ready(() => app.loading = false);
3180                const result = JSON.parse(response);
3181                if (result && result.tipo === 'sucesso' && result.mensagem.length) {
3182                    router.history.current.matched[0].instances.default.ano_selecionado = result.mensagem[0];
3183                    return router.history.current.matched[0].instances.default.anos = result.mensagem;
3184                }
3185                return router.history.current.matched[0].instances.default.anos = [];
3186            }).fail(() => {
3187                $(document).ready(() => app.loading = false);
3188                return router.history.current.matched[0].instances.default.anos = [];
3189            });
3190        } catch (e) {
3191            $(document).ready(() => app.loading = false);
3192            router.history.current.matched[0].instances.default.anos = [];
3193            return `Exception Class HotsiteWeb -> getAnosQuitacao() -> ${e}`;
3194        }
3195    }
3196
3197    imprimirExtratoVoip(ramal_selecionado, periodo_selecionado, valida_relatorio) {
3198        this.restoreModalVariavel();
3199
3200        if (valida_relatorio === undefined) {
3201            this.validaTipoRelatorio(ramal_selecionado, periodo_selecionado);
3202        } else {
3203            const data = {
3204                ACTION: 'getExtratoVoip',
3205                RAMAL: ramal_selecionado,
3206                PERIODO: periodo_selecionado,
3207                APP: app.cordova_app ? 'S' : 'N',
3208            };
3209
3210            try {
3211                if (data.APP === 'S') {
3212                    const fileTransfer = new FileTransfer();
3213                    const fileURL = `${cordova.file.dataDirectory}relatorio.pdf`;
3214                    const uri = `${__SERVER__}/model/relatorios/relatorios.php?RAMAL=${data.RAMAL}&PERIODO=${data.PERIODO}&APP=${data.APP}&ACTION=${data.ACTION}`;
3215
3216                    fileTransfer.download(uri, fileURL,
3217                        (entry) => {
3218                            cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
3219                                error(e) {
3220                                    app.loading = false;
3221                                    alert('Instale um leitor de arquivo .pdf!');
3222                                },
3223                                success(e) {
3224                                    app.loading = false;
3225                                },
3226                            });
3227                        },
3228                        (e) => {
3229                            app.loading = false;
3230                            alert('Erro ao baixar arquivo!');
3231                        }, false, {});
3232                } else {
3233                    $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (data) => {
3234                        try {
3235                            data = JSON.parse(data);
3236                        } catch (e) {
3237                            data = data;
3238                        }
3239                        if (data != '' && data != undefined) {
3240                            if (typeof window.ReactNativeWebView !== 'undefined') {
3241                                $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
3242                                document.getElementById('modalImpressaoClose').click();
3243                                postMessageMobile('base64', JSON.stringify({
3244                                    base: data[0].mensagem.base_pdf,
3245                                    nome: btoa((Math.floor(Math.random() * 9999) + 1000)) + data[1],
3246                                })).then(
3247                                    (retorno) => {
3248                                        $('#btn_imprimir_fat_').attr('disabled', false);
3249                                        if (JSON.parse(retorno.data).retorno == 'success') {
3250                                            criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
3251                                        } else {
3252                                            criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
3253                                        }
3254                                    },
3255                                );
3256                            } else {
3257                                if (data[0].tipo == 'sucesso') {
3258                                    $(document).ready(() => {
3259                                        app.loading = false;
3260                                        app.loading_modal = false;
3261                                    });
3262                                    return app.modal_url = data[0].mensagem.base_pdf;
3263                                }
3264
3265                                $(document).ready(() => {
3266                                    app.loading = false;
3267                                    app.loading_modal = false;
3268                                });
3269                                return app.modal_url = '';
3270                            }
3271                        }
3272                    }).fail((e) => {
3273                        $(document).ready(() => {
3274                            app.loading = false;
3275                            app.loading_modal = false;
3276                        });
3277                        return app.modal_url = '';
3278                    });
3279                }
3280            } catch (e) {
3281                $(document).ready(() => {
3282                    app.loading = false;
3283                    app.loading_modal = false;
3284                    app.modal_url = '';
3285                });
3286                return `Exception Class HotsiteWeb -> buscarFaturas() -> ${e}`;
3287            }
3288        }
3289    }
3290
3291    validaTipoRelatorio(ramal_selecionado, periodo_selecionado) {
3292        const tipo_relatorio = $('#tipo_relatorio_extrato_ligacao option:selected').val();
3293
3294        const hs_web = new HotsiteWeb();
3295
3296        if (tipo_relatorio === 'extrato_ligacoes') {
3297            hs_web.imprimirExtratoVoip(ramal_selecionado, periodo_selecionado, true);
3298        } else if (tipo_relatorio === 'extrato_detalhado') {
3299            hs_web.imprimirExtratoDetalhadoVoip(ramal_selecionado, periodo_selecionado);
3300        }
3301    }
3302
3303    /** Imprimir Extrato Detalhado VOIP */
3304    imprimirExtratoDetalhadoVoip(ramal_selecionado, periodo_selecionado) {
3305        this.restoreModalVariavel();
3306
3307        const data = {
3308            ACTION: 'getExtratoDetalhadoVoip',
3309            RAMAL: ramal_selecionado,
3310            PERIODO: periodo_selecionado,
3311            APP: app.cordova_app ? 'S' : 'N',
3312        };
3313
3314        try {
3315            if (data.APP === 'S') {
3316                const fileTransfer = new FileTransfer();
3317                const fileURL = `${cordova.file.dataDirectory}relatorio.pdf`;
3318                const uri = `${__SERVER__}/model/relatorios/relatorios.php?RAMAL=${data.RAMAL}&PERIODO=${data.PERIODO}&APP=${data.APP}&ACTION=${data.ACTION}`;
3319
3320                fileTransfer.download(uri, fileURL,
3321                    (entry) => {
3322                        cordova.plugins.fileOpener2.open(entry.toURL(), 'application/pdf', {
3323                            error(e) {
3324                                app.loading = false;
3325                                alert('Instale um leitor de arquivo .pdf!');
3326                            },
3327                            success(e) {
3328                                app.loading = false;
3329                            },
3330                        });
3331                    },
3332                    (e) => {
3333                        app.loading = false;
3334                        alert('Erro ao baixar arquivo!');
3335                    }, false, {});
3336            } else {
3337                $.get(`${__SERVER__}/model/relatorios/relatorios.php`, data, (data) => {
3338                    try {
3339                        data = JSON.parse(data);
3340                    } catch (e) {
3341                        data = data;
3342                    }
3343                    if (data != '' && data != undefined) {
3344                        if (typeof window.ReactNativeWebView !== 'undefined') {
3345                            $('#btn_imprimir_fat, #btn_imprimir_fat_, #btn_imprimir_fat_home, #btn_imprimir_fat_home_').attr('disabled', false);
3346                            document.getElementById('modalImpressaoClose').click();
3347                            postMessageMobile('base64', JSON.stringify({
3348                                base: data[0].mensagem.base_pdf,
3349                                nome: btoa((Math.floor(Math.random() * 9999) + 1000)) + data[1],
3350                            })).then(
3351                                (retorno) => {
3352                                    $('#btn_imprimir_fat_').attr('disabled', false);
3353                                    if (JSON.parse(retorno.data).retorno == 'success') {
3354                                        criar_toast('2000', 'Sucesso!', 'O seu download foi completado com êxito', 'fas fa-check', 'green', 'id_sucesso');
3355                                    } else {
3356                                        criar_toast('2000', 'Erro!', 'Ocorreu algum erro ao fazer o download', 'fas fa-exclamation-circle', 'red', 'id_erro');
3357                                    }
3358                                },
3359                            );
3360                        } else {
3361                            if (data[0].tipo == 'sucesso') {
3362                                $(document).ready(() => {
3363                                    app.loading = false;
3364                                    app.loading_modal = false;
3365                                });
3366                                return app.modal_url = data[0].mensagem.base_pdf;
3367                            }
3368
3369                            $(document).ready(() => {
3370                                app.loading = false;
3371                                app.loading_modal = false;
3372                            });
3373                            return app.modal_url = '';
3374                        }
3375                    }
3376                }).fail((e) => {
3377                    $(document).ready(() => {
3378                        app.loading = false;
3379                        app.loading_modal = false;
3380                    });
3381                    return app.modal_url = '';
3382                });
3383            }
3384        } catch (e) {
3385            $(document).ready(() => {
3386                app.loading = false;
3387                app.loading_modal = false;
3388                app.modal_url = '';
3389            });
3390            return `Exception Class HotsiteWeb -> buscarFaturas() -> ${e}`;
3391        }
3392    }
3393
3394    /**
3395     * SESSAO USER
3396     */
3397    validaFNProject() {
3398        const data = {
3399            ACTION: 'getValidaFNProject',
3400        };
3401
3402        const hs_web = new HotsiteWeb();
3403
3404        $.ajax({
3405            url: `${__SERVER__}/model/login/login.php`,
3406            type: 'GET',
3407            data,
3408            dataType: 'JSON',
3409            async: false,
3410        }).done((data) => {
3411            if (data != '' && data != undefined && data.tipo === 'sucesso') {
3412                if (!data.mensagem) {
3413                    return hs_web.validaIPSessao();
3414                }
3415                CAD_LOGIN = true;
3416                return;
3417            }
3418            CAD_LOGIN = true;
3419        });
3420    }
3421
3422    getRecuperaSenhaTipo() {
3423        const data = {
3424            ACTION: 'getRecuperaSenhaTipo',
3425        };
3426        return new Promise((resolve) => {
3427            try {
3428                $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
3429                    data = JSON.parse(data);
3430                    router.history.current.matched[0].instances.default.recupera_senha_tipo = data.recupera_senha;
3431                    resolve(data.recupera_senha);
3432                }).fail((e) => {
3433                    router.replace('/central_assinante_web/login');
3434                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
3435                });
3436            } catch (e) {
3437                resolve(`Exception Class HotsiteWeb -> getRecuperaSenhaTipo() -> ${e}`);
3438            }
3439        });
3440    }
3441
3442    validaCamposRecuperaSenha(login, cnpj_cpf = '', telefone = '') {
3443        const data = {
3444            ACTION: 'validaCamposRecuperaSenha',
3445            USER: login,
3446            CNPJ_CPF: cnpj_cpf,
3447            TELEFONE: telefone,
3448        };
3449        return new Promise((resolve) => {
3450            try {
3451                $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
3452                    data = JSON.parse(data);
3453                    resolve(data);
3454                }).fail((e) => {
3455                    router.replace('/central_assinante_web/login');
3456                    criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
3457                });
3458            } catch (e) {
3459                resolve(`Exception Class HotsiteWeb -> getLoginHotsite() -> ${e}`);
3460            }
3461        });
3462    }
3463
3464    buscarTipoLogin(criar_toast) {
3465        const data = {
3466            ID_CLIENTE: 0,
3467            ACTION: 'getTipoLogin',
3468        };
3469
3470        var criar_toast = criar_toast || this.criarToast;
3471
3472        try {
3473            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
3474                data = JSON.parse(data);
3475
3476                if (data != '' && data != undefined) {
3477                    if (data[0].tipo == 'sucesso') {
3478                        app.tipo_login = data[0].mensagem.tipo_login;
3479                        app.permitir_cadastros_usuario = data[0].mensagem.permitir_cadastros_usuario;
3480                        const logo = data[0].mensagem.hotsite_logo_base;
3481                        $(document).ready(() => {
3482                            router.history.current.matched[0].instances.default.label_login = data[0].mensagem.login_campo_texto;
3483                            router.history.current.matched[0].instances.default.tipo_login = data[0].mensagem.tipo_login;
3484                            router.history.current.matched[0].instances.default.permitir_cadastros_usuario = data[0].mensagem.permitir_cadastros_usuario;
3485                            $('.tipo_login_senha').removeClass('display-none');
3486                            $('.login-esqueceu-senha').removeClass('display-none');
3487
3488                            if (logo) {
3489                                router.history.current.matched[0].instances.default.logo_base_login = `data:application/image;base64,${data[0].mensagem.hotsite_logo_base}`;
3490                            } else {
3491                                router.history.current.matched[0].instances.default.logo_base_login = `${__SERVER__}/assets/img/logo_padrao.png`;
3492                            }
3493
3494                            const { tipo_login } = router.history.current.matched[0].instances.default;
3495                            if (tipo_login == 'C') {
3496                                router.history.current.matched[0].instances.default.mask = true;
3497                            } else {
3498                                router.history.current.matched[0].instances.default.mask = false;
3499                            }
3500                            router.replace('/central_assinante_web/login');
3501                        });
3502                    }
3503                }
3504            }).fail((e) => {
3505                router.replace('/central_assinante_web/login');
3506                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
3507            });
3508        } catch (e) {
3509            return `Exception Class HotsiteWeb -> buscarTipoLogin() -> ${e}`;
3510        }
3511    }
3512
3513    proximaEtapa(etapa) {
3514        router.history.current.matched[0].instances.default.wizard = ((etapa == 'A' || etapa == 'C') ? etapa : 'A');
3515
3516        setTimeout(() => router.history.current.matched[0].instances.default.mostrar_tela = ((etapa == 'A' || etapa == 'C') ? etapa : 'A'), 250);
3517    }
3518
3519    pegarDadosSessao() {
3520        const data = {
3521            ACTION: 'getValidaLoginHash',
3522        };
3523
3524        const hs_web = new HotsiteWeb();
3525
3526        $.ajax({
3527            url: `${__SERVER__}/model/login/login.php`,
3528            type: 'GET',
3529            data,
3530            dataType: 'JSON',
3531            async: false,
3532        }).done((data) => {
3533            if (data != '' && data != undefined && data[0].tipo === 'sucesso') {
3534                if (data[0].mensagem.dados_cliente.acesso_automatico_central === 'S') {
3535                    if (data[0].mensagem.dados_cliente.primeiro_acesso_central === 'S') {
3536                        hs_web.buscarLogo();
3537
3538                        $(document).ready(() => {
3539                            hs_web.proximaEtapa('A');
3540                            router.history.current.matched[0].instances.default.cliente_nome = data[0].mensagem.dados_cliente.razao;
3541                        });
3542
3543                        CAD_LOGIN = false;
3544                        return;
3545                    }
3546
3547                    if ((!data[0].mensagem.dados_cliente.hotsite_email || !data[0].mensagem.dados_cliente.senha) && data[0].mensagem.parametros_hotsite.tipo_login === 'E') {
3548                        hs_web.buscarLogo();
3549                        $(document).ready(() => {
3550                            hs_web.proximaEtapa('C');
3551                        });
3552                        CAD_LOGIN = false;
3553                        return;
3554                    }
3555
3556                    hs_web.setPrimeiroAcessoOK();
3557                    hs_web.criarSessao(data);
3558                    CAD_LOGIN = true;
3559                    $(document).ready(() => {
3560                        router.history.current.matched[0].instances.default.loading_one = false;
3561                    });
3562                    return;
3563                } if (data[0].mensagem.dados_cliente.acesso_automatico_central === 'P' && data[0].mensagem.parametros_hotsite.acesso_automatico_central === 'S') {
3564                    if (data[0].mensagem.dados_cliente.primeiro_acesso_central === 'S') {
3565                        hs_web.buscarLogo();
3566
3567                        $(document).ready(() => {
3568                            hs_web.proximaEtapa('A');
3569                            router.history.current.matched[0].instances.default.cliente_nome = data[0].mensagem.dados_cliente.razao;
3570                        });
3571
3572                        CAD_LOGIN = false;
3573                        return;
3574                    }
3575
3576                    if ((!data[0].mensagem.dados_cliente.hotsite_email || !data[0].mensagem.dados_cliente.senha) && data[0].mensagem.parametros_hotsite.tipo_login === 'E') {
3577                        hs_web.buscarLogo();
3578                        $(document).ready(() => {
3579                            hs_web.proximaEtapa('C');
3580                        });
3581                        CAD_LOGIN = false;
3582                        return;
3583                    }
3584
3585                    hs_web.setPrimeiroAcessoOK();
3586                    hs_web.criarSessao(data);
3587                    CAD_LOGIN = true;
3588                    $(document).ready(() => {
3589                        router.history.current.matched[0].instances.default.loading_one = false;
3590                    });
3591                    return;
3592                }
3593                CAD_LOGIN = true;
3594                return true;
3595            }
3596            $(document).ready(() => {
3597                router.history.current.matched[0].instances.default.loading_one = false;
3598            });
3599            CAD_LOGIN = true;
3600        });
3601    }
3602
3603    validarDadosUsuarioPrimeiroAcesso() {
3604        const data = {
3605            ACTION: 'getValidaLoginHash',
3606        };
3607
3608        const hs_web = new HotsiteWeb();
3609
3610        $.ajax({
3611            url: `${__SERVER__}/model/login/login.php`,
3612            type: 'GET',
3613            data,
3614            dataType: 'JSON',
3615            async: false,
3616        }).done((data) => {
3617            if (data != '' && data != undefined && data[0].tipo === 'sucesso') {
3618                if ((data[0].mensagem.dados_cliente.acesso_automatico_central === 'S') || (data[0].mensagem.dados_cliente.acesso_automatico_central === 'P' && data[0].mensagem.parametros_hotsite.acesso_automatico_central === 'S')) {
3619                    if ((!data[0].mensagem.dados_cliente.hotsite_email || !data[0].mensagem.dados_cliente.senha) && data[0].mensagem.parametros_hotsite.tipo_login === 'E') {
3620                        CAD_LOGIN = false;
3621                        return hs_web.solicitarCadastroUser();
3622                    }
3623
3624                    hs_web.setPrimeiroAcessoOK();
3625                    hs_web.criarSessao(data);
3626                    CAD_LOGIN = true;
3627                }
3628            } else {
3629                $(document).ready(() => {
3630                    router.history.current.matched[0].instances.default.loading_one = false;
3631                });
3632                CAD_LOGIN = true;
3633            }
3634        });
3635    }
3636
3637    solicitarCadastroUser() {
3638        $(document).ready(() => {
3639            const hs_web = new HotsiteWeb();
3640
3641            router.history.current.matched[0].instances.default.loading_one = false;
3642            hs_web.buscarLogo();
3643            hs_web.proximaEtapa('C');
3644        });
3645    }
3646
3647    buscarLogo() {
3648        const data = {
3649            ID_CLIENTE: 0,
3650            ACTION: 'getTipoLogin',
3651        };
3652
3653        try {
3654            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
3655                data = JSON.parse(data);
3656
3657                if (data != '' && data != undefined) {
3658                    if (data[0].tipo == 'sucesso') {
3659                        const logo = data[0].mensagem.hotsite_logo_base;
3660                        $(document).ready(() => {
3661                            if (logo) {
3662                                router.history.current.matched[0].instances.default.logo_base_login = `data:application/image;base64,${data[0].mensagem.hotsite_logo_base}`;
3663                            } else {
3664                                router.history.current.matched[0].instances.default.logo_base_login = `${__SERVER__}/assets/img/logo_padrao.png`;
3665                            }
3666                            app.loading = false;
3667                        });
3668                    }
3669                }
3670            });
3671        } catch (e) {
3672            return `Exception Class HotsiteWeb -> buscarLogo() -> ${e}`;
3673        }
3674    }
3675
3676    setPrimeiroAcessoOK() {
3677        const data = {
3678            ACTION: 'setPrimeiroAcessoOK',
3679        };
3680
3681        $.ajax({
3682            url: `${__SERVER__}/model/login/login.php`,
3683            type: 'GET',
3684            data,
3685            dataType: 'JSON',
3686        });
3687    }
3688
3689    criarSessao(data) {
3690        sessionStorage.setItem('dados', JSON.stringify(data[0].mensagem.dados_cliente));
3691        sessionStorage.setItem('parametros', JSON.stringify(data[0].mensagem.parametros_hotsite));
3692        sessionStorage.setItem('sessao', JSON.stringify(data[0].mensagem.sessao));
3693        localStorage.setItem('manter_conectado', $.cookie('manter_conectado') || 'N');
3694        $.cookie('sessao', data[0].mensagem.sessao);
3695
3696        __DADOS_CLIENTE__.push(data[0].mensagem.dados_cliente);
3697        __PARAMETROS__.push(data[0].mensagem.parametros_hotsite);
3698
3699        let parametros = null;
3700        let dados_cliente = null;
3701
3702        parametros = JSON.parse(sessionStorage.getItem('parametros'));
3703        dados_cliente = JSON.parse(sessionStorage.getItem('dados'));
3704
3705        const fantasia = dados_cliente.fantasia.split(' ')[0];
3706        const razao = dados_cliente.razao.split(' ')[0];
3707        const cliente_nome = fantasia || razao;
3708
3709        app.cliente_nome = cliente_nome;
3710        app.pg_fatura = parametros.habilitar_financeiro;
3711        app.pg_plano = parametros.habilitar_contratos;
3712        app.pg_nota = parametros.mostra_menu_nota_app;
3713        app.pg_consumo = parametros.habilitar_extrato_internet;
3714        app.pg_atendimento = parametros.habilitar_suporte;
3715        app.pg_declaracao_debito = parametros.habilitar_declaracao_debitos;
3716        app.pg_alterar_senha = parametros.habilitar_altera_senha;
3717        app.pg_exibir_detalhamento_financeiro = parametros.exibir_detalhamento_financeiro;
3718        app.pg_connections = parametros.habilitar_menu_conexao;
3719
3720        app.url_app_android = parametros.url_app_android;
3721
3722        app.mostra_builder = parametros.FN;
3723        app.is_fn = parametros.FN;
3724        app.habilitar_contato = parametros.habilitar_contato;
3725        app.whatsapp_link = parametros.whatsapp_link;
3726        app.webchat_link = parametros.webchat_link;
3727        app.telefone_contato = parametros.telefone_contato;
3728
3729        if (parametros.hotsite_logo_base) {
3730            app.logo_base = `data:application/image;base64,${parametros.hotsite_logo_base}`;
3731        } else {
3732            app.logo_base = `${__SERVER__}/assets/img/logo.png`;
3733        }
3734
3735        FATURA_TOAST = true;
3736        PLANO_TOAST = true;
3737        ATENDIMENTO_TOAST = true;
3738
3739        app.habilitar_form_primeiro_acesso = false;
3740        if (dados_cliente.primeiro_acesso_central === 'S' && parametros.alterar_senha_primeiro_acesso === 'S' && dados_cliente.alterar_senha_primeiro_acesso !== 'N' && app.tipo_login === 'E') {
3741            app.habilitar_form_primeiro_acesso = true;
3742        }
3743
3744        $(document).ready(() => {
3745            router.history.current.matched[0].instances.default.loading = false;
3746            if (app.habilitar_form_primeiro_acesso) {
3747                new HotsiteWeb().removeCache();
3748                router.history.current.matched[0].instances.default.habilitar_form_primeiro_acesso = true;
3749                // new HotsiteWeb().getRecuperaSenhaTipo().then((tipo)=>{
3750                //     router.history.current.matched[0].instances.default.recupera_senha_tipo=tipo
3751                router.replace('central_assinante_web/login');
3752                // });
3753            } else {
3754                router.replace('central_assinante_web');
3755            }
3756        });
3757    }
3758
3759    getTokenAPP() {
3760        return new Promise((resolve) => {
3761            let token = '';
3762            if (typeof window.ReactNativeWebView !== 'undefined') {
3763                postMessageMobile('firebase_token').then((event) => {
3764                    if (JSON.parse(event.data).token) {
3765                        token = JSON.parse(event.data).token;
3766                    } else {
3767                        token = JSON.parse(event.data).retorno;
3768                    }
3769                    resolve(token);
3770                });
3771            } else if (app.cordova_app) {
3772                window.FirebasePlugin.grantPermission();
3773                window.FirebasePlugin.getToken((token) => {
3774                    resolve(token);
3775                });
3776            } else {
3777                resolve();
3778            }
3779        });
3780    }
3781
3782    validaIPSessao() {
3783        const hs_web = new HotsiteWeb();
3784        hs_web.getTokenAPP().then((token) => {
3785            const isReact = typeof window.ReactNativeWebView !== 'undefined';
3786            const data = {
3787                ACTION: 'getValidaIPSessao',
3788                APP: app.cordova_app || isReact ? 'S' : 'N',
3789                TOKEN: token,
3790            };
3791            $.ajax({
3792                url: `${__SERVER__}/model/login/login.php`,
3793                type: 'GET',
3794                data,
3795                dataType: 'JSON',
3796                async: false,
3797            }).done((data) => {
3798                const hs_web = new HotsiteWeb();
3799                if (data != '' && data != undefined && data.tipo === 'sucesso') {
3800                    $.cookie('sessao', data.mensagem);
3801                    $.cookie('manter_conectado', 'N');
3802
3803                    return hs_web.pegarDadosSessao();
3804                }
3805                $(document).ready(() => {
3806                    router.history.current.matched[0].instances.default.loading = false;
3807                });
3808                CAD_LOGIN = true;
3809            });
3810        });
3811    }
3812
3813    validarCriarUsuarioPrimeiroAcesso(email_user, pass_user, pass_two_user) {
3814        const data = {
3815            EMAIL: email_user || '',
3816            SENHA: pass_user || '',
3817            REPETIR_SENHA: pass_two_user || '',
3818            ACTION: 'setCadastrarLogin',
3819        };
3820
3821        const hs_web = new HotsiteWeb();
3822
3823        $.ajax({
3824            url: `${__SERVER__}/model/login/login.php`,
3825            type: 'GET',
3826            data,
3827            dataType: 'JSON',
3828            async: false,
3829        }).done((data) => {
3830            if (data != '' && data != undefined && data[0].tipo === 'sucesso') {
3831                hs_web.setPrimeiroAcessoOK();
3832                hs_web.criarSessao(data);
3833                CAD_LOGIN = true;
3834            } else {
3835                hs_web.criarToast('5000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
3836                $(document).ready(() => {
3837                    router.history.current.matched[0].instances.default.loading_two = false;
3838                });
3839                CAD_LOGIN = true;
3840            }
3841        });
3842    }
3843
3844    iniciarSessao(user, password) {
3845        const isReact = typeof window.ReactNativeWebView !== 'undefined';
3846        const data = {
3847            ID_CLIENTE: 0,
3848            USER: user || '',
3849            PASSWORD: password ? md5(password) : '',
3850            APP: app.cordova_app || isReact ? 'S' : 'N',
3851            TOKEN: '',
3852            ACTION: 'getValidaLogin',
3853            MANTER_CONNECTADO: router.history.current.matched[0].instances.default.manter_conectado,
3854        };
3855
3856        const criar_toast = this.criarToast;
3857        const request = this.requestValidaLoginIniciarSessao;
3858
3859        try {
3860            if (typeof window.ReactNativeWebView !== 'undefined') {
3861                return postMessageMobile('firebase_token').then((event) => {
3862                    if (JSON.parse(event.data).token) {
3863                        data.TOKEN = JSON.parse(event.data).token;
3864                    } else {
3865                        data.TOKEN = JSON.parse(event.data).retorno;
3866                    }
3867                    request(data, criar_toast);
3868                });
3869            } if (app.cordova_app) {
3870                window.FirebasePlugin.grantPermission();
3871                window.FirebasePlugin.getToken((token) => {
3872                    data.TOKEN = token;
3873                    request(data, criar_toast);
3874                });
3875
3876                return;
3877            }
3878
3879            request(data, criar_toast);
3880        } catch (e) {
3881            return `Exception Class HotsiteWeb -> iniciarSessao() -> ${e}`;
3882        }
3883    }
3884
3885    requestValidaLoginIniciarSessao(dados, criar_toast) {
3886        const manter_conectado = dados.MANTER_CONNECTADO;
3887        setTimeout(() => {
3888            if (router.history.current.matched[0].instances.default.loading) {
3889                router.replace('/central_assinante_web/');
3890            }
3891        }, 15000);
3892
3893        $.post(`${__SERVER__}/model/login/login.php`, dados, (data) => {
3894            data = JSON.parse(data);
3895
3896            if (data != '' && data != undefined) {
3897                if (data[0].tipo == 'sucesso') {
3898                    $(document).ready(() => {
3899                        app.login = false;
3900                    });
3901
3902                    if (router.history.current.matched[0].instances.default.manter_conectado === true) {
3903                        localStorage.setItem('dados', JSON.stringify(data[0].mensagem.dados_cliente));
3904                        localStorage.setItem('parametros', JSON.stringify(data[0].mensagem.parametros_hotsite));
3905                        localStorage.setItem('sessao', JSON.stringify(data[0].mensagem.sessao));
3906                        localStorage.setItem('manter_conectado', $.cookie('manter_conectado'));
3907                        $.cookie('sessao', data[0].mensagem.sessao);
3908                    } else {
3909                        sessionStorage.setItem('dados', JSON.stringify(data[0].mensagem.dados_cliente));
3910                        sessionStorage.setItem('parametros', JSON.stringify(data[0].mensagem.parametros_hotsite));
3911                        sessionStorage.setItem('sessao', JSON.stringify(data[0].mensagem.sessao));
3912                        $.cookie('sessao', data[0].mensagem.sessao);
3913                    }
3914
3915                    __DADOS_CLIENTE__.push(data[0].mensagem.dados_cliente);
3916                    __PARAMETROS__.push(data[0].mensagem.parametros_hotsite);
3917
3918                    let parametros = null;
3919                    let dados_cliente = null;
3920
3921                    if (router.history.current.matched[0].instances.default.manter_conectado === true) {
3922                        parametros = JSON.parse(localStorage.getItem('parametros'));
3923                        dados_cliente = JSON.parse(localStorage.getItem('dados'));
3924                    } else {
3925                        parametros = JSON.parse(sessionStorage.getItem('parametros'));
3926                        dados_cliente = JSON.parse(sessionStorage.getItem('dados'));
3927                    }
3928
3929                    const fantasia = dados_cliente.fantasia.split(' ')[0];
3930                    const razao = dados_cliente.razao.split(' ')[0];
3931                    const identifica_nome = parametros.identificacao_central_assinante;
3932                    const cliente_nome = (identifica_nome === 'F' ? (fantasia || razao) : razao);
3933
3934                    app.pg_fatura = parametros.habilitar_financeiro;
3935                    app.pg_plano = parametros.habilitar_contratos;
3936                    app.pg_nota = parametros.mostra_menu_nota_app;
3937                    app.pg_consumo = parametros.habilitar_extrato_internet;
3938                    app.pg_atendimento = parametros.habilitar_suporte;
3939                    app.pg_declaracao_debito = parametros.habilitar_declaracao_debitos;
3940                    app.pg_alterar_senha = parametros.habilitar_altera_senha;
3941                    app.pg_exibir_detalhamento_financeiro = parametros.exibir_detalhamento_financeiro;
3942                    app.pg_connections = parametros.habilitar_menu_conexao;
3943                    app.habilitar_recorrencia = parametros.habilitar_recorrencia !== 'N';
3944
3945                    app.url_app_android = parametros.url_app_android;
3946
3947                    app.mostra_builder = parametros.FN;
3948                    app.is_fn = parametros.FN;
3949                    app.habilitar_contato = parametros.habilitar_contato;
3950                    app.whatsapp_link = parametros.whatsapp_link;
3951                    app.webchat_link = parametros.webchat_link;
3952                    app.telefone_contato = parametros.telefone_contato;
3953
3954                    if (dados_cliente.primeiro_acesso_central === 'S' && parametros.alterar_senha_primeiro_acesso === 'S' && dados_cliente.alterar_senha_primeiro_acesso !== 'N' && app.tipo_login === 'E') {
3955                        app.habilitar_form_primeiro_acesso = true;
3956                    }
3957
3958                    if (parametros.FRANQUIA) {
3959                        if (parametros.HOSTFRANQUIA) {
3960                            const form = document.createElement('form');
3961                            form.method = 'POST';
3962                            form.action = `${parametros.HOSTFRANQUIA}central_assinante_web/model/login/login.php`;
3963
3964                            const input = document.createElement('input');
3965                            input.name = 'USER';
3966                            input.value = dados.USER;
3967
3968                            form.appendChild(input);
3969
3970                            const token = document.createElement('input');
3971                            token.name = 'TOKEN';
3972                            token.value = dados.TOKEN;
3973
3974                            form.appendChild(token);
3975
3976                            const senha = document.createElement('input');
3977                            senha.name = 'PASSWORD';
3978                            senha.value = dados.PASSWORD;
3979
3980                            form.appendChild(senha);
3981
3982                            const action = document.createElement('input');
3983                            action.name = 'ACTION';
3984                            action.value = 'getValidaLogin2';
3985
3986                            form.appendChild(action);
3987
3988                            const manter_conectado = document.createElement('input');
3989                            manter_conectado.name = 'MANTER_CONECTADO';
3990                            manter_conectado.value = router.history.current.matched[0].instances.default.manter_conectado ? 'S' : 'N';
3991
3992                            form.appendChild(manter_conectado);
3993
3994                            document.body.appendChild(form);
3995                            form.submit();
3996                        }
3997                    } else {
3998                        if (parametros.hotsite_logo_base) {
3999                            app.logo_base = `data:application/image;base64,${parametros.hotsite_logo_base}`;
4000                        } else {
4001                            app.logo_base = `${__SERVER__}/assets/img/logo.png`;
4002                        }
4003
4004                        FATURA_TOAST = true;
4005                        PLANO_TOAST = true;
4006                        ATENDIMENTO_TOAST = true;
4007
4008                        $(document).ready(() => {
4009                            router.history.current.matched[0].instances.default.loading = false;
4010                            if (app.habilitar_form_primeiro_acesso) {
4011                                app.login = false;
4012                                new HotsiteWeb().removeCache();
4013                                router.history.current.matched[0].instances.default.habilitar_form_primeiro_acesso = true;
4014                                // new HotsiteWeb().getRecuperaSenhaTipo().then((tipo)=>{
4015                                //     router.history.current.matched[0].instances.default.recupera_senha_tipo=tipo
4016                                router.replace('central_assinante_web/login');
4017                                // });
4018                            } else {
4019                                router.replace('central_assinante_web');
4020                            }
4021                        });
4022                    }
4023                } else {
4024                    router.history.current.matched[0].instances.default.loading = false;
4025                    criar_toast('5000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', true, '', 'topCenter');
4026                }
4027            } else {
4028                router.history.current.matched[0].instances.default.loading = false;
4029                criar_toast('5000', 'Erro!', data[0].mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', true, '', 'topCenter');
4030            }
4031        }).fail((e) => {
4032            router.history.current.matched[0].instances.default.loading = false;
4033            criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4034        });
4035    }
4036
4037    validaSessao() {
4038        app.login = true;
4039        let sessao_existe = false;
4040        const hs_web = new HotsiteWeb();
4041
4042        if (localStorage.getItem('manter_conectado')) {
4043            $.cookie('manter_conectado', localStorage.getItem('manter_conectado'));
4044        }
4045
4046        let dados = null;
4047        if (JSON.parse(localStorage.getItem('dados')) || JSON.parse(sessionStorage.getItem('dados'))) {
4048            if ($.cookie('manter_conectado') == 'S') {
4049                dados = JSON.parse(localStorage.getItem('dados'));
4050            } else {
4051                dados = JSON.parse(sessionStorage.getItem('dados'));
4052            }
4053
4054            if (!dados) {
4055                hs_web.removeCache();
4056                return;
4057            }
4058        }
4059
4060        let parametros = null;
4061        let cacheParams = {
4062            local: JSON.parse(localStorage.getItem('parametros')),
4063            session: JSON.parse(sessionStorage.getItem('parametros')),
4064        }
4065
4066        if (cacheParams.local || cacheParams.session) {
4067            parametros = ($.cookie('manter_conectado') == 'S' && cacheParams.local) ? cacheParams.local : cacheParams.session
4068            if (parametros.hotsite_logo_base) {
4069                app.logo_base = `data:application/image;base64,${parametros.hotsite_logo_base}`;
4070            } else {
4071                app.logo_base = `${__SERVER__}/assets/img/logo.png`;
4072            }
4073        }
4074
4075        if (dados && parametros) {
4076            const fantasia = dados.fantasia.split(' ')[0];
4077            const razao = dados.razao.split(' ')[0];
4078            const identifica_nome = parametros.identificacao_central_assinante;
4079            const cliente_nome = (identifica_nome === 'F' ? (fantasia || razao) : razao);
4080            app.cliente_nome = cliente_nome;
4081        }
4082
4083        if (localStorage.getItem('sessao') || sessionStorage.getItem('sessao')) {
4084            var sessao = null;
4085
4086            if ($.cookie('manter_conectado') == 'S') {
4087                sessao = JSON.parse(localStorage.getItem('sessao'));
4088            } else {
4089                sessao = JSON.parse(sessionStorage.getItem('sessao'));
4090            }
4091
4092            if (sessao && !$.cookie('sessao')) {
4093                $.cookie('sessao', sessao);
4094            }
4095
4096            app.sessao = sessao;
4097        }
4098
4099        if (dados && parametros && sessao && $.cookie('manter_conectado')) {
4100            const dados_consulta = 'ACTION=getValidaSessao';
4101            $.ajax({
4102                url: `${__SERVER__}/model/login/login.php`,
4103                type: 'POST',
4104                data: dados_consulta,
4105                dataType: 'JSON',
4106                async: false,
4107            }).done((data) => {
4108                if (data[0].tipo == 'sucesso') {
4109                    if (data[0].mensagem.FRANQUIA) {
4110                        if (data[0].mensagem.HOSTFRANQUIA) {
4111                            window.location.href = `${data[0].mensagem.HOSTFRANQUIA}central_assinante_web/`;
4112                        } else {
4113                            const hs_web = new HotsiteWeb();
4114                            hs_web.encerrarSessaoHotsite();
4115                            sessao_existe = false;
4116                        }
4117                    }
4118                    sessao_existe = true;
4119                } else {
4120                    sessao_existe = false;
4121                }
4122            });
4123        }
4124
4125        if (sessao_existe) {
4126            app.login = false;
4127            app.loading = false;
4128            return true;
4129        }
4130
4131        if ($.cookie('manter_conectado') == 'S') {
4132            sessionStorage.removeItem('dados');
4133            sessionStorage.removeItem('parametros');
4134            localStorage.removeItem('parametros');
4135            sessionStorage.removeItem('sessao');
4136            sessionStorage.removeItem('manter_conectado');
4137            $.removeCookie('manter_conectado');
4138            $.removeCookie('sessao');
4139        }
4140
4141        app.login = true;
4142        app.loading = false;
4143        return false;
4144    }
4145
4146    encerrarSessaoHotsite() {
4147        const data = {
4148            ID_CLIENTE: 0,
4149            ACTION: 'setEncerrarSessao',
4150        };
4151
4152        const criar_toast = this.criarToast;
4153        const buscar_tipo_login = this.buscarTipoLogin;
4154
4155        try {
4156            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
4157                data = JSON.parse(data);
4158
4159                if (data != '' && data != undefined) {
4160                    if (data[0].tipo == 'sucesso') {
4161                        if ($.cookie('manter_conectado') == 'S') {
4162                            localStorage.removeItem('dados');
4163                            localStorage.removeItem('parametros');
4164                            sessionStorage.removeItem('parametros');
4165                            localStorage.removeItem('sessao');
4166                            localStorage.removeItem('manter_conectado');
4167                        } else {
4168                            sessionStorage.removeItem('dados');
4169                            localStorage.removeItem('parametros');
4170                            sessionStorage.removeItem('parametros');
4171                            sessionStorage.removeItem('sessao');
4172                            sessionStorage.removeItem('manter_conectado');
4173                        }
4174
4175                        $.removeCookie('manter_conectado');
4176                        $.removeCookie('sessao');
4177
4178                        __DADOS_CLIENTE__.splice(0, __DADOS_CLIENTE__.length);
4179                        __PARAMETROS__.splice(0, __PARAMETROS__.length);
4180                        app.login = true;
4181                        buscar_tipo_login(criar_toast);
4182                    } else {
4183                        criar_toast('2000', 'Erro!', 'Erro ao encerrar a sessao', 'fas fa-exclamation-circle', 'red', 'id_erro');
4184                        router.replace('central_assinante_web/login');
4185                    }
4186                }
4187            }).fail((e) => {
4188                criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4189            });
4190        } catch (e) {
4191            return `Exception Class HotsiteWeb -> encerrarSessaoHotsite() -> ${e}`;
4192        }
4193    }
4194
4195    validaExisteDados() {
4196        if ((localStorage.getItem('dados') && localStorage.getItem('parametros')) || (sessionStorage.getItem('dados') && sessionStorage.getItem('parametros'))) {
4197            if (!__DADOS_CLIENTE__.length) {
4198                if ($.cookie('manter_conectado') == 'S') {
4199                    __DADOS_CLIENTE__.push(JSON.parse(localStorage.getItem('dados')));
4200                } else {
4201                    __DADOS_CLIENTE__.push(JSON.parse(sessionStorage.getItem('dados')));
4202                }
4203            }
4204
4205            if (!__PARAMETROS__.length) {
4206                if ($.cookie('manter_conectado') == 'S') {
4207                    __PARAMETROS__.push(JSON.parse(localStorage.getItem('parametros')));
4208                } else {
4209                    __PARAMETROS__.push(JSON.parse(sessionStorage.getItem('parametros')));
4210                }
4211            }
4212
4213            if (localStorage.getItem('manter_conectado')) {
4214                $.cookie('manter_conectado', localStorage.getItem('manter_conectado'));
4215            }
4216
4217            let parametros = null;
4218            let cacheParams = {
4219                local: JSON.parse(localStorage.getItem('parametros')),
4220                session: JSON.parse(sessionStorage.getItem('parametros')),
4221            }
4222            parametros = ($.cookie('manter_conectado') == 'S' && cacheParams.local) ? cacheParams.local : cacheParams.session;
4223
4224            app.pg_fatura = parametros.habilitar_financeiro;
4225            app.pg_plano = parametros.habilitar_contratos;
4226            app.pg_nota = parametros.mostra_menu_nota_app;
4227            app.pg_consumo = parametros.habilitar_extrato_internet;
4228            app.pg_atendimento = parametros.habilitar_suporte;
4229            app.pg_declaracao_debito = parametros.habilitar_declaracao_debitos;
4230            app.pg_alterar_senha = parametros.habilitar_altera_senha;
4231            app.pg_exibir_detalhamento_financeiro = parametros.exibir_detalhamento_financeiro;
4232            app.pg_connections = parametros.habilitar_menu_conexao;
4233
4234            app.sms_fatura = parametros.envia_sms_app;
4235            app.email_fatura = parametros.envia_email_app;
4236            app.imprime_venda_fatura = parametros.imprime_venda_fatura_app;
4237
4238            app.cad_cli_fantasia = parametros.cad_cli_fantasia;
4239            app.cad_cli_cpf = parametros.cad_cli_cpf;
4240            app.cad_cli_rg = parametros.cad_cli_rg;
4241            app.cad_cli_data_nascimento = parametros.cad_cli_data_nascimento;
4242            app.cad_cli_telefone = parametros.cad_cli_telefone;
4243            app.cad_cli_celular = parametros.cad_cli_celular;
4244            app.cad_cli_telefone_comercial = parametros.cad_cli_telefone_comercial;
4245            app.cad_cli_ramal = parametros.cad_cli_ramal;
4246            app.cad_cli_cep = parametros.cad_cli_cep;
4247            app.cad_cli_endereco = parametros.cad_cli_endereco;
4248            app.cad_cli_numero = parametros.cad_cli_numero;
4249            app.cad_cli_bairro = parametros.cad_cli_bairro;
4250            app.cad_cli_referencia = parametros.cad_cli_referencia;
4251            app.cad_cli_complemento = parametros.cad_cli_complemento;
4252            app.cad_cli_cidade = parametros.cad_cli_cidade;
4253            app.cad_cli_sexo = parametros.cad_cli_sexo;
4254
4255            app.url_app_android = parametros.url_app_android;
4256
4257            app.mostra_builder = parametros.FN;
4258            app.is_fn = parametros.FN;
4259            app.habilitar_contato = parametros.habilitar_contato;
4260            app.whatsapp_link = parametros.whatsapp_link;
4261            app.webchat_link = parametros.webchat_link;
4262            app.telefone_contato = parametros.telefone_contato;
4263        }
4264    }
4265
4266    resetaCooldown() {
4267        clearInterval(counter);
4268        router.history.current.matched[0].instances.default.cooldown = 300;
4269    }
4270
4271    recuperarSenha(user, cpf) {
4272        const data = {
4273            USER: user,
4274            CPF: cpf,
4275            ACTION: 'setRecuperarSenha',
4276        };
4277
4278        try {
4279            const hs_web = new HotsiteWeb();
4280            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
4281                data = JSON.parse(data);
4282                if (data != '' && data != undefined) {
4283                    if (data.tipo == 'sucesso') {
4284                        hs_web.criarToast('5000', 'Sucesso!', data.mensagem, 'fas fa-check', 'green', 'id_sucesso', true, '', 'topCenter');
4285                    } else {
4286                        hs_web.resetaCooldown();
4287                        hs_web.criarToast('5000', 'Erro!', data.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', true, '', 'topCenter');
4288                    }
4289                    return router.history.current.matched[0].instances.default.loading_senha = false;
4290                }
4291                hs_web.resetaCooldown();
4292                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4293                return router.history.current.matched[0].instances.default.loading_senha = false;
4294            }).fail((e) => {
4295                hs_web.resetaCooldown();
4296                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4297                return router.history.current.matched[0].instances.default.loading_senha = false;
4298            });
4299        } catch (e) {
4300            new HotsiteWeb().resetaCooldown();
4301            router.history.current.matched[0].instances.default.loading_senha = false;
4302            return `Exception Class HotsiteWeb -> encerrarSessaoHotsite() -> ${e}`;
4303        }
4304    }
4305
4306    /** VALIDA BUILDER ACESSES */
4307    validaAcessoBuilder() {
4308        const data = {
4309            ACTION: 'getValidaAcessoBuilder',
4310        };
4311
4312        try {
4313            $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
4314                data = JSON.parse(data);
4315
4316                if (data != '' && data != undefined) {
4317                    if (data.tipo == 'erro') {
4318                        return router.replace('/central_assinante_web/');
4319                    }
4320
4321                    $(document).ready(() => {
4322                        app.loading = false;
4323                        router.history.current.matched[0].instances.default.mostra_builder = true;
4324                    });
4325                    return true;
4326                }
4327
4328                return router.replace('/central_assinante_web/');
4329            }).fail((e) => router.replace('/central_assinante_web/'));
4330        } catch (e) {
4331            return router.replace('/central_assinante_web/');
4332        }
4333    }
4334
4335    /**
4336     * Metodo para esconder o Toast com base na classe CSS passada por parametro
4337     */
4338    esconderToast(classe = '') {
4339        if (classe !== '') {
4340            const toast = document.querySelector(`.${classe}`);
4341
4342            iziToast.hide({}, toast);
4343
4344            iziToast.hide({
4345                transitionOut: 'fadeOutUp',
4346            }, toast);
4347        }
4348    }
4349
4350    /**
4351     * Criar Toast Geral
4352     */
4353    criarToast(timeout, title, message, icon_text, color, id, toast_once = true, classeCSS = '', position = 'topRight') {
4354        if (iziToast) {
4355            iziToast.destroy();
4356        }
4357        iziToast.show({
4358            timeout,
4359            title,
4360            message,
4361            position,
4362            icon: icon_text,
4363            // icon: 'material-icons', // comentado pois impedia a utilização do ícone correto para padronização.
4364            color,
4365            closeOnEscape: true,
4366            id,
4367            toastOnce: toast_once,
4368            class: classeCSS,
4369        });
4370    }
4371
4372    criarToastPendencia(timeout, title, message, icon_text, color, id, botao_pendencia, url_pendencia) {
4373        iziToast.show({
4374            timeout,
4375            title,
4376            message,
4377            position: 'topRight',
4378            iconText: icon_text,
4379            // icon: 'material-icons', // comentado pois impedia a utilização do ícone correto para padronização.
4380            color,
4381            closeOnEscape: true,
4382            id,
4383            toastOnce: true,
4384            buttons: [
4385                [`<button><b>${botao_pendencia}</b></button>`, function (instance, toast) {
4386                    router.replace(ROTA + url_pendencia);
4387                    ANIMA_ICONE = true;
4388                    instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4389                    iziToast.destroy();
4390                }, true],
4391            ],
4392        });
4393    }
4394
4395    criarToastPendenciaAtendimento(timeout, title, message, icon_text, color, id, botao_pendencia, url_pendencia, id_atendimento_toast, validar_mensagem_lida) {
4396        iziToast.show({
4397            timeout,
4398            title,
4399            message,
4400            position: 'topRight',
4401            iconText: icon_text,
4402            icon: 'material-icons',
4403            color,
4404            closeOnEscape: true,
4405            id,
4406            toastOnce: true,
4407            buttons: [
4408                [`<button><b>${botao_pendencia}</b></button>`, function (instance, toast) {
4409                    router.replace(url_pendencia);
4410                    validar_mensagem_lida(id_atendimento_toast);
4411                    instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4412                    iziToast.destroy();
4413                }, true],
4414            ],
4415        });
4416    }
4417
4418    /**
4419     * Criar toast de finalização de atendimento
4420     */
4421    criarToastFinalizar(id_atendimento) {
4422        const data = {
4423            ID_ATENDIMENTO: id_atendimento || 0,
4424        };
4425
4426        const finalizar_atendimento = this.finalizarAtendimento;
4427        const criar_toast = this.criarToast;
4428        const valida_resize_home = this.validaResizeHome;
4429        const valida_resize_atendimentos = this.validaResizeAtendimentos;
4430        const valida_loading_function = this.validaLoading;
4431        const buscar_atendimentos = this.buscarAtendimentos;
4432        let mensagem = '';
4433        const validar_mensagem_lida = this.validarMensagemLida;
4434
4435        iziToast.info({
4436            timeout: 99999999999,
4437            overlay: true,
4438            class: 'toastFinalizar',
4439            toastOnce: true,
4440            id: 'inputs',
4441            zindex: 999,
4442            message: 'Por favor, informe um motivo para finalizar o atendimento.',
4443            position: 'center',
4444            drag: false,
4445            backgroundColor: 'white',
4446            inputs: [
4447                ['<textarea v-model="mensagem_finalizacao" required rows="4" cols="50">', 'keydown', function (instance, toast, input, e) {
4448                    mensagem = input.value;
4449                }],
4450            ],
4451            buttons: [
4452                ['<button><b>Finalizar</b></button>', function (instance, toast) {
4453                    finalizar_atendimento(id_atendimento, [], SLICE_ATENDIMENTO, mensagem, criar_toast, buscar_atendimentos, valida_resize_home, valida_resize_atendimentos, valida_loading_function, validar_mensagem_lida);
4454                    instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4455                }, true],
4456            ],
4457        });
4458    }
4459
4460    /**
4461     * Criar toast de comprovante de pagamento
4462     */
4463    criarToastComprovante(id_receber, recorrente) {
4464        const data = {
4465            ID_RECEBER0: id_receber || 0,
4466        };
4467
4468        const hs_web = new HotsiteWeb();
4469
4470        let campos = [];
4471        if (!recorrente) {
4472            campos = [
4473                ['<button><b>Imprimir</b></button>', function (instance, toast) {
4474                    hs_web.comprovantePagamento(id_receber, 'N');
4475                    instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4476                }, true],
4477                ['<button><b>Enviar por E-mail</b></button>', function (instance, toast) {
4478                    hs_web.comprovantePagamento(id_receber, 'S');
4479                    instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4480                }, true],
4481            ];
4482        } else {
4483            campos = [['<button><b>Imprimir</b></button>', function (instance, toast) {
4484                hs_web.comprovantePagamento(id_receber, 'N');
4485                instance.hide({ transitionOut: 'fadeOut' }, toast, 'button');
4486            }, true]];
4487        }
4488
4489        iziToast.info({
4490            timeout: 99999999999,
4491            overlay: true,
4492            class: 'toastFinalizar',
4493            toastOnce: true,
4494            id: 'inputs',
4495            zindex: 999,
4496            message: 'O que deseja fazer com seu comprovante?',
4497            position: 'center',
4498            drag: false,
4499            backgroundColor: 'white',
4500            buttons: campos,
4501        });
4502    }
4503
4504    /** Valida Resize */
4505    validaResizeHome() {
4506        router.history.current.matched[0].instances.default.tamanho = $(window).width();
4507        if ($(window).width() < 481) {
4508            const faturas = router.history.current.matched[0].instances.default.faturas.notifi_dash;
4509            const planos = router.history.current.matched[0].instances.default.planos.contratos_dash;
4510            const atendimentos = router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash;
4511
4512            if (faturas && faturas.length > 0) {
4513                for (let x = 0; x < faturas.length; x++) {
4514                    faturas[x].mostrar_detalhes = true;
4515                }
4516            }
4517
4518            if (planos && planos.length > 0) {
4519                for (let x = 0; x < planos.length; x++) {
4520                    planos[x].mostrar_detalhes = true;
4521                }
4522            }
4523
4524            for (let x = 0; x < atendimentos.length; x++) {
4525                atendimentos[x].mostrar_detalhes = false;
4526            }
4527
4528            if (faturas && faturas.length > 0) {
4529                router.history.current.matched[0].instances.default.faturas.notifi_dash = faturas;
4530            }
4531            router.history.current.matched[0].instances.default.planos.contratos_dash = planos;
4532            router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash = atendimentos;
4533        } else {
4534            const faturas = router.history.current.matched[0].instances.default.faturas.notifi_dash;
4535            const planos = router.history.current.matched[0].instances.default.planos.contratos_dash;
4536            const atendimentos = router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash;
4537
4538            if (faturas && faturas.length > 0) {
4539                for (let x = 0; x < faturas.length; x++) {
4540                    faturas[x].mostrar_detalhes = true;
4541                }
4542            }
4543
4544            if (planos && planos.length > 0) {
4545                for (let x = 0; x < planos.length; x++) {
4546                    planos[x].mostrar_detalhes = true;
4547                }
4548            }
4549
4550            for (let x = 0; x < atendimentos.length; x++) {
4551                atendimentos[x].mostrar_detalhes = true;
4552            }
4553
4554            if (faturas && faturas.length > 0) {
4555                router.history.current.matched[0].instances.default.faturas.notifi_dash = faturas;
4556            }
4557
4558            router.history.current.matched[0].instances.default.planos.contratos_dash = planos;
4559            router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash = atendimentos;
4560        }
4561    }
4562
4563    validaResizeFaturas() {
4564        router.history.current.matched[0].instances.default.tamanho = $(window).width();
4565        if ($(window).width() < 481) {
4566            const { faturas } = router.history.current.matched[0].instances.default.faturas;
4567
4568            for (let x = 0; x < faturas.length; x++) {
4569                faturas[x].mostrar_detalhes = false;
4570            }
4571
4572            if (faturas.length > 0) {
4573                faturas[0].mostrar_detalhes = true;
4574            }
4575            router.history.current.matched[0].instances.default.faturas.notifi_dash = faturas;
4576        } else {
4577            const faturas = router.history.current.matched[0].instances.default.faturas.notifi_dash;
4578
4579            for (let x = 0; x < faturas.length; x++) {
4580                faturas[x].mostrar_detalhes = true;
4581            }
4582
4583            router.history.current.matched[0].instances.default.faturas.notifi_dash = faturas;
4584        }
4585    }
4586
4587    validaResizePlanos() {
4588        router.history.current.matched[0].instances.default.tamanho = $(window).width();
4589        if ($(window).width() < 767) {
4590            const { planos } = router.history.current.matched[0].instances.default.planos;
4591
4592            for (let x = 0; x < planos.length; x++) {
4593                planos[x].mostrar_detalhes = false;
4594            }
4595
4596            if (planos.length > 0) {
4597                planos[0].mostrar_detalhes = true;
4598            }
4599
4600            router.history.current.matched[0].instances.default.planos.contratos_dash = planos;
4601        } else {
4602            const planos = router.history.current.matched[0].instances.default.planos.contratos_dash;
4603
4604            for (let x = 0; x < planos.length; x++) {
4605                planos[x].mostrar_detalhes = true;
4606            }
4607
4608            router.history.current.matched[0].instances.default.planos.contratos_dash = planos;
4609        }
4610    }
4611
4612    validaResizeAtendimentos() {
4613        router.history.current.matched[0].instances.default.tamanho = $(window).width();
4614        if ($(window).width() < 768) {
4615            const { atendimentos } = router.history.current.matched[0].instances.default.atendimentos;
4616
4617            for (let x = 0; x < atendimentos.length; x++) {
4618                atendimentos[x].mostrar_detalhes = false;
4619            }
4620
4621            if (atendimentos.length > 0) {
4622                atendimentos[0].mostrar_detalhes = true;
4623            }
4624            router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash = atendimentos;
4625        } else {
4626            const atendimentos = router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash;
4627
4628            for (let x = 0; x < atendimentos.length; x++) {
4629                atendimentos[x].mostrar_detalhes = true;
4630            }
4631
4632            router.history.current.matched[0].instances.default.atendimentos.atendimentos_dash = atendimentos;
4633        }
4634    }
4635
4636    validaResizeNotas() {
4637        router.history.current.matched[0].instances.default.tamanho = $(window).width();
4638    }
4639
4640    validaLoading() {
4641        if (!LOADING_FATURA && !LOADING_FRANQUIA && !LOADING_PLANO && !LOADING_ATENDIMENTO && !LOADING_CONNECTIONS) {
4642            router.history.current.matched[0].instances.default.is_safari = IS_SAFARI;
4643            router.history.current.matched[0].instances.default.loading = false;
4644            router.history.current.matched[0].instances.default.mostrar_atendimento = 'S';
4645
4646            const hs_web = new HotsiteWeb();
4647            hs_web.setarPermissaoHome();
4648
4649            app.loading = false;
4650
4651            $(document).ready(() => {
4652                validaActiveClass('#pg_home');
4653                const hs_web = new HotsiteWeb();
4654
4655                hs_web.setarPermissaoHome();
4656            });
4657        }
4658    }
4659
4660    /** PERMISSOES * */
4661    setarPermissaoHome() {
4662        $(document).ready(() => {
4663            router.history.current.matched[0].instances.default.mostrar_franquia = app.pg_consumo;
4664            router.history.current.matched[0].instances.default.mostrar_fatura = app.pg_fatura;
4665            router.history.current.matched[0].instances.default.mostrar_plano = app.pg_plano;
4666            router.history.current.matched[0].instances.default.mostrar_atendimento = app.pg_atendimento;
4667            router.history.current.matched[0].instances.default.sms_fatura = app.sms_fatura;
4668            router.history.current.matched[0].instances.default.email_fatura = app.email_fatura;
4669            router.history.current.matched[0].instances.default.imprime_venda_fatura = app.imprime_venda_fatura;
4670            router.history.current.matched[0].instances.default.exibir_detalhamento_financeiro = app.pg_exibir_detalhamento_financeiro;
4671            router.history.current.matched[0].instances.default.mostrar_connections = app.connections;
4672        });
4673    }
4674
4675    setarPermissaoFaturas() {
4676        $(document).ready(() => {
4677            router.history.current.matched[0].instances.default.sms_fatura = app.sms_fatura;
4678            router.history.current.matched[0].instances.default.email_fatura = app.email_fatura;
4679            router.history.current.matched[0].instances.default.imprime_venda_fatura = app.imprime_venda_fatura;
4680        });
4681    }
4682
4683    setarPermissaoDadosCliente() {
4684        $(document).ready(() => {
4685            router.history.current.matched[0].instances.default.cad_cli_fantasia = app.cad_cli_fantasia;
4686            router.history.current.matched[0].instances.default.cad_cli_cpf = app.cad_cli_cpf;
4687            router.history.current.matched[0].instances.default.cad_cli_rg = app.cad_cli_rg;
4688            router.history.current.matched[0].instances.default.cad_cli_data_nascimento = app.cad_cli_data_nascimento;
4689            router.history.current.matched[0].instances.default.cad_cli_telefone = app.cad_cli_telefone;
4690            router.history.current.matched[0].instances.default.cad_cli_celular = app.cad_cli_celular;
4691            router.history.current.matched[0].instances.default.cad_cli_telefone_comercial = app.cad_cli_telefone_comercial;
4692            router.history.current.matched[0].instances.default.cad_cli_ramal = app.cad_cli_ramal;
4693            router.history.current.matched[0].instances.default.cad_cli_cep = app.cad_cli_cep;
4694            router.history.current.matched[0].instances.default.cad_cli_endereco = app.cad_cli_endereco;
4695            router.history.current.matched[0].instances.default.cad_cli_numero = app.cad_cli_numero;
4696            router.history.current.matched[0].instances.default.cad_cli_bairro = app.cad_cli_bairro;
4697            router.history.current.matched[0].instances.default.cad_cli_referencia = app.cad_cli_referencia;
4698            router.history.current.matched[0].instances.default.cad_cli_complemento = app.cad_cli_complemento;
4699            router.history.current.matched[0].instances.default.cad_cli_cidade = app.cad_cli_cidade;
4700            router.history.current.matched[0].instances.default.cad_cli_sexo = app.cad_cli_sexo;
4701        });
4702    }
4703
4704    setFavIcon() {
4705        const data = {
4706            ACTION: 'getFavIcon',
4707        };
4708        const criar_toast = this.criarToast;
4709
4710        $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
4711            data = JSON.parse(data);
4712
4713            const docHead = document.getElementsByTagName('head')[0];
4714            const newLink = document.createElement('link');
4715            newLink.rel = 'shortcut icon';
4716            newLink.href = `data:image/png;base64,${data}`;
4717            docHead.appendChild(newLink);
4718        }).fail((e) => {
4719            criar_toast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4720        });
4721    }
4722
4723    removeCache() {
4724        if (localStorage.getItem('dados')) {
4725            localStorage.removeItem('dados');
4726        }
4727
4728        if (localStorage.getItem('parametros')) {
4729            localStorage.removeItem('parametros');
4730        }
4731
4732        if (localStorage.getItem('sessao')) {
4733            localStorage.removeItem('sessao');
4734        }
4735
4736        if (localStorage.getItem('manter_conectado')) {
4737            localStorage.removeItem('manter_conectado');
4738        }
4739
4740        if (sessionStorage.getItem('dados')) {
4741            sessionStorage.removeItem('dados');
4742        }
4743
4744        if (sessionStorage.getItem('parametros')) {
4745            sessionStorage.removeItem('parametros');
4746        }
4747        if (sessionStorage.getItem('sessao')) {
4748            sessionStorage.removeItem('sessao');
4749        }
4750
4751        if (sessionStorage.getItem('manter_conectado')) {
4752            sessionStorage.removeItem('manter_conectado');
4753        }
4754
4755        router.replace('/central_assinante_web/login');
4756    }
4757
4758    getContratosRecorrentes() {
4759        const hs_web = new HotsiteWeb();
4760
4761        const data = {
4762            ACTION: 'getContratosRecorrentes',
4763        };
4764
4765        try {
4766            $.post(`${__SERVER__}/model/configuracoes/configuracoes.php`, data, (data) => {
4767                try {
4768                    data = JSON.parse(data);
4769                } catch (e) {
4770                    data = data;
4771                }
4772                if (data != '' && data != undefined) {
4773                    if (data.tipo == 'sucesso') {
4774                        router.history.current.matched[0].instances.default.contratos_recorrentes = data.mensagem;
4775                    } else {
4776                        hs_web.criarToast('2000', 'Erro!', `${data.mensagem}.`, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
4777                    }
4778                }
4779
4780                return app.loading = false;
4781            }).fail((e) => {
4782                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro', false);
4783            });
4784        } catch (e) {
4785            return `Exception Class HotsiteWeb -> getContratosRecorrentes() -> ${e}`;
4786        }
4787    }
4788
4789    setCancelarRecorrencias(contratos) {
4790        const hs_web = new HotsiteWeb();
4791
4792        const data = {
4793            CONTRATOS: contratos || [],
4794            ACTION: 'setCancelarRecorrencias',
4795        };
4796
4797        try {
4798            $.post(`${__SERVER__}/model/configuracoes/configuracoes.php`, data, (data) => {
4799                try {
4800                    data = JSON.parse(data);
4801                } catch (e) {
4802                    data = data;
4803                }
4804                if (data != '' && data != undefined) {
4805                    if (data.tipo == 'sucesso') {
4806                        let contractIds = [];
4807
4808                        contratos.map((contrato) => {
4809                            contractIds.push(contrato.id);
4810                        });
4811
4812                        contractIds = contractIds.join(',');
4813
4814                        router.history.current.matched[0].instances.default.contratos_recorrentes = data.mensagem;
4815                        hs_web.criarToast('4000', 'Sucesso!', `O pagamento recorrente foi cancelado para o(s) contrato(s) ${contractIds}.`, 'fas fa-check', 'green', 'id_sucesso');
4816                    } else {
4817                        hs_web.criarToast('4000', 'Erro!', `${data.mensagem}.`, 'fas fa-exclamation-circle', 'red', 'id_erro', false);
4818                    }
4819                }
4820
4821                return app.loading = false;
4822            }).fail((e) => {
4823                hs_web.criarToast('5000', 'Erro!', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro', false);
4824            });
4825            router.history.current.matched[0].instances.default.contratos_marcados = [];
4826        } catch (e) {
4827            return `Exception Class HotsiteWeb -> setCancelarRecorrencias() -> ${e}`;
4828        }
4829    }
4830
4831    montarModalConsultaFatura(fatura) {
4832        app.consultar_fatura_modal = fatura;
4833        app.modal_nome = `Fatura ${fatura.id}`;
4834        $('.main-panel').css('opacity', '0.3');
4835        $('#modalConsultarFatura').on('hidden.bs.modal', () => {
4836            if ($('#modalSelecionarBanco').css('display') == 'none') {
4837                $('.main-panel').css('opacity', '1');
4838            }
4839        });
4840
4841        $('#modalConsultarFatura').on('shown.bs.modal', (e) => {
4842            $('.topbar , .sidebar, #botaoPagarCreditCard, .botoes_fechar').click((e) => {
4843                $('#fecharConsultarFatura').click();
4844            });
4845        });
4846    }
4847
4848    montarModalSelecionarBanco(fatura) {
4849        app.consultar_fatura_modal = fatura;
4850        $('.main-panel').css('opacity', '0.3');
4851        $('#modalSelecionarBanco').on('hidden.bs.modal', () => {
4852            $('.main-panel').css('opacity', '1');
4853        });
4854
4855        $('.topbar .sidebar, #botaoPagarCreditCard, .botoes_fechar').click((e) => {
4856            $('#fecharModalSelecionarBanco').click();
4857        });
4858    }
4859
4860    copiarCodigoBarrasModal(linha_digitavel) {
4861        const hs_web = new HotsiteWeb();
4862        const textArea = document.createElement('input');
4863        textArea.setAttribute('class', 'codigo_de_barras_hidden');
4864        linha_digitavel = linha_digitavel.replaceAll(',', '').replaceAll(' ', '');
4865
4866        textArea.value = linha_digitavel;
4867
4868        document.getElementById('modalConsultarFatura').appendChild(textArea);
4869
4870        if (IS_SAFARI === true) {
4871            const editable = textArea.contentEditable;
4872            const { readOnly } = textArea;
4873            textArea.contentEditable = true;
4874            textArea.readOnly = true;
4875            const range = document.createRange();
4876            range.selectNodeContents(textArea);
4877            const selection = window.getSelection();
4878            selection.removeAllRanges();
4879            selection.addRange(range);
4880            textArea.setSelectionRange(0, 999999);
4881            textArea.contentEditable = editable;
4882            textArea.readOnly = readOnly;
4883        } else {
4884            textArea.select();
4885        }
4886
4887        const successful = document.execCommand('copy');
4888
4889        if (successful) {
4890            hs_web.criarToast(4000, 'Sucesso!', 'Código copiado para área de transferência.', 'fas fa-check', 'green', 'id_sucesso');
4891        } else {
4892            hs_web.criarToast(4000, 'Erro!', 'Não foi possível copiar o código.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4893        }
4894        textArea.parentNode.removeChild(textArea);
4895    }
4896
4897    imprimirFaturaComSelecaoDeBanco(dadosReceber, dadosCarteira) {
4898        this.restoreModalVariavel();
4899
4900        const data = {
4901            ACTION: 'alterarCarteiraFatura',
4902            ID_CONTRATO: dadosReceber.id_contrato,
4903            ID_CONTRATO_AVULSO: dadosReceber.id_contrato_avulso,
4904            ID_NOVA_CARTEIRA: dadosCarteira.id,
4905            ID_RECEBER: dadosReceber.id,
4906            TIPO_RECEBIMENTO_NOVA_CARTEIRA: dadosCarteira.tipo_recebimento,
4907            ID_CARTEIRA_ANTIGA: dadosReceber.id_carteira_cobranca,
4908        };
4909        const criar_toast = this.criarToast;
4910
4911        try {
4912            const mensagemSucesso = dadosCarteira.tipo_recebimento == 'Gateway' ? '30 minutos' : '1 dia';
4913
4914            $.post(`${__SERVER__}/model/faturas/faturas.php`, data, (data) => {
4915                data = JSON.parse(data);
4916                if (data.alterouCarteiraFaturas) {
4917                    $(document).ready(() => {
4918                        app.loading = false;
4919                        router.history.current.matched[0].instances.default.loading = false;
4920                        app.modal_nome = `Fatura ${dadosReceber.id}`;
4921                        $('#fecharModalSelecionarBanco').click();
4922                        this.criarToast('8000', 'Sucesso!', `favor aguardar ${mensagemSucesso} para realizar o pagamento após a seleção do banco da fatura. Ao fechar a impressão a página será recarregada!`, 'fas fa-check', 'green', 'id_sucesso');
4923                        this.imprimirFatura(dadosReceber.id);
4924                        $('#modalImpressao').on('hidden.bs.modal', () => {
4925                            window.location.reload();
4926                        });
4927                    });
4928                    return true;
4929                }
4930                criar_toast('5000', 'Ocorreu um erro ao alterar o banco da fatura. Por favor, tente novamente ou entre em contato com o SUPORTE.', 'id_erro', 'fas fa-exclamation-circle', 'red');
4931                // verificar modificação na base
4932            }).fail((e) => {
4933                router.history.current.matched[0].instances.default.cartao_parcelas = [];
4934                $(document).ready(() => {
4935                    app.loading = false;
4936                    router.history.current.matched[0].instances.default.loading = false;
4937                    validaActiveClass('#pg_fatura');
4938                });
4939                criar_toast('5000', 'Ocorreu um erro no servidor. Por favor, entre em contato com o SUPORTE.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4940            });
4941        } catch (e) {
4942            return `Exception Method buscarParcelas() -> ${e}`;
4943        }
4944    }
4945
4946    montarModalEntreEmContato() {
4947        $('.main-panel').css('opacity', '0.3');
4948        $('#modalEntreEmContato').on('hidden.bs.modal', () => {
4949            $('.main-panel').css('opacity', '1');
4950        });
4951
4952        $('.topbar .sidebar, .botoes_fechar').click((e) => {
4953            $('#fecharModalEntreEmContato').click();
4954        });
4955    }
4956
4957    copiarTelefoneContato(telefoneContato) {
4958        const hs_web = new HotsiteWeb();
4959        const textArea = document.createElement('input');
4960        textArea.value = telefoneContato;
4961
4962        document.getElementById('modalEntreEmContato').appendChild(textArea);
4963
4964        if (IS_SAFARI) {
4965            const editable = textArea.contentEditable;
4966            const { readOnly } = textArea;
4967            textArea.contentEditable = true;
4968            textArea.readOnly = true;
4969            const range = document.createRange();
4970            range.selectNodeContents(textArea);
4971            const selection = window.getSelection();
4972            selection.removeAllRanges();
4973            selection.addRange(range);
4974            textArea.setSelectionRange(0, 999999);
4975            textArea.contentEditable = editable;
4976            textArea.readOnly = readOnly;
4977        } else {
4978            textArea.select();
4979        }
4980
4981        const successful = document.execCommand('copy');
4982        if (successful) {
4983            hs_web.criarToast(4000, 'Sucesso!', 'Telefone copiado com sucesso!', 'fas fa-check', 'green', 'id_sucesso');
4984        } else {
4985            hs_web.criarToast(4000, 'Erro!', 'Não foi possível copiar o telefone.', 'fas fa-exclamation-circle', 'red', 'id_erro');
4986        }
4987        textArea.parentNode.removeChild(textArea);
4988    }
4989
4990    enviarEmailParaResetarSenha(data) {
4991        try {
4992            data.ACTION = 'resetarSenha';
4993            data.server = __SERVER__;
4994            const request = $.ajax({
4995                url: `${__SERVER__}/model/login/login.php`,
4996                type: 'POST',
4997                data,
4998            });
4999            request.done((response) => {
5000                const result = JSON.parse(response);
5001                const hotsiteWeb = new HotsiteWeb();
5002                if (result.tipo === 'sucesso') {
5003                    hotsiteWeb.criarToast('5000', 'Sucesso!', result.mensagem, 'fas fa-check', 'green', 'id_sucesso', true, '', 'topCenter');
5004                } else {
5005                    hotsiteWeb.criarToast('5000', 'Erro!', result.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro', true, '', 'topCenter');
5006                }
5007                hotsiteWeb.resetaCooldown();
5008            });
5009        } catch (error) {
5010            new HotsiteWeb().resetaCooldown();
5011            return `Exception Class HotsiteWeb -> enviarEmailParaResetarSenha() -> ${error}`;
5012        }
5013    }
5014
5015    salvarNovaSenha(data) {
5016        try {
5017            app.loading = true;
5018            data.ACTION = 'salvarNovaSenha';
5019            const request = $.ajax({
5020                url: `${__SERVER__}/model/login/login.php`,
5021                type: 'POST',
5022                data,
5023            });
5024            request.done((response) => {
5025                app.loading = false;
5026                const result = JSON.parse(response);
5027                const hotsiteWeb = new HotsiteWeb();
5028                if (result.tipo === 'sucesso') {
5029                    hotsiteWeb.criarToast('5000', 'Sucesso!', result.mensagem, 'fas fa-check', 'green', 'id_sucesso');
5030                    if (localStorage.getItem('trocarSenhaHash')) {
5031                        localStorage.removeItem('trocarSenhaHash');
5032                    }
5033                    setTimeout(() => {
5034                        location.href = `${__SERVER__}/login`;
5035                    }, 5000);
5036                } else {
5037                    hotsiteWeb.criarToast('5000', 'Erro!', result.mensagem, 'fas fa-exclamation-circle', 'red', 'id_erro');
5038                    setTimeout(() => {
5039                        if (result.redirect && result.redirect === 'login') {
5040                            location.href = `${__SERVER__}/login`;
5041                        }
5042                    }, 5000);
5043                }
5044            });
5045        } catch (error) {
5046            app.loading = false;
5047            return `Exception Class HotsiteWeb -> salvarNovaSenha() -> ${error}`;
5048        }
5049    }
5050
5051    partiuClubeDeVantagens() {
5052        const hs_web = new HotsiteWeb();
5053
5054        const data = {
5055            ACTION: 'partiuClubeDeVantagens',
5056        };
5057
5058        try {
5059            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
5060                try {
5061                    data = JSON.parse(data);
5062                } catch (e) {
5063                    return e;
5064                }
5065                if (data != '' && data != undefined) {
5066                    app.pg_partiu_desconto = data.permissao;
5067                    if (data.cnpj_cpf && data.id_integracao) {
5068                        hs_web.gerarLoginAutomaticoPartiu(data.cnpj_cpf, data.id_integracao);
5069                    }
5070                }
5071            });
5072        } catch (e) {
5073            return `Exception Class HotsiteWeb -> partiuClubeDeVantagens() -> ${e}`;
5074        }
5075    }
5076
5077    gerarLoginAutomaticoPartiu(cnpj_cpf, id_integracao) {
5078        const hs_web = new HotsiteWeb();
5079
5080        const data = {
5081            ACTION: 'gerarLoginAutomaticoPartiu',
5082            CNPJ_CPF: cnpj_cpf,
5083            ID_INTEGRACAO: id_integracao,
5084        };
5085
5086        try {
5087            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
5088                try {
5089                    data = JSON.parse(data);
5090                } catch (e) {
5091                    return e;
5092                }
5093                if (data != '' && data != undefined) {
5094                    app.pg_partiu_desconto_link = data.link;
5095                }
5096            });
5097        } catch (e) {
5098            return `Exception Class HotsiteWeb -> gerarLoginAutomaticoPartiu() -> ${e}`;
5099        }
5100    }
5101
5102    getAppURL() {
5103        const data = {
5104            ACTION: 'getAppURL',
5105        };
5106
5107        $.get(`${__SERVER__}/model/login/login.php`, data, (data) => {
5108            data = JSON.parse(data);
5109            verificarAppEExecutarOuRedirecionar(data[0].mensagem);
5110        });
5111    }
5112
5113    callSvaIntegration() {
5114        const hs_web = new HotsiteWeb();
5115        const data = {
5116            ACTION: 'callSvaIntegration',
5117        };
5118        try {
5119            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
5120                try {
5121                    data = JSON.parse(data);
5122                } catch (e) {
5123                    return e;
5124                }
5125                app.sva_permission = data.permission;
5126                if (data.permission === 'S') {
5127                    app.svaPlatform = data.integration.plataforma;
5128                    app.svaUsername = data.contract.sva_usuarios_username;
5129                    app.svaExternalId = data.integration.external_id;
5130                    app.svaIntegrationId = data.contract.sva_configuracoes_id;
5131                }
5132            });
5133        } catch (e) {
5134            return `Exception Class HotsiteWeb -> callSvaIntegration() -> ${e}`;
5135        }
5136    }
5137
5138    generateLinkSva(svaData) {
5139        const hs_web = new HotsiteWeb();
5140
5141        const data = {
5142            ACTION: 'generateLinkSva',
5143            SVA_DATA: svaData,
5144        };
5145
5146        try {
5147            $.post(`${__SERVER__}/model/dados_cliente/dados_cliente.php`, data, (data) => {
5148                try {
5149                    data = JSON.parse(data);
5150                    if (data != '' && data != undefined) {
5151                        window.open(data.message.link, '_blank');
5152                    }
5153                } catch (e) {
5154                    return e;
5155                }
5156            });
5157        } catch (e) {
5158            return `Exception Class HotsiteWeb -> generateLinkSva() -> ${e}`;
5159        }
5160    }
5161}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.