<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
session_start();
require 'verifica_cookie.php';
require 'conexao.php';

$pdo      = Conexao::getInstance();
$nome     = (isset($_POST['nome'])) ? trim(strtoupper($_POST['nome'])) : '';
$telefone = (isset($_POST['telefone'])) ? trim(preg_replace('/[^0-9]/', '', $_POST['telefone'])) : '';
$cpf      = (isset($_POST['cpf'])) ? trim(preg_replace('/[^0-9]/', '', $_POST['cpf'])) : '';

// Validação do nome
if (empty($nome) || strlen($nome) < 3) :
    echo json_encode(['status' => '0', 'text' => 'O nome deve ter no mínimo 3 caracteres!']);
    exit;
endif;

// Validação do telefone
if (empty($telefone)) :
    echo json_encode(['status' => '0', 'text' => 'Informe o telefone do cliente!']);
    exit;
endif;

// Verifica nome duplicado
$sql = "SELECT cli_001 FROM clientes WHERE UPPER(cli_002) = UPPER(:nome) AND sit_001 = 4";
$stm = $pdo->prepare($sql);
$stm->bindValue(':nome', $nome);
$stm->execute();
if ($stm->fetch(PDO::FETCH_OBJ)) :
    echo json_encode(['status' => '0', 'text' => 'Já existe um cliente com este nome!']);
    exit;
endif;

// Verifica telefone duplicado
$sql = "SELECT cli_001 FROM clientes WHERE cli_013 = :telefone AND sit_001 = 4";
$stm = $pdo->prepare($sql);
$stm->bindValue(':telefone', $telefone);
$stm->execute();
if ($stm->fetch(PDO::FETCH_OBJ)) :
    echo json_encode(['status' => '0', 'text' => 'Já existe um cliente com este telefone!']);
    exit;
endif;

// Verifica CPF duplicado (quando preenchido)
if (!empty($cpf)) :
    $sql = "SELECT cli_001 FROM clientes WHERE cli_004 = :cpf AND sit_001 = 4";
    $stm = $pdo->prepare($sql);
    $stm->bindValue(':cpf', $cpf);
    $stm->execute();
    if ($stm->fetch(PDO::FETCH_OBJ)) :
        echo json_encode(['status' => '0', 'text' => 'Já existe um cliente com este CPF!']);
        exit;
    endif;
endif;

// Gera o próximo cli_001
$sql = "SELECT COALESCE(MAX(cli_001), 0) + 1 AS proximo FROM clientes";
$stm = $pdo->prepare($sql);
$stm->execute();
$proximo = $stm->fetch(PDO::FETCH_OBJ)->proximo;

// Insere o cliente
$sql  = "INSERT INTO clientes (cli_001, cli_002, cli_013, cli_004, sit_001) ";
$sql .= "VALUES (:cli_001, :nome, :telefone, :cpf, 4)";
$stm  = $pdo->prepare($sql);
$stm->bindValue(':cli_001', $proximo, PDO::PARAM_INT);
$stm->bindValue(':nome', $nome);
$stm->bindValue(':telefone', $telefone);
$stm->bindValue(':cpf', (!empty($cpf)) ? $cpf : null);
$retorno = $stm->execute();

if ($retorno) :
    echo json_encode([
        'status' => '1',
        'text'   => 'Cliente cadastrado com sucesso!',
        'id'     => $proximo,
        'nome'   => $nome
    ]);
else :
    echo json_encode(['status' => '0', 'text' => 'Erro ao cadastrar cliente!']);
endif;
