testes/js/page/Modulo_Construcao/Funcao/Home/Func_Home.js

679 lines
32 KiB
JavaScript

IniciandoTelaHome();
function IniciandoTelaHome() {
const interval_home = 500; // Tempo em milissegundos (1 segundo)
try {
const checkElements_home = setInterval(() => {
try {
const HomeConstruida = document.getElementById('HomeConstuctor');
if (HomeConstruida) {
// const gerarBole = document.getElementById('gerarBoleto');
//const gerarPDF = document.getElementById('gerarPDF');
// gerarBole.addEventListener('click', gerarBoleto);
// gerarPDF.addEventListener('click', GerarPDF);
//console.log('Funções da tela Home foram iniciadas corretamente')
Data_home();
Servicos_home();
TelaFinanceiro();
async function Servicos_home() {
const { Servicos, ResutadosES } = await EmpresasServicos();
const ServicosPDf = await Servicos.json();
//console.log(ServicosPDf);
const paineServicos = document.getElementById('sevicoDominio');
RespostasServiHome(ResutadosES, paineServicos)
function RespostasServiHome(ResutadosES, paineServicos) {
if (ResutadosES === 500) {/*status 500 leia pfrrrrr*/
paineServicos.innerHTML = `
<div class='Corpo_erro'>
<p>Sem serviços no momento</p>
<h2>Status 404</h2>
</div>`
throw new Error(`Erro na API dos Serviços: ${ResutadosES}`);
}
if (ResutadosES === 404) {
paineServicos.innerHTML = `
<div class='Corpo_erro'>
<h2>Status 404</h2>
<p>Nenhum serviço encontrado</p>
</div>`
throw new Error(`Erro na API dos Serviços: ${ResutadosES}`);
}
if (ResutadosES === 401) {
paineServicos.innerHTML = `
<div class='Corpo_erro'>
<h2>Status 404</h2>
<p>Usuário não autenticado!</p>
</div>`
throw new Error(`Erro na API dos Serviços: ${ResutadosES} `);
}
if (ResutadosES === 502) {
paineServicos.innerHTML = `
<div class='Corpo_erro'>
<h2>Status 404</h2>
<p>Estamos realizando manutenções, volte mais tarde</p>
</div>`
throw new Error(`Erro na API dos Serviços: ${ResutadosES} `);
}
}
// Limpando o painel antes de adicionar os serviços
paineServicos.innerHTML = "";
for (const key in ServicosPDf) {
if (ServicosPDf.hasOwnProperty(key)) {
const servico = ServicosPDf[key];
paineServicos.innerHTML += `<div class="ItemServicos">
<img src="./Acessts/Imagens/Iconis/ferramentas.png">
<div class="PainelTexto">
<p>${servico}</p>
</div>
</div>`;
}
}
}
async function Chamados_home(dia, pesquisaValor = '') {
const { Chamados, ResutadosChamados } = await IntegracaoZamade();
const dataZam = await Chamados.json();
console.log(dataZam)
const ListadeChamados = document.getElementById('ChamadosDominio');
RespostasChamadosHome(ResutadosChamados, ListadeChamados)
function RespostasChamadosHome(ResutadosChamados, ListadeChamados) {
if (ResutadosChamados === 500) {
ListadeChamados.innerHTML = `
<h2>Status 404</h2>
<p>Sem serviços no momento</p>`
throw new Error(`Erro na API dos Chamados: ${ResutadosChamados}`);
}
if (ResutadosChamados === 404) {
ListadeChamados.innerHTML = `
<h2>Status 404</h2>
<p>Nenhum serviço encontrado</p>`
throw new Error(`Erro na API dos Chamados: ${ResutadosChamados}`);
}
if (ResutadosChamados === 401) {
ListadeChamados.innerHTML = `
<h2>Status 404</h2>
<p>Usuário não autenticado!</p>`
throw new Error(`Erro na API dos Chamados: ${ResutadosChamados}`);
}
if (ResutadosChamados === 405) {
ListadeChamados.innerHTML = `
<h2>Nenhum ticket encontrado nos últimos 30 dias.</h2>`;
throw new Error(`Erro na API dos Chamados: ${ResutadosChamados}`);
}
if (ResutadosChamados === 502) {
ListadeChamados.innerHTML = `
<h2>Status 404</h2>
<p>Estamos realizando manutenções, volte mais tarde</p>`
throw new Error(`Erro na API dos Chamados: ${ResutadosChamados} `);
}
}
let htmlContent = '';
let encontrouChamado = false;
// **Filtrando os chamados pela data**
const resultadosFiltrados = dataZam.filter(item => {
const dataAbertura = item.created_at.split("T")[0]; // "2025-01-14"
//console.log("Valor á ser pesquisado " + dia)
return dataAbertura === dia;
});
// **Filtrando os chamados pela pesquisa**
const chamadosPesquisados = resultadosFiltrados.filter(item =>
item.customer_id.toString().toLowerCase().includes(pesquisaValor.toLowerCase()) ||
item.title.toLowerCase().includes(pesquisaValor.toLowerCase()) ||
item.number.toString().includes(pesquisaValor)
);
//console.log(chamadosPesquisados)
// **Gerando o HTML dos chamados filtrados**
for (let chamado of chamadosPesquisados) {
encontrouChamado = true;
const dataAbertura = chamado.created_at.split("T")[0]; // "2025-01-14"
const horaAbertura = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56"
const EstadoChamado = chamado.state_id;
const IdChamado = chamado.number;
let EstadosChamado = '';
switch (EstadoChamado) {
case 1: EstadosChamado = 'Novo_Nao_Atribuido'; break;
case 2: EstadosChamado = 'Aberto_Em_Análise'; break;
case 3: EstadosChamado = 'Aguardando_Retorno'; break;
case 4: EstadosChamado = 'Solucionado_Fechado'; break;
case 5: EstadosChamado = 'Atencao'; break;
case 6: EstadosChamado = 'Em_Andamento'; break;
case 7: EstadosChamado = 'Atencao'; break;
case 8: EstadosChamado = 'Atencao'; break;
}
htmlContent += `
<div class="CorpoPainelChamado" id="${IdChamado}">
<div class="IconChamado ${EstadosChamado}"></div>
<div class="TituloChamado"><p>${IdChamado}</p></div>
<div class="Data_de_abertura"><p>${dataAbertura} às ${horaAbertura}</p></div>
</div>`;
}
// **Se nenhum chamado for encontrado**
if (!encontrouChamado) {
htmlContent = `<h2 class="MensangemERRO">Nenhum Chamado Encontrado</h2>`;
}
// **Atualiza a interface**
ListadeChamados.innerHTML = htmlContent;
if (ListadeChamados.innerHTML !== "") {
setTimeout(() => {
for (let chamado of chamadosPesquisados) {
const Titulo = chamado.title;
const IdChamado = chamado.number;
const AutorChamado = chamado.customer_id;
const estado = chamado.state_id
const dataAbertura = chamado.created_at.split("T")[0]; // "2025-01-14"
const [anoA, mesA, diaA] = dataAbertura.split("-");
const dataFormatadaA = `${mesA}/${diaA}/${anoA}`; // "01/14/2025"
const horaAbertura = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56"
const dataFechamento = chamado.created_at.split("T")[0]; // "2025-01-14"
const [anoF, mesF, diaF] = dataAbertura.split("-");
const dataFormatadaF = `${mesF}/${diaF}/${anoF}`; // "01/14/2025"
const horaFechamento = chamado.created_at.match(/T(\d{2}:\d{2})/)[1]; // "14:56"
let StadoChamado = 0;
switch (estado) {
case 1: StadoChamado = 'Novo / Não Atribuido'; break;
case 2: StadoChamado = 'Aberto Em Análise'; break;
case 3: StadoChamado = 'Aguardando Retorno'; break;
case 4: StadoChamado = 'Solucionado Fechado'; break;
case 5: StadoChamado = 'Atenção'; break;
case 6: StadoChamado = 'Em Andamento'; break;
case 7: StadoChamado = 'Atenção'; break;
case 8: StadoChamado = 'Atenção'; break;
}
let StadoChamadoClass = 0;
switch (estado) {
case 1: StadoChamadoClass = 'Novo_Nao_Atribuido'; break;
case 2: StadoChamadoClass = 'Aberto_Em_Analise'; break;
case 3: StadoChamadoClass = 'Aguardando_Retorno'; break;
case 4: StadoChamadoClass = 'Solucionado_Fechado'; break;
case 5: StadoChamadoClass = 'Atencao'; break;
case 6: StadoChamadoClass = 'Em_Andamento'; break;
case 7: StadoChamadoClass = 'Atencao'; break;
case 8: StadoChamadoClass = 'Atencao'; break;
}
ConstruirPoup(IdChamado, Titulo, AutorChamado, dataFormatadaA, horaAbertura, dataFormatadaF, horaFechamento, StadoChamado, StadoChamadoClass);
}
}, 0);
}
function ConstruirPoup(Chamado, Titulo, AutorChamado, dataFormatadaA, horaAbertura, dataFormatadaF, horaFechamento, StadoChamado, StadoChamadoClass) {
const chamadoButton = document.getElementById(`${Chamado}`)
if (!chamadoButton) {
console.error(`Elemento com ID ${Chamado} não encontrado.`);
return;
}
chamadoButton.addEventListener('click', AbrirPopupChamados);
function AbrirPopupChamados() {
const PopUp = document.getElementById('PopupHome');
PopUp.style.display = 'flex';
PopUp.classList.add("Chamado")
PopUp.classList.add(StadoChamadoClass)
PopUp.innerHTML = estrutPop();
EncerrarPopUp();
function estrutPop() {
return `
<div class="PainelFechar">
<button id="EncerrarPopup">X</button>
</div>
<div class="PainelConteudo">
<h2>${Titulo}</h2>
<ul>
<li> Autor do chamado - ${AutorChamado} </li>
<li> Data de abertura - ${dataFormatadaA} ás ${horaAbertura} </li>
<li> Data de Fechamento - ${dataFormatadaF} ás ${horaFechamento} </li>
</ul>
</div>
<div class="PainelEstado ${StadoChamadoClass}">
<h2>${StadoChamado}</h2>
</div>
`;
}
function EncerrarPopUp() {
const buttonEncerrar = document.getElementById('EncerrarPopup');
buttonEncerrar.addEventListener('click', Encerar);
function Encerar() {
PopUp.style.display = '';
PopUp.classList.remove("Chamado")
PopUp.classList.remove(StadoChamadoClass)
PopUp.innerHTML = '';
}
}
}
}
}
let DataAtual = null
function Data_home() {
const DiaAtual = document.getElementById('NumeroDodial');
const DiaSemana = document.getElementById('DiaSemana');
const MesAtual = document.getElementById('Mesatual');
let RecebeMes = null;
const AnoAtual = document.getElementById('AnoAtual');
let { dia, mes, ano, data } = CapturandoDatas();
function CapturandoDatas(dataReferencia = new Date()) {
// Verifica se dataReferencia é um objeto Date, se não for, converte
if (!(dataReferencia instanceof Date)) {
dataReferencia = new Date(dataReferencia);
}
const dia = dataReferencia.getDate();
const mes = dataReferencia.getMonth();
const mesesAno = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
const mesNome = mesesAno[dataReferencia.getMonth()];
const ano = dataReferencia.getFullYear();
const diasNoMes = new Date(ano, mes + 1, 0).getDate(); // Último dia do mês
const primeiroDiaSemana = new Date(ano, mes, 1).getDay(); // 0 = Domingo, 1 = Segunda, ..., 6 = Sábado
let MesesDoAnoId;
switch (mesNome) {
case 'Janeiro': MesesDoAnoId = '01'; break;
case 'Fevereiro': MesesDoAnoId = '02'; break;
case 'Março': MesesDoAnoId = '03'; break;
case 'Abril': MesesDoAnoId = '04'; break;
case 'Maio': MesesDoAnoId = '05'; break;
case 'Junho': MesesDoAnoId = '06'; break;
case 'Julho': MesesDoAnoId = '07'; break;
case 'Agosto': MesesDoAnoId = '08'; break;
case 'Setembro': MesesDoAnoId = '09'; break;
case 'Outubro': MesesDoAnoId = '10'; break;
case 'Novembro': MesesDoAnoId = '11'; break;
case 'Dezembro': MesesDoAnoId = '12'; break;
}
let dias = [];
// Adicionar espaços vazios antes do primeiro dia do mês
for (let i = 0; i < primeiroDiaSemana; i++) {
dias.push(`<div class="vazio"></div>`);
}
for (let d = 1; d <= diasNoMes; d++) {
dias.push(`<p class="dia" id="${ano}-${MesesDoAnoId}-${d}">${d}</p>`);
}
// Verifica o id do dia atual
const idDiaAtual = `${ano}-${MesesDoAnoId}-${dia}`;
return { dias, mes: mesNome, ano, dia, idDiaAtual, data: dataReferencia };
}
function AtualizarData(novaData) {
const resultado = CapturandoDatas(novaData);
if (!resultado) {
console.error("Erro: A data fornecida não é válida.");
return;
}
const { dias, mes, ano, dia, idDiaAtual } = resultado;
DiaAtual.innerHTML = `
<div class="days">
<div class='day-name' id='Domingo'>Dom</div>
<div class='day-name' id='Segunda'>Seg</div>
<div class='day-name' id='Terça'>Ter</div>
<div class='day-name' id='Quarta'>Qua</div>
<div class='day-name' id='Quinta'>Qui</div>
<div class='day-name' id='Sexta'>Sex</div>
<div class='day-name' id='Sábado'>Sáb</div>
</div>
<div class="dates">
${dias.join("")}
</div>
`; // Exibir todos os dias corretamente
RecebeMes = mes;
MesAtual.innerHTML = `<h2 class="Subir">${RecebeMes}</h2>`;
AnoAtual.innerHTML = ano;
//console.log(dias);
const diaAtualElement = document.getElementById(idDiaAtual);
if (diaAtualElement) {
diaAtualElement.classList.add("destaque"); // Adiciona classe para destacar o dia
} else {
console.error("Erro: Não foi possível encontrar o dia atual.");
}
// Definir o mês no formato de 2 dígitos
let MesesDoAno;
switch (mes) {
case 'Janeiro': MesesDoAno = '01'; break;
case 'Fevereiro': MesesDoAno = '02'; break;
case 'Março': MesesDoAno = '03'; break;
case 'Abril': MesesDoAno = '04'; break;
case 'Maio': MesesDoAno = '05'; break;
case 'Junho': MesesDoAno = '06'; break;
case 'Julho': MesesDoAno = '07'; break;
case 'Agosto': MesesDoAno = '08'; break;
case 'Setembro': MesesDoAno = '09'; break;
case 'Outubro': MesesDoAno = '10'; break;
case 'Novembro': MesesDoAno = '11'; break;
case 'Dezembro': MesesDoAno = '12'; break;
}
let idDiaClicado = dia; // Variável global para armazenar o ID
// Função para adicionar o evento de clique a todos os dias
function adicionarEventosClick() {
// Seleciona todos os elementos <p> com a classe "dia"
const dias = document.querySelectorAll('.dia');
// Itera sobre todos os elementos <p> encontrados
dias.forEach(dia => {
// Adiciona um evento de clique para cada elemento
dia.addEventListener('click', () => {
// Remove a classe 'destaque' de todos os dias
dias.forEach(d => d.classList.remove('destaque'));
// Adiciona a classe 'destaque' ao dia clicado
dia.classList.add('destaque');
//console.log(`Dia clicado: ${dia.innerText}`); // Exibe o dia no console
// Armazena a ID do dia clicado
idDiaClicado = dia.id;
// Exibe o ID no console
//console.log(`ID do dia clicado: ${idDiaClicado}`);
Chamados_home(idDiaClicado);
});
});
}
// Chama a função para adicionar os eventos de clique
adicionarEventosClick();
// Para acessar o ID de fora da função, você pode usar a variável global 'idDiaClicado':
setTimeout(() => {
Chamados_home(idDiaClicado);
//console.log(`ID do dia após o clique: ${idDiaClicado}`);
}, 1000); // Isso espera 1 segundo após o clique para verificar a variável
const dataAtual = `${ano}-${MesesDoAno}-${dia}`;
//console.log("Data processada corretamente:", dataAtual);
}
function MudarMes() {
const proximo_mes = document.getElementById('NumeroProximoMes');
const mes_anterior = document.getElementById('NumeroAnteriorMes');
proximo_mes.addEventListener('click', () => {
// Converter o nome do mês para um número
let mesNumero = getMesNumero(RecebeMes);
let dataAtual = new Date(AnoAtual.innerHTML, mesNumero, 1); // Cria a data do mês atual
dataAtual.setMonth(dataAtual.getMonth() + 1); // Avança para o próximo mês
AtualizarData(dataAtual); // Atualiza a data com o novo mês
});
mes_anterior.addEventListener('click', () => {
// Converter o nome do mês para um número
let mesNumero = getMesNumero(RecebeMes);
let dataAtual = new Date(AnoAtual.innerHTML, mesNumero, 1); // Cria a data do mês atual
dataAtual.setMonth(dataAtual.getMonth() - 1); // Retrocede para o mês anterior
AtualizarData(dataAtual); // Atualiza a data com o novo mês
});
}
function getMesNumero(mesNome) {
switch (mesNome) {
case 'Janeiro': return 0; // Janeiro é o mês 0 no JavaScript (0-11)
case 'Fevereiro': return 1;
case 'Março': return 2;
case 'Abril': return 3;
case 'Maio': return 4;
case 'Junho': return 5;
case 'Julho': return 6;
case 'Agosto': return 7;
case 'Setembro': return 8;
case 'Outubro': return 9;
case 'Novembro': return 10;
case 'Dezembro': return 11;
default: return 0;
}
}
// Inicializa os valores na tela
AtualizarData(new Date());
MudarMes();
}
function TelaFinanceiro() {
const BolotosAvencer = document.getElementById('apresentarBoleto');
const hoje = new Date();
const diaAtual = hoje.getDate();
const mesAtual = hoje.getMonth();
const anoAtual = hoje.getFullYear();
const meses = [];
const nomesMeses = [
"janeiro", "fevereiro", "março", "abril", "maio", "junho",
"julho", "agosto", "setembro", "outubro", "novembro", "dezembro"
];
for (let i = 0; i <= 2; i++) {
let mes = (hoje.getMonth() + i) % 12; // Garante que não passe de dezembro
let ano = anoAtual + Math.floor((hoje.getMonth() + i) / 12); // Ajusta o ano se necessário
let nomeMes = nomesMeses[mes];
// 🔴 O botão SÓ fica ativo se estivermos DENTRO do mês respectivo E entre os dias 1 e 12
let botaoAtivo = ano === anoAtual && mes === mesAtual && diaAtual >= 1 && diaAtual <= 20;
console.log(botaoAtivo);
if (botaoAtivo == false) {
meses.push(`
<div class="Mes_financeiro Desativado">
<div class="MesBoleto Desativado">
<p>${nomeMes} - ${ano}</p>
</div>
<div class="StatusFinanceiro">
<p>Fechado</p>
</div>
<div class="GerarBoletoFinanceiro">
<button>
Fora de data
</button>
</div>
</div>
`);
}
if (botaoAtivo == true) {
meses.push(`
<div class="Mes_financeiro Ativado">
<div class="MesBoleto Ativado">
<p>${nomeMes} - ${ano}</p>
</div>
<div class="StatusFinanceiro">
<p>Aberto</p>
</div>
<div class="GerarBoletoFinanceiro">
<button Id="Gerar">
Gerar Boleto
</button>
</div>
</div>
`);
}
}
BolotosAvencer.innerHTML = meses.join('');
const ButtoaoGerarBoleto = document.getElementById('Gerar');
if (ButtoaoGerarBoleto) {
ButtoaoGerarBoleto.addEventListener('click', gerarBoleto);
}
async function gerarBoleto() {
const { Boleto_Conect, Response_Conect } = await IntegracaoBoleto_Conect();
//const { Boleto_Aline } = await IntegracaoBoleto_Alinhamento();
//const { Boleto_PDF } = await IntegracaoBoleto_GerarPDF();
const dataBole_Conect = await Boleto_Conect.json();
//const dataBole_Aline = await Boleto_Aline.json();
//const dataBole_PDF = await Boleto_PDF.json();
const Alinhamento_Pdf = await Response_Conect.blob();
console.log("Resposta da conexão", dataBole_Conect, Alinhamento_Pdf);
// console.log("Resposta do Alinhamento", dataBole_Aline);
// console.log("Resposta da Geração de PDF", dataBole_PDF);
const pdfUrl = URL.createObjectURL(Alinhamento_Pdf);
window.open(pdfUrl, '_blank');
}
}
clearInterval(checkElements_home); // Para o setInterval
loadtelaHome();
function loadtelaHome() {
const respostaLoad = respotadeCarregamento();
//console.log(respostaLoad)
function respotadeCarregamento() {
return localStorage.setItem('Carregou_tela_Home', 'true')
}
}
}
} catch (error) {
console.error('Houve algo inesperado dentro da tela home' + error)
clearInterval(checkElements_home); // Para o setInterval
return false
}
}, interval_home);
} catch (error) {
console.error('Houve algo inesperado fora da tela home' + error)
}
}