<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require_once("functions.php");
require_once("inc_sicurezza_login.php");
$cartellaweb = "/panel/uploads";
$errori_input[] = " Errore Generico ";
$chk = $_POST['chk'];
$azione = $_POST['azione'];
$sql_reseller = "SELECT * FROM rivenditori  ";
list($status_reseller, $contenuto_reseller, $nrows_reseller) = read_db_pdo($sql_reseller, $array_reseller);
if ($nrows_reseller < 1) {
	echo "null";
	exit;
}
$staff = $contenuto_reseller;
$filtro_query_rivenditori = "";


$allowed_tipo_file_upload_immagini = array(
	"image/png",
	"image/jpeg",
	"image/gif",
	"image/jpeg",
	"image/pjpeg"
);
$allowed_size_file_upload = 5242880; // 5MB  12MB = 12582912

function humanFileSize($size, $unit = "")
{
	if ((!$unit && $size >= 1 << 30) || $unit == "GB")
		return number_format($size / (1 << 30), 2, ',', '.') . "GB";
	if ((!$unit && $size >= 1 << 20) || $unit == "MB")
		return number_format($size / (1 << 20), 2, ',', '.') . "MB";
	if ((!$unit && $size >= 1 << 10) || $unit == "KB")
		return number_format($size / (1 << 10), 2, ',', '.') . "KB";
	return number_format($size, ',', '.') . " bytes";
}

