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


require '../libs/RDSImage.php';
 

$dataCadastro = date("Y-m-d H:i:s");
$dadosUsuario = findItem($conectDB, 'usuario', ' * ', array("code"=>$_SESSION['userCode']) );
if(empty($dadosUsuario->id))
{
	echo messageJson('erro', 'Faça Login');exit;
	exit;
}
$configuracoesSite = findItem($conectDB, 'site', ' * ', array("usuario_id"=>$_SESSION['userID']) );



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

	//$token     = stringInputCleaner($_POST['token']);
	$destaque = 0;
  	 $valor = str_replace('.', '', $_POST['valor']);
    $valor = str_replace(',', '.', $valor);
    $taxa_do_condominio = str_replace('.', '', $_POST['taxa_do_condominio']);
    $taxa_do_condominio = str_replace(',', '.', $taxa_do_condominio);
    $cadinsert = "
	    INSERT into imovel
	    	(usuario_id, codigo, titulo, situacao, categoria, valor, indice_de_reajuste_ao_consumidor, area_total, indice_cadastral, construtora, idade, posicao, topografia, taxa_do_condominio, iptu, permuta, imovel_ocupado, rua, numero, bairro, estado, cidade, descricao_do_imovel, observacoes_internas, condicao_de_pagamento, quitado, comissao_da_imobiliaria, informacoes_documentacao, dormitorio, suite, suite_c_closet, demi_suite, sala, sala_de_estar, sala_de_tv, garagem, garagem_descoberta, banheiro, andar, elevador, edicula, horta, jardim, area_de_servico, bar, biblioteca, closet, copa, despensa, escritorio, lareira, sala_de_ginastica, sala_de_jantar, acesso_a_deficiente, gerador_de_energia, guarita, lavanderia_coletiva, medicao, agua_individual, portaria_24_horas, bicicletario, churrasqueira, ducha_externa, piscina, playground, quadra_de_esportes, quadra_tenis, sala_ginastica_fitness, salao_de_festas, salao_de_jogos, sauna, alarme, camera_de_vigilancia, fechadura_reforcada, interfone, muro_com_cerca_eletrica, portao_eletronico, vigilancia_24_horas, destaque_home, data_criacao)
	    VALUES
	    	(:usuario_id, :codigo, :titulo, :situacao, :categoria, :valor, :indice_de_reajuste_ao_consumidor, :area_total, :indice_cadastral, :construtora, :idade, :posicao, :topografia, :taxa_do_condominio, :iptu, :permuta, :imovel_ocupado, :rua, :numero, :bairro, :estado, :cidade, :descricao_do_imovel, :observacoes_internas, :condicao_de_pagamento, :quitado, :comissao_da_imobiliaria, :informacoes_documentacao, :dormitorio, :suite, :suite_c_closet, :demi_suite, :sala, :sala_de_estar, :sala_de_tv, :garagem, :garagem_descoberta, :banheiro, :andar, :elevador, :edicula, :horta, :jardim, :area_de_servico, :bar, :biblioteca, :closet, :copa, :despensa, :escritorio, :lareira, :sala_de_ginastica, :sala_de_jantar, :acesso_a_deficiente, :gerador_de_energia, :guarita, :lavanderia_coletiva, :medicao, :agua_individual, :portaria_24_horas, :bicicletario, :churrasqueira, :ducha_externa, :piscina, :playground, :quadra_de_esportes, :quadra_tenis, :sala_ginastica_fitness, :salao_de_festas, :salao_de_jogos, :sauna, :alarme, :camera_de_vigilancia, :fechadura_reforcada, :interfone, :muro_com_cerca_eletrica, :portao_eletronico, :vigilancia_24_horas, :destaque_home, :data_criacao)";
    try {

        $imovelPost = array();
        //trata post
            foreach($_POST as $coluna => $itemPost){
                if(!is_array($_POST[$coluna])){
                    if(!empty($itemPost)){
                        $imovelPost[$coluna] = stringInputCleaner($itemPost) ;
                        //echo "$coluna=$itemPost<br>";
                    }
                    else
                    {
                        $imovelPost[$coluna] = $itemPost;
                        //echo "$coluna=$itemPost<br>";
                    }
                }
            }
        //trata post
		
			

			
            //print_r($imovelPost);exit;
             
        $cadresult = $conectDB->prepare($cadinsert);
        $codigo   = uniqid(time().'.'.rand(), true);
        $cadresult->bindParam(':usuario_id' , $_SESSION['userID'], PDO::PARAM_STR);
        $cadresult->bindParam(':codigo' , $codigo, PDO::PARAM_STR);
        $cadresult->bindParam(':titulo' , $imovelPost['titulo'], PDO::PARAM_STR);
        $cadresult->bindParam(':situacao' , $imovelPost['situacao'], PDO::PARAM_STR);
        $cadresult->bindParam(':categoria' , $imovelPost['categoria'], PDO::PARAM_STR);
        $cadresult->bindParam(':valor' , $valor, PDO::PARAM_STR);
        $cadresult->bindParam(':indice_de_reajuste_ao_consumidor' , $imovelPost['indice_de_reajuste_ao_consumidor'], PDO::PARAM_STR);
        $cadresult->bindParam(':area_total' , $imovelPost['area_total'], PDO::PARAM_STR);
        $cadresult->bindParam(':indice_cadastral' , $imovelPost['indice_cadastral'], PDO::PARAM_STR);
        $cadresult->bindParam(':construtora' , $imovelPost['construtora'], PDO::PARAM_STR);
        $cadresult->bindParam(':idade' , $imovelPost['idade'], PDO::PARAM_STR);
        $cadresult->bindParam(':posicao' , $imovelPost['posicao'], PDO::PARAM_STR);
        $cadresult->bindParam(':topografia' , $imovelPost['topografia'], PDO::PARAM_STR);
        $cadresult->bindParam(':taxa_do_condominio' , $taxa_do_condominio, PDO::PARAM_STR);
        $cadresult->bindParam(':iptu' , $imovelPost['iptu'], PDO::PARAM_STR);
        $cadresult->bindParam(':permuta' , $imovelPost['permuta'], PDO::PARAM_STR);
        $cadresult->bindParam(':imovel_ocupado' , $imovelPost['imovel_ocupado'], PDO::PARAM_STR);
        $cadresult->bindParam(':rua' , $imovelPost['rua'], PDO::PARAM_STR);
        $cadresult->bindParam(':numero' , $imovelPost['numero'], PDO::PARAM_STR);
        $cadresult->bindParam(':bairro' , $imovelPost['bairro'], PDO::PARAM_STR);
        $cadresult->bindParam(':estado' , $imovelPost['estado'], PDO::PARAM_STR);
        $cadresult->bindParam(':cidade' , $imovelPost['cidade'], PDO::PARAM_STR);
        $cadresult->bindParam(':descricao_do_imovel' , $imovelPost['descricao_do_imovel'], PDO::PARAM_STR);
        $cadresult->bindParam(':observacoes_internas' , $imovelPost['observacoes_internas'], PDO::PARAM_STR);
        $cadresult->bindParam(':condicao_de_pagamento' , $imovelPost['condicao_de_pagamento'], PDO::PARAM_STR);
        $cadresult->bindParam(':quitado' , $imovelPost['quitado'], PDO::PARAM_STR);
        $cadresult->bindParam(':comissao_da_imobiliaria' , $imovelPost['comissao_da_imobiliaria'], PDO::PARAM_STR);
        $cadresult->bindParam(':informacoes_documentacao' , $imovelPost['informacoes_documentacao'], PDO::PARAM_STR);
        $cadresult->bindParam(':dormitorio' , $imovelPost['dormitorio'], PDO::PARAM_STR);
        $cadresult->bindParam(':suite' , $imovelPost['suite'], PDO::PARAM_STR);
        $cadresult->bindParam(':suite_c_closet' , $imovelPost['suite_c_closet'], PDO::PARAM_STR);
        $cadresult->bindParam(':demi_suite' , $imovelPost['demi_suite'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala' , $imovelPost['sala'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala_de_estar' , $imovelPost['sala_de_estar'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala_de_tv' , $imovelPost['sala_de_tv'], PDO::PARAM_STR);
        $cadresult->bindParam(':garagem' , $imovelPost['garagem'], PDO::PARAM_STR);
        $cadresult->bindParam(':garagem_descoberta' , $imovelPost['garagem_descoberta'], PDO::PARAM_STR);
        $cadresult->bindParam(':banheiro' , $imovelPost['banheiro'], PDO::PARAM_STR);
        $cadresult->bindParam(':andar' , $imovelPost['andar'], PDO::PARAM_STR);
        $cadresult->bindParam(':elevador' , $imovelPost['elevador'], PDO::PARAM_STR);
        $cadresult->bindParam(':edicula' , $imovelPost['edicula'], PDO::PARAM_STR);
        $cadresult->bindParam(':horta' , $imovelPost['horta'], PDO::PARAM_STR);
        $cadresult->bindParam(':jardim' , $imovelPost['jardim'], PDO::PARAM_STR);
        $cadresult->bindParam(':area_de_servico' , $imovelPost['area_de_servico'], PDO::PARAM_STR);
        $cadresult->bindParam(':bar' , $imovelPost['bar'], PDO::PARAM_STR);
        $cadresult->bindParam(':biblioteca' , $imovelPost['biblioteca'], PDO::PARAM_STR);
        $cadresult->bindParam(':closet' , $imovelPost['closet'], PDO::PARAM_STR);
        $cadresult->bindParam(':copa' , $imovelPost['copa'], PDO::PARAM_STR);
        $cadresult->bindParam(':despensa' , $imovelPost['despensa'], PDO::PARAM_STR);
        $cadresult->bindParam(':escritorio' , $imovelPost['escritorio'], PDO::PARAM_STR);
        $cadresult->bindParam(':lareira' , $imovelPost['lareira'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala_de_ginastica' , $imovelPost['sala_de_ginastica'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala_de_jantar' , $imovelPost['sala_de_jantar'], PDO::PARAM_STR);
        $cadresult->bindParam(':acesso_a_deficiente' , $imovelPost['acesso_a_deficiente'], PDO::PARAM_STR);
        $cadresult->bindParam(':gerador_de_energia' , $imovelPost['gerador_de_energia'], PDO::PARAM_STR);
        $cadresult->bindParam(':guarita' , $imovelPost['guarita'], PDO::PARAM_STR);
        $cadresult->bindParam(':lavanderia_coletiva' , $imovelPost['lavanderia_coletiva'], PDO::PARAM_STR);
        $cadresult->bindParam(':medicao' , $imovelPost['medicao'], PDO::PARAM_STR);
        $cadresult->bindParam(':agua_individual' , $imovelPost['agua_individual'], PDO::PARAM_STR);
        $cadresult->bindParam(':portaria_24_horas' , $imovelPost['portaria_24_horas'], PDO::PARAM_STR);
        $cadresult->bindParam(':bicicletario' , $imovelPost['bicicletario'], PDO::PARAM_STR);
        $cadresult->bindParam(':churrasqueira' , $imovelPost['churrasqueira'], PDO::PARAM_STR);
        $cadresult->bindParam(':ducha_externa' , $imovelPost['ducha_externa'], PDO::PARAM_STR);
        $cadresult->bindParam(':piscina' , $imovelPost['piscina'], PDO::PARAM_STR);
        $cadresult->bindParam(':playground' , $imovelPost['playground'], PDO::PARAM_STR);
        $cadresult->bindParam(':quadra_de_esportes' , $imovelPost['quadra_de_esportes'], PDO::PARAM_STR);
        $cadresult->bindParam(':quadra_tenis' , $imovelPost['quadra_tenis'], PDO::PARAM_STR);
        $cadresult->bindParam(':sala_ginastica_fitness' , $imovelPost['sala_ginastica_fitness'], PDO::PARAM_STR);
        $cadresult->bindParam(':salao_de_festas' , $imovelPost['salao_de_festas'], PDO::PARAM_STR);
        $cadresult->bindParam(':salao_de_jogos' , $imovelPost['salao_de_jogos'], PDO::PARAM_STR);
        $cadresult->bindParam(':sauna' , $imovelPost['sauna'], PDO::PARAM_STR);
        $cadresult->bindParam(':alarme' , $imovelPost['alarme'], PDO::PARAM_STR);
        $cadresult->bindParam(':camera_de_vigilancia' , $imovelPost['camera_de_vigilancia'], PDO::PARAM_STR);
        $cadresult->bindParam(':fechadura_reforcada' , $imovelPost['fechadura_reforcada'], PDO::PARAM_STR);
        $cadresult->bindParam(':interfone' , $imovelPost['interfone'], PDO::PARAM_STR);
        $cadresult->bindParam(':muro_com_cerca_eletrica' , $imovelPost['muro_com_cerca_eletrica'], PDO::PARAM_STR);
        $cadresult->bindParam(':portao_eletronico' , $imovelPost['portao_eletronico'], PDO::PARAM_STR);
        $cadresult->bindParam(':vigilancia_24_horas' , $imovelPost['vigilancia_24_horas'], PDO::PARAM_STR);
        $cadresult->bindParam(':destaque_home' , $destaque, PDO::PARAM_STR);
        $cadresult->bindParam(':data_criacao' , $dataCadastro, PDO::PARAM_STR);
        $cadresult->execute();
        $cadcontar = $cadresult->rowCount();
        if($cadcontar > 0) {
            $id_imovel = $conectDB->lastInsertId();
			
			
			///checa cadastro no gerenciador
			if((int)$_POST['cadastraGerenciador'] == 1){
                if( (isset($_POST['gerenciadorImovelID'])) && (!empty($_POST['gerenciadorImovelID']))){

    				$dadosUser = findItem($conectDB, 'usuario', ' gerenciador_imobiliario_token ', array("id"=>$_SESSION['userID']) );

    				if(!empty($dadosUser->gerenciador_imobiliario_token)){
    					$ch = curl_init($configSistema['apiBaseURL'].'cadastro');
    					curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    					curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    					   'Content-Type: application/json',
    					   'Authorization: '.$dadosUser->gerenciador_imobiliario_token
    					 ));
    					curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    					curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    					curl_setopt($ch, CURLOPT_POST, 1);
    					curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($imovelPost));
    					$data = curl_exec($ch);
    					//print_r($data); 
    					
    					$retorno = json_decode($data);
    					if( (isset($retorno->status)) && ($retorno->status == 'error') )
    					{}
    					else
    					{
    						///atualiza o imovel da base do gerenciador de sites, com o ID do imóvel cadastrado no gerenciador imobiliario
    						$imovelGerenciadorID = $retorno->imovelID;
    						$updateImovel = "
    							UPDATE
    								imovel
    							SET
    								gerencie_imovel_id 		= :gerencie_imovel_id
    							WHERE
    								id 	= :id
    						";
    							$updateImovelNovo = $conectDB->prepare($updateImovel);
    							$updateImovelNovo->bindParam(':id' , $id_imovel, PDO::PARAM_STR);
    							$updateImovelNovo->bindParam(':gerencie_imovel_id' , $imovelGerenciadorID, PDO::PARAM_STR);
    							$updateImovelNovo->execute();
    					}
    				}
                }
			}
			//exit;
			
			 
			 
			
            $destinoImagens = '../../assets/storage/'.$_SESSION['userCode'].'/imoveis/'.$id_imovel.'/';
            if (!file_exists( $destinoImagens )) {
                mkdir( $destinoImagens, 0777, true);
            }

                $contaBanner = 1;
                $maxDim = 1000;
                $imagem = $_POST['imagem'] ;
                foreach($_POST['imagem'] as $keys => $values)
                {
                    if( (int)$imagem[$keys]["posicao"] > 1){
                        
                        if(!empty($_POST['imagem'][$keys]['arquivo']))
                        {
                            $image_data     = $_POST['imagem'][$keys]["arquivo"];
                            list($type, $data) = explode(';', $image_data); 
                            if (preg_match('/^data:image\/(\w+);base64,/', $image_data, $type)) {
                                $data = substr($data, strpos($data, ',') + 1);
                                $type = strtolower($type[1]);//pega extensão

                                if (!in_array($type, [ 'jpg', 'jpeg', 'bmp', 'png', 'webp' ])) {
                                    //throw new \Exception('invalid image type');
                                }
                                $data = base64_decode($data);

                                if ($data === false) {
                                    //throw new \Exception('base64_decode failed');
                                }
                            } else {
                                //throw new \Exception('did not match data URI with image data');
                            }
                            $nome_arquivo               = uniqid(md5(date("d/m/Y H:i:s"))).'.'.$type;
                            $nome_arquivoCompressao     = uniqid(md5(date("d/m/Y H:i:s"))).'.c.'.$type;
                            if(file_put_contents($destinoImagens.'/'.$nome_arquivo, $data)){
                                
                                
                                //redimensiona  
                                    $arquivoRedimensiona = $destinoImagens.'/'.$nome_arquivo;
                                    list($width, $height, $type, $attr) = getimagesize( $arquivoRedimensiona );
                                    if ( $width > $maxDim || $height > $maxDim ){
                                        $target_filename = $arquivoRedimensiona;
                                        $ratio = $width/$height;
                                        if( $ratio > 1) {
                                            $new_width = $maxDim;
                                            $new_height = $maxDim/$ratio;
                                        } else {
                                            $new_width = $maxDim*$ratio;
                                            $new_height = $maxDim;
                                        }
                                        $src = imagecreatefromstring( file_get_contents( $arquivoRedimensiona ) );
                                        $dst = imagecreatetruecolor( $new_width, $new_height );
                                        imagecopyresampled( $dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
                                        imagedestroy( $src );
                                        imagepng( $dst, $target_filename ); // adjust format as needed
                                        imagedestroy( $dst );
                                    }
                                //redimensiona  
                                
                                //compressao da imagem
                                $compressaoResultado = compressao($destinoImagens.'/'.$nome_arquivo, $destinoImagens.'/'.$nome_arquivoCompressao, 80);
                                if( !empty($compressaoResultado)){
                                    $nome_arquivoSalva = $nome_arquivoCompressao;
                                    unlink($destinoImagens.'/'.$nome_arquivo);
                                }
                                else
                                {
                                    $nome_arquivoSalva = $nome_arquivo;
                                }

                                $posicao    = $imagem[$keys]["posicao"];
                                $cadinsert = "INSERT into imovel_galeria (imovel_id, img, posicao) VALUES (:imovel_id, :img, :posicao)";
                                try {
                                    $cadresult = $conectDB->prepare($cadinsert);
                                    $cadresult->bindParam(':imovel_id' ,    $id_imovel, PDO::PARAM_STR);
                                    $cadresult->bindParam(':img' ,          $nome_arquivoSalva, PDO::PARAM_STR);
                                    $cadresult->bindParam(':posicao' ,      $posicao, PDO::PARAM_STR);
                                    if($cadresult->execute()){

                                        //adiciona marca dagua
											if(@$_POST['imagensMarcaDagua'] == 1){
												$codigo   	= uniqid(time().'.'.rand(), true);
												$ext 		= pathinfo($nome_arquivoSalva, PATHINFO_EXTENSION);
												
												if (in_array($ext, [ 'jpg', 'jpeg', 'bmp', 'png', 'webp' ])) {

													
														$fotoUpload = $destinoImagens.'/'.$nome_arquivoSalva;
														$logo 		= '../../assets/storage/'.$_SESSION['userCode'].'/'.$configuracoesSite->logo_menor;
														$padding = 10; // distance to border in pixels for watermark image
														$opacity = 50; // image opacity for transparent watermark
														$watermark 	= imagecreatefrompng($logo);
														
														
														$handlers = array(
															'jpg'  => 'imagecreatefromjpeg',
															'jpeg' => 'imagecreatefromjpeg',
															'png'  => 'imagecreatefrompng',
															'gif'  => 'imagecreatefromgif'
														);
														$extension = strtolower(substr($fotoUpload, strrpos($fotoUpload, '.')+1));
														if ($handler = $handlers[$extension]){
															$image = $handler($fotoUpload);
														}
															//$image 		= imagecreatefrompng($fotoUpload);

															if($image && $watermark){
																$watermark_size = getimagesize($logo);
																$watermark_width = $watermark_size[0];
																$watermark_height = $watermark_size[1];

																$image_size = getimagesize($fotoUpload);
																$dest_x = $image_size[0] - $watermark_width - $padding;
																$dest_y = $image_size[1] - $watermark_height - $padding;

																imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $opacity);
																 
																$dest = $destinoImagens.'/'.$nome_arquivoSalva;
																imagepng($image, $dest);
																//header("content-type: image/jpeg");
																//imagejpeg($image);
																//imagedestroy($image);
																//imagedestroy($watermark);
															}
														
												}
											}
                                        //adiciona marca dagua
                                    }
                                }
                                catch(PDOException $e) {
                                    //echo $e;
                                }
                            }
                        }
                    }
                    $contaBanner ++;
                }
                
 


            echo json_encode(array('', 'Tudo certo! foi cadastrado com sucesso.', ''));
        }
    }
    catch(PDOException $e) {
        echo $e;
    }
}