setKey($key); $LogValidate->setFile($file); /** Verifica se não existem erros a serem informados, * caso não haja erro(s) salvo os dados ou * efetua o cadastro de um novo*/ /** Verifico a existência de erros */ if (!empty($LogValidate->getErrors())) { /** Informo */ throw new InvalidArgumentException($LogValidate->getErrors(), 0); } else { /** Converte o json em objeto para manipular o mesmo */ $jsonLog = json_decode($LogValidate->getFile()); /** Verifica se o cliente informado existe */ $ClientResult = $Client->GetCns($jsonLog->cns); /** Caso o cliente não exista, cadastro o mesmo */ if ($ClientResult->client_id == 0) { /** Caso o cliente não exista, cadastra o novo */ if (!$Client->Save( null, $jsonLog->cns, $jsonLog->cartorio, null, null, null, null, null )) { /** Informo */ throw new InvalidArgumentException('Não foi possível cadastrar o cartório', 0); } } /** Id do cliente */ $clientId = $ClientResult->client_id > 0 ? $ClientResult->client_id : $Client->getId(); /** Consulta se a estação já foi cadastrada */ $StationResult = $Station->Search($clientId, $jsonLog->estacao); /** Verifica se a estação já foi cadastrada */ if ($StationResult->station_id == 0) { if (!$Station->Save( null, $clientId, null, trim($jsonLog->estacao), null, null, null, null, null, null, null, null, 1, trim($jsonLog->server->sistema_operacional), trim($jsonLog->server->cpu), trim($jsonLog->server->memory) )) { /** Informo */ throw new InvalidArgumentException($Station->getErrors(), 0); } } /** Id da estação */ $stationId = $StationResult->station_id > 0 ? $StationResult->station_id : $Station->getId(); // Percorre cada disco (C:, D:, etc.) foreach ($jsonLog->disk as $drive => $details) { /** Consulta se o disco já foi cadastrado */ $StationDiskResult = $StationDisk->Search($stationId, $drive); /** Prepara o Id da estação */ $stationDiskId = $StationDiskResult->station_disk_id > 0 ? $StationDiskResult->station_disk_id : 0; // Percorre cada atributo do disco $i = 0; foreach ($details as $key => $value) { if ($i == 0) { $capacidade = $value; } if ($i == 1) { $utilizados = $value; } if ($i == 2) { $disponivel = $value; } if ($i == 3) { $disponivel_percentual = $value; } $i++; } /** Grava o novo disco ou atualiza o atual */ if (!$StationDisk->Save( $stationDiskId, $stationId, $drive, $capacidade, $utilizados, $disponivel, $disponivel_percentual )) { /** Informo */ throw new InvalidArgumentException($StationDisk->getErrors(), 0); } } // Percorre a pasta Ged foreach ($jsonLog->ged as $path => $details) { /** Consulta se o disco já foi cadastrado */ $StationFolderResult = $StationFolder->Search($stationId, $path); /** Prepara o Id da estação */ $stationFolderId = $StationFolderResult->station_folder_id > 0 ? $StationFolderResult->station_folder_id : 0; // Percorre cada atributo da pasta foreach ($details as $key => $value) { /** Grava uma nova pasta ou atualiza o atual */ if (!$StationFolder->Save( $stationFolderId, $stationId, $path, $value, $value )) { /** Informo */ throw new InvalidArgumentException($StationDisk->getErrors(), 0); } } } /** Exclui os registros anteriores */ $Backup->Delete($clientId, $stationId); // Percorre a pasta Backup foreach ($jsonLog->backup as $file => $details) { // Percorre cada atributo da pasta $i = 0; foreach ($details as $key => $value) { if ($i == 0) { $fileDate = $Main->DataDB($value); } if ($i == 1) { $fileHour = $value; } if ($i == 2) { $period = $value; } if ($i == 3) { $day = $value; } if ($i == 4) { $size = $value; } if ($i == 5) { $path = $value; } $i++; } /** Grava o arquivo de backup */ $Backup->Save( $clientId, $stationId, $file, $fileDate, $fileHour, $period, $day, $size, $path ); } error_reporting(E_ALL); ini_set('display_errors', 'On'); /** Exclui o registro anterior sobre o banco de dados */ $Database->Delete($clientId); /** Grava os novos dados do banco de dados */ if(!$Database->Save($clientId, $jsonLog->database->file_size, $jsonLog->database->last_modified, $jsonLog->database->db_accessible)){ /** Informo */ throw new InvalidArgumentException('Não foi possível cadastrar as informações de banco de dados', 0); } /** Exclui o log anterior da estação correspondente */ $Log->Delete($clientId, $stationId); /** Grava o arquivo de log */ if (!$Log->Save($clientId, $stationId, $LogValidate->getFile())) { /** Informo */ throw new InvalidArgumentException('Não foi possível cadastrar o arquivo de log', 0); } /** Gera o PDF com o resumo do cartório */ /** Aumenta o uso de memória */ ini_set('memory_limit', '512M'); /** Inicio do relatório */ /** Instancia da classe Mpdf */ $mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'orientation' => 'L' ]); /** Prepara o cabeçalho */ $header = ' '; $header .= ' '; $header .= ' '; $header .= ' '; $header .= ' '; $header .= '
'; $header .= '

' . $ClientResult->name . '

'; $header .= '
'; /** Define i cabeçalho do relatório */ $mpdf->SetHTMLHeader($header); /** Define o rodapé do relatório */ $mpdf->SetHTMLFooter('
{PAGENO}/{nbpg}
'); /** Adicionar as margens da página */ $mpdf->AddPageByArray([ 'margin-top' => 28 ]); /** Consulta a quantidade de registros */ $StationResult = $Station->All($clientId); /** Lista as estações do cliente */ foreach ($StationResult as $StationKey => $Result) { /** Inicio do corpo do relatório */ /** Dados do servidor */ $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; // $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; // $body .= ' '; $body .= ' '; $body .= ' '; $body .= '

Detalhes Servidor

DESCRIÇÃOSOCPUMEMÓRIA
' . $Result->description . '' . $Result->operating_system . ''.htmlspecialchars($Result->cpu).'' . $Result->memory . '
'; /** Discos */ $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; /** Consulta a quantidade de registros */ $StationDiskResult = $StationDisk->All($Result->station_id); /** Lista as estações do cliente */ foreach ($StationDiskResult as $StationDiskKey => $ResultDisk) { $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $i++; } $body .= '

Discos

DESCRIÇÃOCAPACIDADEUTILIZADOSDISPONÍVELDISPONÍVEL %
' . $ResultDisk->description . '' . $ResultDisk->capacity . '' . $ResultDisk->used . '' . $ResultDisk->available . '' . $ResultDisk->available_percentage . '%
'; /** Ged */ $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; /** Consulta a quantidade de registros */ $StationFolderResult = $StationFolder->All($Result->station_id); /** Lista as estações do cliente */ foreach ($StationFolderResult as $StationFolderKey => $ResultFolder) { $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $i++; } $body .= '

Ged

ATUALIZADOPATHQTDEQTDE ATUAL
' . (!empty($ResultFolder->last_update) ? date('d/m/Y H:i:s', strtotime($ResultFolder->last_update)) : null) . '' . $ResultFolder->folder_path . '' . $ResultFolder->amount_of_files . '' . $ResultFolder->amount_of_files_current . '
'; /** Backup */ $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; /** Consulta a quantidade de registros */ $BackupResult = $Backup->All($Result->client_id, $Result->station_id); /** Lista as estações do cliente */ foreach ($BackupResult as $BackupKey => $ResultBackup) { /** Verifica se existe arquivo com arquivo menor que 1kb */ if (strpos($ResultBackup->size, "B") !== false) { /** Limpa o nome do tamanho do arquivo */ $size = str_replace('B', '', $ResultBackup->size); $size = str_replace('.', '', $size); if ((int)$size < 1024) { $robot++; $color++; } } $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $body .= ' '; $i++; $color = 0; } $body .= '

Backup

ARQUIVODATAHORADIATAMANHOCAMINHO
' . $ResultBackup->file . '' . date('d/m/Y', strtotime($ResultBackup->file_date)) . '' . date('H:i:s', strtotime($ResultBackup->file_hour)) . '' . $ResultBackup->day . '' . $ResultBackup->size . '' . $ResultBackup->path . '
'; $serverName = $Result->description; } /** Acrescenta os dados ao corpo do relatório */ $mpdf->WriteHTML($body); /** Nome que será dado ao relatório */ $nameFile = $ClientResult->cns . '.pdf'; /** Salva o relatório em uma pasta temporária */ $mpdf->Output($dir . $nameFile); /** Verifica se o arquivo PDF foi gerado */ if (is_file($dir . $nameFile)) { /** Verifica se é para enviar a notificação para o Telegram */ if ($robot > 0) { /** Monta a mensagem de envio */ $message = "(" . $ClientResult->cns . ")" . $ClientResult->name . "\n"; $message .= "Data: " . date('d/m/Y') . "\n"; $message .= "Hora: " . date('H:i:s') . "\n"; $message .= "Estação: " . $Result->description . "\n\n"; $message .= "Para gerenciamento completo, acesse:\n"; $message .= $urlRel."\n\n"; $message .= "Acesse o relatório detalhado no link abaixo:\n"; $message .= $urlRel . $dir . $nameFile . "\n\n"; /** Envia o log para o bot */ $Log->sendMessage($message, $ClientResult->cns); } } } } catch (Exception $exception) { /** Preparo o formulario para retorno **/ $result = [ 'cod' => 0, 'message' => '', 'title' => 'Atenção', 'type' => 'exception' ]; /** Envio **/ echo json_encode($result); /** Paro o procedimento **/ exit; }