//*********************** EDITA IMPOSTAZIONI**********************
if ($azione == "impostazioni") {
	$errori_input = array();
	$abilita_test = $_POST['abilita_test'];
	if ($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") {
		$errori_input[] = "Non hai i permessi per operare in questa sezione";
		log_operazione($id_user_logged, "Tentativo di inserimento canale non permesso");
	}
	if (($abilita_test != 0) || ($abilita_test != 1)) {
		$controllo = 1;
	} else {
		$controllo = 0;
	}
	if ($controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata modifica di un canale con id non corrispondenti");
	}

	if (empty($errori_input)) {

		try {
			$db->beginTransaction();
			$array_aggiorna = array(
				'test' => $abilita_test
			);
			$sql_aggiorna = "UPDATE impostazioni SET test=:test";

			list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);

			log_operazione($id_user_logged, "Modifica Impostazioni");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//************************************ AGGIUNGI CANALE MANCA UPLOAD FILE************************************
if ($azione == "aggiungi_canale") {
	if ($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") {
		$errori_input[] = "Non hai i permessi per operare in questa sezione";
		log_operazione($id_user_logged, "Tentativo di inserimento canale non permesso");
		exit;
	}
	$errori_input = array();
	$nome = $_POST['nome'];
	$titolo = $_POST['titolo'];
	$link = $_POST['link'];
	$HlsUrl = $_POST['HlsUrl'];
	$tipo = $_POST['tipo'];
	$keyid = $_POST['keyid'];
	$key = $_POST['key'];
	$link_formato = $_POST['link_formato'];
	$key_dinamica = $_POST['key_dinamica'];
	$image = $_POST['image'];
	$attivo = $_POST['attivo'];
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			if (empty($errori_input)) {
				$array_aggiungi_canale = array(
					'nome' => $nome,
					'titolo' => $titolo,
					'link' => $link,
					'HlsUrl' => $HlsUrl,
					'tipo' => $tipo,
					'keyid' => $keyid,
					'keyy' => $key,
					'link_formato' => $link_formato,
					'key_dinamica' => $key_dinamica,
					'attivo' => $attivo,
					'image' => $image
				);
				$sql_aggiungi_canale = "INSERT INTO canali SET 
													tipo=:tipo,
													nome=:nome,
													titolo=:titolo,
													link=:link,
													HlsUrl=:HlsUrl,
													keyid=:keyid,
													keyy=:keyy,
													link_formato=:link_formato,
													key_dinamica=:key_dinamica,
													attivo=:attivo,
													image=:image
											";
				list($status_sql_aggiungi_canale, $nrows_aggiungi_canale) = write_db_pdo_trans($sql_aggiungi_canale, $array_aggiungi_canale);
				$msg_log = "Aggiunto nuovo canale $tipo [" . $nome . "]";
				log_operazione($id_user_logged, $msg_log);
				$db->commit();
			}
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//*********************** EDITA CANALE DA FARE**********************
if ($azione == "modifica_canale") {
	$errori_input = array();
	$id_rivenditore = $id_user_logged;
	$id_canale = strip_tags(trim($_POST["id_canale_e"]));
	$nome = strip_tags(trim($_POST["nome_e"]));
	$tipo = $_POST['tipo_e'];
	$keyid = $_POST['keyid_e'];
	$key = $_POST['key_e'];
	$link_formato = $_POST['link_formato_e'];
	$key_dinamica = $_POST['key_dinamica_e'];
	$attivo = $_POST['attivo_e'];
	$image = $_POST['image_e'];
	$array_controllo = array('id_canale' => $id_canale);
	$query_controllo = "SELECT * FROM canali WHERE id_canale=:id_canale LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	$titolo = strip_tags(trim($_POST["titolo_e"]));
	$link = strip_tags(trim($_POST["link_e"]));
	$HlsUrl = strip_tags(trim($_POST["HlsUrl_e"]));


	if ($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") {
		$errori_input[] = "Non hai i permessi per operare in questa sezione";
		log_operazione($id_user_logged, "Tentativo di inserimento canale non permesso");
	}
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata modifica di un canale con id non corrispondenti");
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_aggiorna = array(
				'id_canale' => $id_canale,
				'tipo' => $tipo,
				'nome' => $nome,
				'titolo' => $titolo,
				'link' => $link,
				'HlsUrl' => $HlsUrl,
				'keyid' => $keyid,
				'keyy' => $key,
				'link_formato' => $link_formato,
				'key_dinamica' => $key_dinamica,
				'attivo' => $attivo,
				'image' => $image
			);
			$sql_aggiorna = "UPDATE canali SET 
												tipo=:tipo, 
												nome=:nome, 
												titolo=:titolo, 
												link=:link,
												HlsUrl=:HlsUrl,
												keyid=:keyid, 
												keyy=:keyy,
												link_formato=:link_formato,
												key_dinamica=:key_dinamica,
												attivo=:attivo,
												image=:image 
								WHERE id_canale=:id_canale";

			list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);

			log_operazione($id_user_logged, "Modifica canale [<strong class='text-danger'>$nome</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//**************************** ELIMINA CANALE OK ***************************
if ($azione == "elimina_canale") {
	$errori_input = array();
	$id_rivenditore = $id_user_logged;
	$id_canale = strip_tags(trim($_POST["id_canale_d"]));
	$nome = strip_tags(trim($_POST["nome_d"]));
	$array_controllo = array('id_canale' => $id_canale, 'nome' => $nome);
	$query_controllo = "SELECT * FROM canali WHERE id_canale=:id_canale AND nome=:nome LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	if ($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") {
		$errori_input[] = "Non hai i permessi per operare in questa sezione";
		log_operazione($id_user_logged, "Tentativo di eliminazione canale non permesso");
	}
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata eliminazione di un cliente con id e username [<strong class='text-danger'>$username_c_d</strong] non corrispondenti");
	}

	if (empty($errori_input)) {
		try {

			$db->beginTransaction();
			$array_elimina = array(
				'id_canale' => $id_canale,
				'nome' => $nome,
			);
			$sql_elimina = "DELETE FROM canali WHERE id_canale=:id_canale AND nome=:nome";
			list($status_sql_elimina, $nrows_elimina) = write_db_pdo_trans($sql_elimina, $array_elimina);
			log_operazione($id_user_logged, "Eliminazione cliente [<strong class='text-danger'>$username_c</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	} else {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//************************************ AGGIUNGI RIVENDITORE OK************************************
if ($azione == "aggiungi_rivenditore") {
	$errori_input = array();
	$id_superiore = $id_user_logged;
	$username_r = strip_tags(trim($_POST["username_r"]));
	$crediti = strip_tags(trim($_POST["crediti"]));
	if ($crediti < 30) {
		$errori_input[] = "Non è possibile creare un rivenditore con crediti inferiori a 30";
	}
	$array_account_exist = array('username' => $username_r);
	$sql_account_exist = "SELECT * FROM rivenditori WHERE username=:username LIMIT 1";
	list($status_account_exist, $contenuto_account_exist, $nrows_account_exist) = read_db_pdo($sql_account_exist, $array_account_exist);
	if ($nrows_account_exist > 0) {
		$errori_input[] = "Username già in uso";
	}
	$array_reseller = array('id_rivenditore' => $id_user_logged);
	$sql_reseller = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore LIMIT 1";
	list($status_reseller, $contenuto_reseller, $nrows_reseller) = read_db_pdo($sql_reseller, $array_reseller);
	$crediti_creatore = $contenuto_reseller[0]["crediti"];
	$oggi = date("Y-m-d H:i:s");
	$password_r = strip_tags(trim($_POST["password_r"]));
	$tipo_r = strip_tags(trim($_POST["tipo_r"]));

	switch ($tipo_r) {
		case "RESELLER":
			$permessi = "2f976275b3f669d63d3fbc484f0c343b";
			break;
		case "SUBRESELLER":
			$permessi = "6a2c221670f4afb47057f9b7623c0547";
			break;
		case "SUPER MASTER":
			$permessi = "7f1ceb7c8aedd46408b3ea1796aa44a6";
			break;
		case "MASTER":
			$permessi = "9d444c8a0c6f4935583d6bed6f44eabb";
			break;
		default:
			log_operazione($id_user_logged, "Tentatativo di creazione $tipo_r con Permessi non autorizzati");
	}
	$note = strip_tags(trim($_POST["note"]));
	$oggi = date("Y-m-d H:i:s");
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			if (($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6") and ($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079")) {
				if ($crediti_creatore >= $crediti) {
					$crediti_creatore = $crediti_creatore - $crediti;
					$array_sottrai_crediti = array(
						'id_rivenditore' => $id_user_logged,
						'ultima_ricarica' => $oggi,
						'crediti' => $crediti_creatore,
					);
					$sql_sottrai_crediti = "UPDATE rivenditori SET ultima_ricarica=:ultima_ricarica, crediti=:crediti WHERE id_rivenditore=:id_rivenditore";
					list($status_sql_sottrai_crediti, $nrows_sottrai_crediti) = write_db_pdo_trans($sql_sottrai_crediti, $array_sottrai_crediti);
					$msg_log = "Aggiunto nuovo $tipo_r [<strong class='text-danger'>$username_r</strong>] con $crediti crediti";
				} else {
					$errori_input[] = " $crediti_creatore2 Non hai abbastanza crediti per creare il venditore";
				}
			} else {
				$msg_log = "Aggiunto nuovo $tip_r [<strong class='text-danger'>$username_r</strong>] con $crediti crediti";
			}
			if (empty($errori_input)) {
				$array_aggiungi_rivenditore = array(
					'id_superiore' => $id_superiore,
					'stato' => 1,
					'username' => $username_r,
					'password' => $password_r,
					'ultima_ricarica' => $oggi,
					'crediti' => $crediti,
					'permessi' => $permessi,
					'note' => $note
				);
				$sql_aggiungi_rivenditore = "INSERT INTO rivenditori SET 
													id_superiore=:id_superiore,
													stato=:stato,
													username=:username,
													password=:password,
													ultima_ricarica=:ultima_ricarica,
													crediti=:crediti,
													permessi=:permessi,
													note=:note		
											";
				list($status_sql_aggiungi_rivenditore, $nrows_aggiungi_rivenditore) = write_db_pdo_trans($sql_aggiungi_rivenditore, $array_aggiungi_rivenditore);
				log_operazione($id_user_logged, $msg_log);
				$db->commit();
			}
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//************************************ ELIMINA RIVENDITORE OK************************************

if ($azione == "elimina_rivenditore") {
	$errori_input = array();
	$id_superiore = $id_user_logged;
	$username_r = strip_tags(trim($_POST["username_r_d"]));
	$id_rivenditore = strip_tags(trim($_POST["id_rivenditore_r_d"]));

	$isChildren = isChildren($id_user_logged, $id_rivenditore);
	if (($isChildren == 0) and ($id_rivenditore != $id_user_logged)) {
		$errori_input[] = "Non hai i permessi per eliminare il venditore [$username_r]";
	}
	$array_controllo = array('id_superiore' => $id_rivenditore);
	$query_controllo = "SELECT * FROM rivenditori WHERE id_superiore=:id_superiore LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	if ($nrows_controllo > 0) {
		$errori_input[] = "Per eliminare il venditore, bisogna eliminare tutti i suoi sotto-venditori";
	}
	$array_controllo = array('id_rivenditore' => $id_rivenditore);
	$query_controllo = "SELECT * FROM clienti WHERE id_rivenditore=:id_rivenditore LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	if ($nrows_controllo > 0) {
		$errori_input[] = "Per eliminare il venditore, bisogna eliminare tutti i suoi clienti";
	}
	$array_controllo = array('id_rivenditore' => $id_rivenditore, 'username' => $username_r);
	$query_controllo = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore AND username=:username LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata eliminazione di un rivenditore con id e username [<strong class='text-danger'>$username_r</strong>] non corrispondenti");
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_elimina = array(
				'id_rivenditore' => $id_rivenditore,
				'username' => $username_r,
			);
			$sql_elimina = "DELETE FROM rivenditori WHERE id_rivenditore=:id_rivenditore AND username=:username";
			list($status_sql_elimina, $nrows_elimina) = write_db_pdo_trans($sql_elimina, $array_elimina);
			log_operazione($id_user_logged, "Eliminazione rivenditore [<strong class='text-danger'>$username_r</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}

	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}

//*********************** AGGIUNGI CLIENTE OK ***************************************
if ($azione == "aggiungi_cliente") {
	$errori_input = array();
	$id_rivenditore = $id_user_logged;
	$array_setting = array();
	$username_c = strip_tags(trim($_POST["username_c"]));
	$array_account_exist = array('username' => $username_c);
	$sql_account_exist = "SELECT * FROM clienti WHERE username=:username LIMIT 1";
	list($status_account_exist, $contenuto_account_exist, $nrows_account_exist) = read_db_pdo($sql_account_exist, $array_account_exist);
	if ($nrows_account_exist > 0) {
		$errori_input[] = "Username già in uso";
	}
	$password_c = strip_tags(trim($_POST["password_c"]));
	if ($username_c == $password_c) {
		$errori_input[] = "L'username e la password non possono essere uguali";
	}
	$mesi_abbonamento_c = strip_tags(trim($_POST["mesi_abbonamento_c"]));
	if ($mesi_abbonamento_c == "b37cd7a") {
		$isTest = 1;
		$aggiorna_data = "1 hour";
		$scalo_crediti = 0;
		$msg_log = "Aggiunto nuovo cliente [<strong class='text-danger'>$username_c</strong>] TEST 1 ora";
	} else {
		$aggiorna_data = $mesi_abbonamento_c . " month";
		$isTest = 0;
		$scalo_crediti = $mesi_abbonamento_c * 1;
		$msg_log = "Aggiunto nuovo cliente [<strong class='text-danger'>$username_c</strong>] con $mesi_abbonamento_c mesi";
		$mesi_abbonamento_c = $mesi_abbonamento_c . " month";
	}
	$oggi = date("Y-m-d H:i:s");
	$visioni_c = strip_tags(trim($_POST["visioni_c"]));
	$visioni_c = 2;
	$note = strip_tags(trim($_POST["note"]));
	$scadenza = date('Y-m-d H:i:s', strtotime("$oggi +$aggiorna_data"));

	if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
		$array_reseller = array('id_rivenditore' => $id_rivenditore);
		$sql_reseller = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore LIMIT 1";
		list($status_reseller, $contenuto_reseller, $nrows_reseller) = read_db_pdo($sql_reseller, $array_reseller);
		$crediti_creatore = $contenuto_reseller[0]["crediti"];
		if ($crediti_creatore >= $scalo_crediti) {
			$crediti_creatore = $crediti_creatore - $scalo_crediti;
		} else {
			$errori_input[] = "Non hai abbastanza crediti per creare il cliente";
		}
	}
	try {
		$db->beginTransaction();
		if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
			$array_sottrai_crediti = array(
				'id_rivenditore' => $id_user_logged,
				'crediti' => $crediti_creatore,
			);
			$sql_sottrai_crediti = "UPDATE rivenditori SET crediti=:crediti WHERE id_rivenditore=:id_rivenditore";
			list($status_sql_sottrai_crediti, $nrows_sottrai_crediti) = write_db_pdo_trans($sql_sottrai_crediti, $array_sottrai_crediti);
		}
		$array_aggiungi_cliente = array(
			'id_rivenditore' => $id_rivenditore,
			'stato' => 1,
			'username' => $username_c,
			'password' => $password_c,
			'visioni' => $visioni_c,
			'scadenza' => $scadenza,
			'note' => $note,
			'isTest' => $isTest
		);
		$sql_aggiungi_cliente = "INSERT INTO clienti SET 
												id_rivenditore=:id_rivenditore,
												stato=:stato,
												username=:username,
												password=:password,
												visioni=:visioni,
												scadenza=:scadenza,
												note=:note,
												isTest=:isTest											
										";
		list($status_sql_aggiungi_cliente, $nrows_aggiungi_cliente) = write_db_pdo_trans($sql_aggiungi_cliente, $array_aggiungi_cliente);
		log_operazione($id_user_logged, $msg_log);
		$db->commit();
	} catch (WriteDBException $e) {
		$db->rollBack();
		$pdo_error = $e->getMessage();
		echo "errore db 1 $pdo_error";
		exit;
	} catch (ReadDBException $e) {
		$db->rollBack();
		$pdo_error = $e->getMessage();
		echo "errore db 2 $pdo_error";
		exit;
	}

	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}

//************************************ AGGIUNGI CREDITI OK************************************

if ($azione == "aggiungi_crediti") {
	$errori_input = array();

	$id_superiore = $id_user_logged;
	$id_rivenditore = strip_tags(trim($_POST["id_rivenditore_ac"]));
	$username_r = strip_tags(trim($_POST["username_r_ac"]));
	$crediti_aggiunti = strip_tags(trim($_POST["crediti_ac"]));
	$isChildren = isChildren($id_user_logged, $id_rivenditore);
	//if (($isChildren == 0) and ($id_rivenditore != $id_user_logged)) {

	//	$errori_input[] = "Non hai i permessi per aggiungere crediti al venditore [$username_r]";
	//}
	if ($crediti_aggiunti < 10) {
		$errori_input[] = "Non è possibile aggiungere meno di 10 crediti";
	}
	$array_account_exist = array('username' => $username_r, 'id_rivenditore' => $id_rivenditore);
	$sql_account_exist = "SELECT * FROM rivenditori WHERE username=:username AND id_rivenditore=:id_rivenditore LIMIT 1";
	list($status_account_exist, $contenuto_account_exist, $nrows_account_exist) = read_db_pdo($sql_account_exist, $array_account_exist);
	if ($nrows_account_exist < 1) {
		$errori_input[] = "Rivenditore non trovato. Tentativo di manomissione.";
	}
	$crediti_old = $contenuto_account_exist[0]["crediti"];
	$oggi = date("Y-m-d H:i:s");
	if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
		$array_superiore = array('id_rivenditore' => $id_superiore);
		$sql_superiore = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore LIMIT 1";
		list($status_superiore, $contenuto_superiore, $nrows_superiore) = read_db_pdo($sql_superiore, $array_superiore);
		$crediti_creatore = $contenuto_superiore[0]["crediti"];
		if ($crediti_creatore < $crediti_aggiunti) {
			$errori_input[] = "Operazione non riuscita. Non hai abbastanza crediti";
		}
	}
	$crediti_nuovi = $crediti_old + $crediti_aggiunti;
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
				$crediti_creatore = $crediti_creatore - $crediti_aggiunti;
				$array_sottrai_crediti = array(
					'id_rivenditore' => $id_superiore,
					'crediti' => $crediti_creatore
				);
				$sql_sottrai_crediti = "UPDATE rivenditori SET crediti=:crediti WHERE id_rivenditore=:id_rivenditore";
				list($status_sql_sottrai_crediti, $nrows_sottrai_crediti) = write_db_pdo_trans($sql_sottrai_crediti, $array_sottrai_crediti);
			}
			$array_aggiungi_crediti = array(
				'id_rivenditore' => $id_rivenditore,
				'ultima_ricarica' => $oggi,
				'crediti' => $crediti_nuovi
			);
			$sql_aggiungi_crediti = "UPDATE rivenditori SET ultima_ricarica=:ultima_ricarica, crediti=:crediti WHERE id_rivenditore=:id_rivenditore";
			list($status_sql_aggiungi_crediti, $nrows_aggiungi_crediti) = write_db_pdo_trans($sql_aggiungi_crediti, $array_aggiungi_crediti);
			log_operazione($id_user_logged, "Aggiunti $crediti_aggiunti crediti a [<strong class='text-danger'>$username_r</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}

//************************** ESTENDI LINEA OK *************************
if ($azione == "estendi_linea") {
	$errori_input = array();

	$id_rivenditore = $id_user_logged;
	$id_cliente = strip_tags(trim($_POST["id_cliente_c_e_l"]));
	$username_c = strip_tags(trim($_POST["username_c_e_l"]));
	$mesi_abbonamento = strip_tags(trim($_POST["mesi_abbonamento_c_e"]));
	$array_account_exist = array('username' => $username_c);
	$sql_account_exist = "SELECT * FROM clienti WHERE username=:username LIMIT 1";
	list($status_account_exist, $contenuto_account_exist, $nrows_account_exist) = read_db_pdo($sql_account_exist, $array_account_exist);
	if ($nrows_account_exist < 1) {
		$errori_input[] = "Utente non trovato. Tentativo di manomissione.";
	}
	$scadenza = $contenuto_account_exist[0]["scadenza"];
	$stato = $contenuto_account_exist[0]["stato"];
	$oggi = date("Y-m-d H:i:s");
	if ($stato == 0) {
		$dx = explode(' ', $oggi);
		$nuova_scadenza = date('Y-m-d', strtotime("$dx[0] +$mesi_abbonamento month"));
		$nuova_scadenza = $nuova_scadenza . " " . $dx[1];
	} else {
		$dx = explode(' ', $scadenza);
		$nuova_scadenza = date('Y-m-d', strtotime("$dx[0] +$mesi_abbonamento month"));
		$nuova_scadenza = $nuova_scadenza . " " . $dx[1];
	}
	if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
		$array_reseller = array('id_rivenditore' => $id_rivenditore);
		$sql_reseller = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore LIMIT 1";
		list($status_reseller, $contenuto_reseller, $nrows_reseller) = read_db_pdo($sql_reseller, $array_reseller);
		$crediti_creatore = $contenuto_reseller[0]["crediti"];
		if ($crediti_creatore < ($mesi_abbonamento * 1)) {
			$errori_input[] = "Non è possibile estendere la scadenza. Non hai abbastanza crediti";
		}
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			if (($permessi_user_logged != "6923e6c01ef0afda823f8a4085890079") and ($permessi_user_logged != "7f1ceb7c8aedd46408b3ea1796aa44a6")) {
				$crediti_creatore = $crediti_creatore - ($mesi_abbonamento * 1);
				$array_sottrai_crediti = array(
					'id_rivenditore' => $id_rivenditore,
					'crediti' => $crediti_creatore
				);
				$sql_sottrai_crediti = "UPDATE rivenditori SET crediti=:crediti WHERE id_rivenditore=:id_rivenditore";
				list($status_sql_sottrai_crediti, $nrows_sottrai_crediti) = write_db_pdo_trans($sql_sottrai_crediti, $array_sottrai_crediti);
			}

			$array_estendi_linea = array(
				'id_cliente' => $id_cliente,
				'stato' => 1,
				'scadenza' => $nuova_scadenza,
				'isTest' => 0
			);
			$sql_estendi_linea = "UPDATE clienti SET stato=:stato, scadenza=:scadenza, isTest=:isTest WHERE id_cliente=:id_cliente";
			list($status_sql_estendi_linea, $nrows_estendi_linea) = write_db_pdo_trans($sql_estendi_linea, $array_estendi_linea);
			log_operazione($id_user_logged, "Scandenza dell'user [<strong class='text-danger'>$username_c</strong>] estesa di $mesi_abbonamento");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//**************************** ELIMINA CLIENTE OK ***************************
if ($azione == "elimina_cliente") {
	$errori_input = array();
	$id_rivenditore = $id_user_logged;
	$username_c = strip_tags(trim($_POST["username_c_d"]));
	$id_cliente = strip_tags(trim($_POST["id_cliente_c_d"]));
	$array_controllo = array('id_cliente' => $id_cliente, 'username' => $username_c);
	$query_controllo = "SELECT * FROM clienti WHERE id_cliente=:id_cliente AND username=:username LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	$id_creatore_linea = $contenuto_controllo[0]["id_rivenditore"];
	$isChildren = isChildren($id_rivenditore, $id_creatore_linea);
	if (($isChildren == 0) and ($id_creatore_linea != $id_user_logged)) {
		$errori_input[] = "Non hai i permessi per eliminare il cliente [$username_c]";
	}
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata eliminazione di un cliente con id e username [<strong class='text-danger'>$username_c_d</strong] non corrispondenti");
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_elimina = array(
				'id_cliente' => $id_cliente,
				'username_c' => $username_c,
			);
			$sql_elimina = "DELETE FROM clienti WHERE id_cliente=:id_cliente AND username=:username_c";
			list($status_sql_elimina, $nrows_elimina) = write_db_pdo_trans($sql_elimina, $array_elimina);
			$array_elimina2 = array(
				'id_user_setting' => $id_cliente,
			);
			log_operazione($id_user_logged, "Eliminazione cliente [<strong class='text-danger'>$username_c</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}

//*********************** EDITA CLIENTE OK**********************
if ($azione == "edita_pass_note_cliente") {
	$errori_input = array();
	$id_rivenditore = $id_user_logged;
	$username_c = strip_tags(trim($_POST["username_c_e"]));
	$password_c = strip_tags(trim($_POST["password_c_e"]));
	$visioni_c_e = strip_tags(trim($_POST["visioni_c_e"]));
	$visioni_c_e = 2;
	$old_password = strip_tags(trim($_POST["old_password"]));
	$note = strip_tags(trim($_POST["note_e"]));
	$id_cliente = strip_tags(trim($_POST["id_cliente_c_e"]));
	$array_controllo = array('id_cliente' => $id_cliente, 'username' => $username_c);
	$query_controllo = "SELECT * FROM clienti WHERE id_cliente=:id_cliente AND username=:username LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	$id_creatore_linea = $contenuto_controllo[0]["id_rivenditore"];
	$isChildren = isChildren($id_rivenditore, $id_creatore_linea);
	if (($isChildren == 0) and ($id_creatore_linea != $id_user_logged)) {
		$errori_input[] = "Non hai i permessi per eliminare il cliente [$username_c]";
	}
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata modifica di un cliente con id e username non corrispondenti");
	}
	if (($id_rivenditore == $contenuto_controllo[0]["id_rivenditore"]) or ($permessi_user_logged == "6923e6c01ef0afda823f8a4085890079")) {
		if (empty($errori_input)) {
			try {
				$db->beginTransaction();
				$array_aggiorna = array(
					'password_c' => $password_c,
					'id_cliente' => $id_cliente,
					'username_c' => $username_c,
					'visioni_c_e' => $visioni_c_e,
					'note' => $note
				);
				$sql_aggiorna = "UPDATE clienti SET password=:password_c, visioni=:visioni_c_e, note=:note WHERE id_cliente=:id_cliente AND username=:username_c";
				list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);
				log_operazione($id_user_logged, "Modifica cliente [<strong class='text-danger'>$username_c</strong>]");
				$db->commit();
			} catch (WriteDBException $e) {
				$db->rollBack();
				$pdo_error = $e->getMessage();
				echo "errore db 1 $pdo_error ";
				exit;
			} catch (ReadDBException $e) {
				$db->rollBack();
				$pdo_error = $e->getMessage();
				echo "errore db 2 $pdo_error ";
				exit;
			}
		}
	} else {
		$errori_input[] = "Non è possibile modificare il cliente di un altro rivenditore";
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
//************************************ MODIFICA RIVENDITORE OK************************************

if ($azione == "modifica_rivenditore") {
	$errori_input = array();
	$id_rivenditore = strip_tags(trim($_POST["id_rivenditore_e"]));
	$username_r = strip_tags(trim($_POST["username_r_e2"]));
	$password_r = strip_tags(trim($_POST["password_r_e"]));
	$old_password = strip_tags(trim($_POST["password_r_e_old"]));
	$crediti = strip_tags(trim($_POST["crediti_e"]));
	$isChildren = isChildren($id_user_logged, $id_rivenditore);
	//if (($isChildren == 0) and ($id_rivenditore != $id_user_logged)) {
	//	$errori_input[] = "Non hai i permessi per modificare il venditore [$username_r]";
	//}
	if ($crediti == "") {
		$mod_crediti = "";
		$stringa_crediti = "";
	} else {
		$mod_crediti = ", crediti=$crediti";
		$crediti_old = strip_tags(trim($_POST["crediti_r_e_old"]));
		$stringa_crediti = "da $crediti_old a $crediti";
	}
	$note = strip_tags(trim($_POST["note_e"]));
	$array_controllo = array('id_rivenditore' => $id_rivenditore, 'username' => $username_r);
	$query_controllo = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore AND username=:username LIMIT 1";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	if ($nrows_controllo == 0) {
		$errori_input[] = "Tentata forzatura. Il tuo ip è stato segnalato all'amministratore";
		log_operazione($id_user_logged, "Tentata modifica di un rivenditore con id e username non corrispondenti");
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_aggiorna = array(
				'password' => $password_r,
				'username' => $username_r,
				'id_rivenditore' => $id_rivenditore,
				'note' => $note,
			);
			$sql_aggiorna = "UPDATE rivenditori SET password=:password, note=:note $mod_crediti WHERE id_rivenditore=:id_rivenditore AND username=:username";
			//echo $sql_aggiorna;exit;
			list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);
			log_operazione($id_user_logged, "Modifica rivenditore [<strong class='text-danger'>$username_r</strong>] $stringa_crediti");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}

	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
if ($azione == "cambio_password") {
	$errori_input = array();
	$password_old = $_POST["password_old"];
	$password_new = $_POST["password_new"];

	$array_controllo = array(
		"id_rivenditore" => $id_user_logged,
		"password" => $password_old
	);
	$query_controllo = "SELECT * FROM rivenditori WHERE id_rivenditore=:id_rivenditore AND password=:password";
	list($status_controllo, $contenuto_controllo, $nrows_controllo) = read_db_pdo($query_controllo, $array_controllo);
	$username = $contenuto_controllo[0]["username"];
	if ($nrows_controllo < 1) {
		$errori_input[] = "Inserire la password attuale corretta";
	}
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_aggiorna = array(
				"id_rivenditore" => $id_user_logged,
				'password' => $password_new
			);
			$sql_aggiorna = "UPDATE rivenditori SET password=:password WHERE id_rivenditore=:id_rivenditore";
			list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);
			log_operazione($id_user_logged, "Modifica Password Pannello [<strong class='text-danger'>$username</strong>]");
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
if ($azione == "edita_dati_server") {
	$errori_input = array();
	$address = strip_tags(trim($_POST["address"]));
	$port = strip_tags(trim($_POST["port"]));
	$api_key = strip_tags(trim($_POST["api_key"]));
	$username_admin = strip_tags(trim($_POST["username_admin"]));
	$password_admin = strip_tags(trim($_POST["password_admin"]));
	if (empty($errori_input)) {
		try {
			$db->beginTransaction();
			$array_aggiorna = array(
				'address' => $address,
				'port' => $port,
				'api_key' => $api_key,
				'username_admin' => $username_admin,
				'password_admin' => $password_admin
			);
			$sql_aggiorna = "UPDATE dati_server SET 
												address=:address,
												port=:port,
												api_key=:api_key,
												username_admin=:username_admin,
												password_admin=:password_admin		
										";
			list($status_sql_aggiorna, $nrows_aggiorna) = write_db_pdo_trans($sql_aggiorna, $array_aggiorna);
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}

if ($azione == "elimina_log") {
	$errori_input = array();
	if ($permessi_user_logged == "6923e6c01ef0afda823f8a4085890079") {
		try {
			$db->beginTransaction();
			$array_elimina = array();
			$sql_elimina = "TRUNCATE TABLE log_operazioni";
			list($status_sql_elimina, $nrows_elimina) = write_db_pdo_trans($sql_elimina, $array_elimina);
			$db->commit();
		} catch (WriteDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 1 $pdo_error ";
			exit;
		} catch (ReadDBException $e) {
			$db->rollBack();
			$pdo_error = $e->getMessage();
			echo "errore db 2 $pdo_error ";
			exit;
		}
		log_operazione($id_user_logged, "Eliminazione Log");
	} else {
		$errori_input[] = "Non hai i permessi per eliminare i log";
	}
	if (!empty($errori_input)) {
		foreach ($errori_input as $errore) {
			echo $errore . "\n";
		}
		exit;
	}
	echo "OK";
}
?>