<?php 

ini_set('display_errors', 1);
ini_set('display_startup_erros', 1);
error_reporting(E_ALL);

require_once(__DIR__."/../config.php");

$cs = new cs;

// if (!isset($_SESSION['info_unf']['id']) OR empty($_SESSION['info_unf']['id'])) {   
//     unset($_SESSION);
//     exit("<script>location='../login';</script>");
// } 
    
if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST' && $_POST['token'] == $_SESSION['tkn_log']) {	 
    
    $data = [
	    'login'             => $_POST['login'],
	    'senha'             => $_POST['senha'],
	    'email'             => $_POST['email'],
	    'celular'           => $cs->returnNumbers($_POST['celular']) ?? '',
	    'vencimento'        => $_POST['vencimento'],
	    'permitidos'        => $_POST['permitidos'],
	    'limite'            => $_POST['limite'] ?? '',
	    'limiteg'           => $_POST['limiteg'] ?? '',
	    'limiteug'          => $_POST['limite'] ?? '',
	    'total_users'       => $_POST['total_users'],
	    'criar_gerenciador' => (isset($_POST['criar_gerenciador']) ) ? 1 : NULL,
	    'apagar_usr'        => (isset($_POST['apagar_usr']) && $_POST['apagar_usr'] == 'sim') ? 1 : NULL,
        'g_responsavel'     => ($_SESSION['info_unf']['id'] == 1) ? 1010101010 : $_SESSION['info_unf']['id'],
	    'disponivel'        => $_POST['disponivel'],
	    'ger_limit'         => (int)$_SESSION['info_unf']['limite_gerenciadores'], 
	    'error'             => true
    
    ];
                
    
    switch ($data) {
    	
    	case empty($data['login']) || empty($data['limite']):
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'Preencha os campos de login e limite!'
    		]);	
    		break;

        case !$cs->passwordValid($data['senha']):  
            echo json_encode([
                'success' => false, 
                'class'   => 'alert-danger', 
                'text'    => 'O campo senha deve ter no mínimo 1 letra maiúscula, letra minúscula, número, símbolo: @#$% e no minimo 8 caracteres!'
            ]); 
            break;    

    	case empty($data['email']) || !filter_var($data['email'], FILTER_VALIDATE_EMAIL) || $cs->emailAllowed($data['email']):
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'E-mail vazio ou email inválido!'
    		]);	
    		break;
    	
    	case empty($data['celular']) || strlen((string) $data['celular']) > 11 || strlen((string) $data['celular']) < 10:
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'O numero do celular informado é invalido.'
    		]);	
    		break;	

    	case !is_numeric($data['limite']):
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'Preencha corretamente o campo de limite!'
    		]);	
    		break;	

    	case $data['ger_limit'] <= $data['total_users']:
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'Você já alcançou seu limite de gerenciadores.']);	
	    	break;
    	
    	case $data['disponivel'] < 0:
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'Você já alcançou seu limite de usuários para seu gerenciador.'
    		]);	
	    	break;

	    case $data['limite'] > $data['disponivel']:
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'O limite de usuários definido é maior que o disponível. <p>Insira um valor menor.</p>'
    		]);	
	    	break;

	    case $cs->check_available($data['login']):
    		echo json_encode([
    			'success' => false, 
    			'class'   => 'alert-danger', 
    			'text'    => 'Este login já está em uso.<p>Escolha outro!</p>'
    		]);	
	    	break;	

        case isset($data['criar_gerenciador']) && !is_numeric($data['limiteg']) || isset($data['criar_gerenciador']) &&  !is_numeric($data['limiteug']):
                echo json_encode([
                    'success' => false, 
                    'class'   => 'alert-danger', 
                    'text'    => 'Preencha corretamente os campos de limites!'
                ]); 
                break;

        case isset($data['criar_gerenciador']) && $data['limiteg'] > $_SESSION['info_unf']['limite_gerenciadores']:
            echo json_encode([
                'success' => false, 
                'class'   => 'alert-danger', 
                'text'    => 'O limite de gerenciadores não pode ser superior ao seu!'
            ]); 
            break;  

        case isset($data['criar_gerenciador']) &&  $data['limiteug'] > $_SESSION['info_unf']['limite_users_gerenciadores']:
            echo json_encode([
                'success' => false, 
                'class'   => 'alert-danger', 
                'text'    => 'O limite de usuários do gerenciador não pode ser superior ao seu!']); 
            break; 

        // case !isset($data['g_responsavel']) OR empty($data['g_responsavel']):
        //     echo json_encode([
        //         'success' => false, 
        //         'class'   => 'alert-danger', 
        //         'text'    => 'Por motivos de segurança seu gerenciador está bloqueado, entre em contato com a administração'
        //     ]); 
        //     break;     

	    default: 
    	    $data['error'] = false;	    			
	        break;	
    }
    
    
    if($data['error'] == false)
    {
        $id                      = strtotime('now');  
        $login                   = $cs->filterKey($data['login']);
        $senha                   = $cs->filterKey($data['senha']);            
        $email                   = $data['email'];
        $celular                 = $data['celular'];
        $permitidos              = $data['permitidos'];
        $limite                  = $data['limite'];
        $limiteg                 = $data['limiteg'];
        $limiteug                = $data['limiteug'];
        $vencimento              = $data['vencimento'];
        $apagar_usr              = (int) $data['apagar_usr'];
        $criar_gerenciador       = (int) $data['criar_gerenciador'];
        $gerenciador_responsavel = $data['g_responsavel']; 
        
        if($permitidos == "") {
            $permitidos = $_SESSION['info_unf']['profiles_limitados'];
        } else {
            $permitidos = implode(';', $permitidos);         
        }


        
        $sql = "
            INSERT INTO 
                gerenciadores 
                (
                    apagar_usuarios,profiles_limitados,id,
                    login,senha,email,
                    celular,limite_usuarios,status,
                    observacoes,total_creditos,vencimento,
                    gerenciador_responsavel,limite_gerenciadores,limite_users_gerenciadores,
                    criar_gerenciador
                ) 
            VALUES 
                (
                    '$apagar_usr','$permitidos','$id', 
                    '$login', '$senha', '$email', 
                    '$celular','".$limite."', 'normal', 
                    '',0, '$vencimento', 
                    '$gerenciador_responsavel','$limiteg','$limiteug', 
                    '$criar_gerenciador'
                )
        ";

        
        
        if($cs->executeQuery($sql)) {
        	echo json_encode([
        		'success' => true, 
        		'class'   => 'alert-success', 
        		'text'    => 'Gerenciador cadastrado com sucesso!'
        	]);
           
        } else {
            
            echo json_encode([
            	'success' => false,
                'class'   => 'alert-danger', 
                'text'    => 'Erro ao cadastrar. <!--'.print_r($cs->errors, true).'-->' 
            ]);
            
        }
           
        
    }
}


?>