<?php
require '../bootstrap.php';
$conectDB = connectDB();
$conectDB->exec("set names utf8mb4");

$dataCadastro = date("Y-m-d H:i:s");

if ($_SERVER['REQUEST_METHOD'] === 'POST') {


	if(isset($_GET['tipo'])){

		//atualiza o perfil, menos a senha
		if($_GET['tipo'] == 'perfil'){
			$dadosProfessor = findItem($conectDB, 'professor', ' * ', array("code"=>$_SESSION['userCode']) );
			if(empty($dadosProfessor->id))
			{
				exit;
			}

			if(empty($_POST['userName'])){
				echo messageJson('erro', 'Informe seu nome, é obrigatório');exit;
			}
				if(empty($_POST['disciplinas'])){
					echo messageJson('erro', 'Selecione no mínimo 1 disciplina');exit;
				}

				$nome     			= stringInputCleaner($_POST['userName']);
				$celular     		= stringInputCleaner($_POST['userPhone']);
				$estado_id     		= stringInputCleaner($_POST['estado']);
				$cidade_id     		= stringInputCleaner($_POST['cidade']);

				$visualizarVagasCidades     = stringInputCleaner($_POST['visualizarVagasCidades']);
				$serVisto  = stringInputCleaner($_POST['serVisto']);

				//disciplinas
					$disciplinas = '';
					if( (isset($_POST['disciplinas'])) && (!empty($_POST['disciplinas']))){
						foreach($_POST['disciplinas'] as $disciplina)
						{
							$disciplinas .= stringInputCleaner($disciplina).',';
						}
					}
				//disciplinas



				//tipoHorario
					$horarios = '';
					if( (isset($_POST['tipoHorario'])) && (!empty($_POST['tipoHorario']))){
						//$hroariosA = explode(",",$_POST['tipoHorario']);
						foreach($_POST['tipoHorario'] as $tipoHorario)
						{
							$horarios .= stringInputCleaner($tipoHorario).',';
						}
					}
				//tipoHorario


					$tipo_ensinos = '';
					$tipo_formacaos = '';
						$experiencias = '';
						$link_youtube = '';
						$link_lattes = '';

					//valida tipo de plano do professosr
					//if( ((int)$dadosProfessor->plano_id == 2) || ((int)$dadosProfessor->plano_id == 3) ){ //se plano pago
						//tipo_ensinos
							
							if( (isset($_POST['tipoEnsino'])) && (!empty($_POST['tipoEnsino']))){
								foreach($_POST['tipoEnsino'] as $tipoEnsino)
								{
									$tipo_ensinos .= stringInputCleaner($tipoEnsino).',';
								}
							}
						//tipo_ensinos

							//tipoFormacao
								$tipo_formacaos = '';
								if( (isset($_POST['tipoFormacao'])) && (!empty($_POST['tipoFormacao']))){
									foreach($_POST['tipoFormacao'] as $tipoFormacao)
									{
										$tipo_formacaos .= stringInputCleaner($tipoFormacao).',';
									}
								}
							//tipoFormacao


								if( (int)$dadosProfessor->plano_id == 3){
									$experiencias     	= stringInputCleaner($_POST['experiencias']);
									$link_youtube     	= stringInputCleaner($_POST['linkYoutube']);
									$link_lattes     	= stringInputCleaner($_POST['linkLattes']);
								}
					//}



					$userCode	  		= $_SESSION['userCode'];
	            	//upload image profile
	            	if (!empty($_FILES['fileProfile']))
	            	{
						$pastaAnuncio = '../../'.IMG_USER;

							$error 		= array();
							$extension 	= array("jpeg","jpg","png","gif","webp");
							
							$file_name =$_FILES["fileProfile"]["name"];
							$file_tmp  =$_FILES["fileProfile"]["tmp_name"];
							if(!empty($_FILES['fileProfile']['name'])){
								if($_FILES['fileProfile']['size'] > 0)
								{
										$ext=pathinfo($file_name,PATHINFO_EXTENSION);
										if(in_array($ext,$extension))
										{
											$filename 		= basename($file_name,$ext);
											$newFileName 	= $userCode.'.'.uniqid(time(), true).".". $ext;
											
											if(move_uploaded_file($file_tmp, $pastaAnuncio.$newFileName))
											{
										        $cadinsert = "
													UPDATE
														professor
													SET
														foto 		= :foto
													WHERE
														code 	= :code
										        ";
										         
										            $cadresult = $conectDB->prepare($cadinsert);
										            $cadresult->bindParam(':code' , $userCode, PDO::PARAM_STR);
										            $cadresult->bindParam(':foto' , $newFileName, PDO::PARAM_STR);
										            if( $cadresult->execute() )
										            {
										            	$_SESSION['userFoto'] = $newFileName;
										            }
										    }
										}
								}
							}
	            	}
	            	//upload image profile




		        $cadinsert = "
					UPDATE
						professor
					SET
						nome 		= :nome, 
 						celular 	= :celular,
						estado_id 	= :estado_id,
						cidade_id 	= :cidade_id,
						link_youtube 	= :link_youtube,
						link_lattes 	= :link_lattes,
 						experiencias 	= :experiencias,
						disciplina 		= :disciplina,
						tipo_ensino 	= :tipo_ensino,
						tipo_formacao 	= :tipo_formacao,
						horario 		= :horario,
						ser_visto_escola_cidade_diferente= :serVisto,
						visualizar_vaga_outra_cidade= :visualizarVagasCidades
					WHERE
						code 	= :code
		        ";
		        try {
		            $cadresult = $conectDB->prepare($cadinsert);
		            $cadresult->bindParam(':code' , $userCode, PDO::PARAM_STR);
		            $cadresult->bindParam(':nome' , $nome, PDO::PARAM_STR);
		            $cadresult->bindParam(':celular', $celular, PDO::PARAM_STR);
		            $cadresult->bindParam(':estado_id' , $estado_id, PDO::PARAM_STR); 
		            $cadresult->bindParam(':cidade_id' , $cidade_id, PDO::PARAM_STR); 
		            $cadresult->bindParam(':link_youtube' , $link_youtube, PDO::PARAM_STR); 
		            $cadresult->bindParam(':link_lattes' , $link_lattes, PDO::PARAM_STR); 
		            $cadresult->bindParam(':experiencias' , $experiencias, PDO::PARAM_STR); 
		            $cadresult->bindParam(':disciplina' , $disciplinas, PDO::PARAM_STR); 
		            $cadresult->bindParam(':tipo_ensino' , $tipo_ensinos, PDO::PARAM_STR); 
		            $cadresult->bindParam(':tipo_formacao' , $tipo_formacaos, PDO::PARAM_STR); 
		            $cadresult->bindParam(':horario' , $horarios, PDO::PARAM_STR); 
		            $cadresult->bindParam(':serVisto' , $serVisto, PDO::PARAM_STR); 
		            $cadresult->bindParam(':visualizarVagasCidades' , $visualizarVagasCidades, PDO::PARAM_STR); 
		            $cadresult->execute();
		            $cadcontar = $cadresult->rowCount();

			            if($_SESSION['userType'] == 'professor'){
			            	$redir = 'professor';
			            }
			            elseif($_SESSION['userType'] == 'estagiario'){
			            	$redir = 'estagiario';
			            }

				            if($cadcontar > 0) {
				            	$_SESSION['userName']	= $nome;
		 		                echo messageJson('sucesso', 'Atualização realizada com sucesso, por favor, aguarde...', 'redirectToUrl', $redir.'/perfil');
				            }
				            else
				            {
				            	 
				            	echo messageJson('sucesso', 'Alterações realizadas ou sem alterações', 'redirectToUrl', $redir.'/perfil');
				            }

		        }
		        catch(PDOException $e) {
		            echo messageJson('erro', 'Houve algo de errado, tente novamente', '', '');
		        }
	    }
	    else//atualiza a senha
	    {
			if(empty($_POST['userPwd'])){
				echo messageJson('erro', 'Informe sua senha, é obrigatório');exit;
			}
				if( (empty($_POST['userNewPwd'])) || (empty($_POST['userNewPwd2'])) ){
					echo messageJson('erro', 'Informe sua senha nova, é obrigatório');exit;
				}
				if( $_POST['userNewPwd'] !== $_POST['userNewPwd2'] ){
					echo messageJson('erro', 'As novas senhas informadas são diferentes');exit;
				}


			$userPwd      	 = stringInputCleaner($_POST['userPwd']);
			$userNewPwd      = stringInputCleaner($_POST['userNewPwd']);
			$userNewPwd2     = stringInputCleaner($_POST['userNewPwd2']);
				$userNewPwdSave  	= password_hash($userNewPwd2, PASSWORD_DEFAULT);

			//checa se o usuario informou a senha correta
			$results = findItem($conectDB, 'usuario', ' usuario_id, usuario_pwd ', array("usuario_code"=>$_SESSION['userCode']) );
			if(empty($results->usuario_id))
			{
				echo messageJson('erro', 'Houve um erro interno, por favor, faça login novamente no sistema');exit;
			}
			else
			{
				if(password_verify($userPwd, $results->usuario_pwd)){
	            	$usuarioID = $results->usuario_id;

			        $cadinsert = "
						UPDATE
							usuario
						SET
							usuario_pwd 	= :usuario_pwd
						WHERE
							usuario_code 	= :usuario_code and
							usuario_id 		= :usuario_id
			         ";
			        try {
			            $cadresult = $conectDB->prepare($cadinsert);
			            $cadresult->bindParam(':usuario_code' , $_SESSION['userCode'], PDO::PARAM_STR);
			            $cadresult->bindParam(':usuario_id' , $usuarioID, PDO::PARAM_STR);
			            $cadresult->bindParam(':usuario_pwd', $userNewPwdSave, PDO::PARAM_STR);
 			            $cadresult->execute();
			            $cadcontar = $cadresult->rowCount();
			            if($cadcontar > 0) {
			                echo messageJson('sucesso', 'Atualização realizado com sucesso, por favor, aguarde...', 'redirectToUrl', 'usuario/dashboard');
			            }
			            else
			            {
			            	 echo messageJson('sucesso', 'Alterações realizadas ou sem alterações', 'redirectToUrl', 'usuario/dashboard');
			            }
			        }
			        catch(PDOException $e) {
			            echo messageJson('erro', 'Houve algo de errado, tente novamente', '', '');
			        }

	            }
	            else
	            {
	            	echo messageJson('erro', 'A senha atual informada está incorreta, tente novamente');exit;
	            }
	        }
 
	    }	
	}
	else
	{
		echo messageJson('erro', 'Houve algo de errado, tente novamente', '', '');
	}
}