Newer
Older
vmk-demo-bot / adminback / actions / logs.php
<?php

function logs_list_action($params) {
	$site = $params["site"];
	$before = date("Y-m-d H:i:s", time() - intval($params["period"]) * 24 * 3600);
	$per_page = 25;
	$pagenum = isset($params["pagenum"]) ? intval($params["pagenum"]) : 1;
	$offset = $per_page * ($pagenum - 1);

	$site = ($site == "*") ? "%%" : $site;
	$query = db() -> prepare("SELECT * FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before ORDER BY `id` DESC LIMIT {$offset}, {$per_page}");
	$query -> execute([
		":site" => $site,
		":before" => $before
	]);
	$result = $query -> fetchAll(PDO::FETCH_ASSOC);

	// total rows
	$query = db() -> prepare("SELECT COUNT(*) FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before");
	$query -> execute([
		":site" => $site,
		":before" => $before
	]);
	$result_count = $query -> fetch(PDO::FETCH_ASSOC);
	$total = (int)$result_count["COUNT(*)"];

	echo json_encode([
		"status" => true, 
		"logs" => $result,
		"paginator" => [
			"total" => $total,
			"per_page" => $per_page,
			"pagenum" => $pagenum,
			"total_pages" => ceil($total / $per_page)
		]
	]);
}

function logs_dialog_action($params) {
	header('Content-Type: text/html');

	$chat_id = intval($params["chat_id"]);
	if(!$chat_id) {
		return die("Nothing found");
	}

	$query = db() -> prepare("SELECT * FROM `history` WHERE `chat_id`=:chat_id ORDER BY `id` ASC");
	$query -> execute([
		":chat_id" => $chat_id
	]);
	$result = $query -> fetchAll(PDO::FETCH_ASSOC);

	echo '
		<style>
			.container {
				box-sizing: border-box;
				padding: 20px;
				max-width: 600px;
			}
		</style>
	';
	echo '<div class="container">';

	echo "<h1>CHAT ID: {$chat_id}</h1>";
	foreach($result as $msg) {
		echo "<p><strong>{$msg["role"]}</strong> [{$msg["create_at"]}]<br>{$msg["content"]}</p>";
	}

	echo "</div>";
}


function get_chat_id_by_channel($channel_name) {
	$query = db() -> prepare("SELECT `id` FROM `channel` WHERE `name`=:channel_name LIMIT 1");
	$query -> execute([
		":channel_name" => $channel_name
	]);

	$res = $query -> fetch(\PDO::FETCH_ASSOC);

	$channel_id = $res["id"];
	
	$query = db() -> prepare("SELECT `chat_id` FROM `chat_channel` WHERE `channel_id`=:channel_id LIMIT 1");
	$query -> execute([
		":channel_id" => $channel_id
	]);

	$res = $query -> fetch(\PDO::FETCH_ASSOC);
	if($res) {
		return $res["chat_id"];
	}

	return false;
}

function logs_rating_action($params) {

	$chat_id = get_chat_id_by_channel($params["channel_name"]);
	if(!$chat_id) {
		die(json_encode([
			"status" => false
		]));
	}

	$query = db() -> prepare("UPDATE `adm_logs` SET `rating`=:rating WHERE `chat_id`=:chat_id LIMIT 1");
	$query -> execute([
		":chat_id" => $chat_id,
		":rating" => $params["rating"]
	]);

	echo json_encode([
		"status" => true
	]);
}