<?php 

	if (Session::get("tipo_usuario") != "2"){ show_403();}
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		import_file(DIR_MODELS."Model.class.php");

		$mensagem = filter_input(INPUT_POST, "mensagem", FILTER_DEFAULT);
		$id_topico = encrypt_decode(filter_input(INPUT_POST, "topico", FILTER_SANITIZE_STRING));
		
		$anexo = upload_file($_FILES["arquivo"], "anexos/");
		$dir_anexo = (!empty($anexo[0])) ? $anexo[0] : null;
	
		$model = new Model();

		$result = $model->query("
			SELECT * FROM caixa_mensagem 
			WHERE 
				id_usuario = :id_usuario AND 
				id_topico = :id_topico
		", [
			":id_usuario" => Session::get("id_usuario"), 
			":id_topico" => $id_topico
		]);

		if ($result->rowCount() == 0) {
			$id_caixa_mensagem = $model->insert("caixa_mensagem", [
				"id_usuario" => Session::get("id_usuario"),
				"id_topico" => $id_topico
			]); 

			if ($id_caixa_mensagem > 0) {
				$last_query = $model->lastQuery();
				$model->insert("historico", [
					"comando_sql" => $last_query,
					"datahora_acao" => date("Y-m-d H:i:s"),
					"id_usuario" => Session::get("id_usuario")
				]);
			}
			else{
				$model->rollback();
				echo json_encode(["status" => false]);
				exit();
			}
		}
		else{
			$id_caixa_mensagem = $result->fetch()->id_caixa_mensagem;
		}

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

		$result = $model->insert("mensagem", [
			"mensagem" => $mensagem,
			"anexo_mensagem" => $dir_anexo,
			"id_usuario" => Session::get("id_usuario"),
			"id_caixa_mensagem" => $id_caixa_mensagem,
			"datahora_mensagem" => $datahora,
			"visualizado_mensagem" => "N",
			"status_mensagem" => "S"
		]);

		if ($result > 0) {
			$last_query = $model->lastQuery();
			$model->insert("historico", [
				"comando_sql" => $last_query,
				"datahora_acao" => date("Y-m-d H:i:s"),
				"id_usuario" => Session::get("id_usuario")
			]);

			$model->commit();
			echo json_encode(["status" => true, "dados" => ["mensagem" => $mensagem, "anexo_mensagem" => (!empty($dir_anexo)) ? show_link($dir_anexo) : null, "datahora_mensagem" => date("d/m/Y H:i", strtotime($datahora))]]);
		}
		else{
			$model->rollback();
			echo json_encode(["status" => false]);
		}
	}
	else{
		show_403();
	}

?>