<?php
require 'sessions.php';
require 'security_admin.php';
require_once '../../config/db.php';

session_start();
if (!isset($_SESSION['admin_session'])) {
    header("Location: ../login.php");
    exit;
}

$logo = $_FILES['logo'] ?? '';
$local = '';
$nameLogo = null;

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['send-configs'])) {
    
    $data = filter_input_array(INPUT_POST, FILTER_DEFAULT);
    //var_dump($data);
    // Verifica se os dados não estão vazios
    if (empty($data['name-platform']) || empty($data['color-platform'])) {
        $_SESSION['toast_message'] = $toastMessage = 'Preencha todos os campos.';
        $_SESSION['toast_type'] = $toastType = 'error';

        // Caso não esteja vazio a logo, faz as validações necessárias
    } elseif (!empty($logo) && $logo['error'] === 0) {
        $formatsAlloweds = ['image/jpeg', 'image/png', 'image/gif', 'image/avif'];
        $extAlloweds = ['jpeg', 'png', 'gif', 'avif'];
        $ext = strtolower(pathinfo($logo['name'], PATHINFO_EXTENSION));
        $nameLogo = 'logo_platform' . '.' . $ext;

        // Verifica se o formato do arquivo é válido
        if (!in_array($logo['type'], $formatsAlloweds)) {
            $_SESSION['toast_message'] = $toastMessage = 'Formato de arquivo não aceito.';
            $_SESSION['toast_type'] = $toastType = 'error';

            // Verifica extensão do arquivo
        } elseif (!in_array($ext, $extAlloweds)) {
            $_SESSION['toast_message'] = $toastMessage = 'Extensão de arquivo não permitida.';
            $_SESSION['toast_type'] = $toastType = 'error';

            // Verifica tamanho do arquivo se excede 5MB
        } elseif ($logo['size'] > 5 * 1024 * 1024) {
            $_SESSION['toast_message'] = $toastMessage = 'Tamanho de arquivo ultrapassa o permitido. (5MB)';
            $_SESSION['toast_type'] = $toastType = 'error';
        } else {

            // Tenta mover a logo para a pasta uploads
            if (move_uploaded_file($logo['tmp_name'], $local . $nameLogo)) {
               
            } else {

                // Caso houver falha ao mover, cai aqui
                $_SESSION['toast_message'] = $toastMessage = 'Ocorreu um erro ao atualizar a LOGO.';
                $_SESSION['toast_type'] = $toastType = 'error';
            }
        }
    }
    // Faz o update na tabela config
    try {
        $pdo->beginTransaction();
        $stmtUpdatePlatform = $pdo->prepare("UPDATE configs SET canal_link = :canal_link, support_link = :support_link, support_link2 = :support_link2, support_link3 = :support_link3, text_pass = :text_pass, text_login = :text_login, name_platform = :name_platform, color_primary = :color_primary, logo = :logo, min_dep = :min_dep, min_with = :min_with, max_with = :max_with, taxa_saq = :taxa_saq, max_with_day = :max_with_day, my_domain = :my_domain, dep_active = :dep_active");
        $stmtUpdatePlatform->execute([
            ':canal_link' => $data['canal_link'],
            ':support_link' => $data['support_link'],
            ':support_link2' => $data['support_link2'],
            ':support_link3' => $data['support_link3'],
            ':text_pass' => $data['text_pass'],
            ':text_login' => $data['text_login'],
            ':name_platform' => $data['name-platform'],
            ':color_primary' => $data['color-platform'],
            ':logo' => $nameLogo,
            ':min_dep' => $data['min_dep'],
            ':min_with' => $data['min_with'],
            ':max_with' => $data['max_with'],
            ':taxa_saq' => $data['taxa_saq'],
            ':max_with_day' => $data['max_with_day'],
            ':my_domain' => $data['my_domain'],
            ':dep_active' => $data['dep_active']
        ]);
        $pdo->commit();
        $_SESSION['toast_message'] = $toastMessage = 'Configurações atualizadas com sucesso!';
        $_SESSION['toast_type'] = $toastType = 'success';
        header("Location: " . $_SERVER['PHP_SELF']);
        exit;
    } catch (PDOException $e) {
        $pdo->rollBack();
        $_SESSION['toast_message'] = $toastMessage = 'Ocorreu um erro ao atualizar as configurações! ' .$e->getMessage();
        $_SESSION['toast_type'] = $toastType = 'error';
    }
    
}
