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

function analitics_get_by_site_action($params) {
	$site = $params["site"];
	$before = date("Y-m-d H:i:s", time() - intval($params["period"]) * 24 * 3600);
	$site = ($site == "*") ? "%%" : $site;
	$execute_args = [
		":site" => $site,
		":before" => $before
	];

	$query = db() -> prepare("SELECT COUNT(*) FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before");
	$query -> execute($execute_args);
	$result = $query -> fetch(PDO::FETCH_ASSOC);
	$total_dialogs = $result["COUNT(*)"];

	$select_ratings = [-1, 1];
	$ratings = ["1" => 0, "-1" => 0];
	foreach($select_ratings as $rating) {
		$query = db() -> prepare("SELECT COUNT(*) FROM `adm_logs` WHERE `site` LIKE :site AND `create_at`>:before AND `rating`=:rating");
		$query -> execute(array_merge($execute_args, [":rating" => $rating]));
		$result = $query -> fetch(PDO::FETCH_ASSOC);
		$ratings[$rating] = $result["COUNT(*)"];
	}

	$final_rating = ($ratings["1"] + $ratings["-1"]) 
		? round($ratings["1"] / ($ratings["1"] + $ratings["-1"]) * 100) / 10
		: 0;

	echo json_encode([
		"status" => true,
		"site" => $site == "%%" ? "Всі разом" : $site,
		"total_dialogs" => $total_dialogs,
		"total_likes" => $ratings["1"],
		"total_dislikes" => $ratings["-1"],
		"final_rating" => $final_rating
	]);
}