<?php
session_start();

require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/save-userid.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/common-new.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/includes/countryapi.php';


// Honeypt
if (isset($_POST['check-bot-entry']) && $_POST['check-bot-entry']) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 405 Method Not Allowed');
    exit;
}
// end Honeypot

$countryNameId = $countryNameId ?? '';
preg_match('/^\d{4}/', $countryNameId, $matches);
$country_code = $matches[0] ?? '';

$thanks_submitted_url = "/forms/thanks_submitted.php";
$thanks_url = "/forms/thanks.php";

$country = substr($countryNameId ?? '', 0, 4);
$countryName = substr($countryNameId, 4);

$action_value = $_POST['action_value'] ?? '';
$sessionData = $_SESSION['user-utm'] ?? [];
$HTTP_REFERER = $_SERVER['HTTP_REFERER'];


$gclid = $sessionData['gclid'] ?? $_POST['gclid'] ?? $_COOKIE['gclid'];
$utm_source = $sessionData['utm_source'] ?? $_POST['utm_source'] ?? $_COOKIE['utm_source'];
$utm_medium = $sessionData['utm_medium'] ?? $_POST['utm_medium'] ?? $_COOKIE['utm_medium'];
$utm_campaign = $sessionData['utm_campaign'] ?? $_POST['utm_campaign'] ?? $_COOKIE['utm_campaign'];
$utm_adgroup = $sessionData['utm_adgroup'] ?? $_POST['utm_adgroup'] ?? $_COOKIE['utm_adgroup'];
$utm_term = $sessionData['utm_term'] ?? $_POST['utm_term'] ?? $_COOKIE['utm_term'];
$userId = $sessionData['userId'] ?? $_POST['userId'] ?? $_COOKIE['userId'];


if (empty($_POST)) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 405 Method Not Allowed');
    exit;
}

$desc = preg_replace('/\s+/', ' ', $_POST['description'] ?? '');
$cleaned_string = preg_replace('/\\\\/', '', $desc);
$prop_desc = str_replace('"', '\"', $cleaned_string);

$description = str_replace(["â€\"", "â€¦", "â€™", "â€œ", "â€.", "â€˜", "&amp;", "â€”"], ["—", "…", "’", "“", "”", "‘", "&", "-"], $prop_desc);


$first_name = cleanString($_POST['FirstName'] ?? '');
$phone = cleanString($_POST['phone'] ?? '');
$email = cleanString($_POST['Email'] ?? '');
$description = $description;
$company = isset($_POST['Company']) ? cleanString($_POST['Company']) : cleanString($_POST['FirstName']);

define('DEFAULT_PARAM', [
    'salutation' => "-",
    'LastName' => "-",
    'City' => "-",
    'Company_website' => "-",
    'Description_key' => "62",
    'leadsource' => "Website",
    'contact_key' => "19",
    'date' => date("d/m/Y"),
    'sitename' => $_SERVER['SERVER_NAME'],
    'Weekno' => "Week " . date("W"),
    'service' => "Healthcare",
    'Subservice' => null,
    'Key1' => "182",
    'Key2' => "180",
    'Key11' => "171",
    'Key12' => "172",
    'Key13' => "173",
    'Key14' => "178",
    'Key15' => "174",
    'Key16' => "185",
    'IP_address' => $_SERVER['SERVER_ADDR'],
    'Useragent' => $_SERVER['HTTP_USER_AGENT'],
    'keywords' => "-",
    'mail_status' => 2,
    'Attachment_key' => '78',
    'Attachment' => null
]);

$param = array_merge(DEFAULT_PARAM, [
    'Fullurl' => $HTTP_REFERER ?? $_POST['currentpage_url'],
    'form_name' => ($action_value === "general" || (strpos($HTTP_REFERER, 'contact-us.php') !== false)) ? "Main Form" : "Small Form",
    'subject_line' => ($action_value === "general" || (strpos($HTTP_REFERER, 'contact-us.php') !== false)) ? "[ORCM-M] Website Enquiry" : "[ORCM-S] Website Enquiry",
    'FirstName' => $first_name,
    'Email' => $email,
    'phone' => $phone,
    'Country' => $country ?? $country_code,
    'Company' => $company,
    'Description_of_requirements' => $description,
    'Value1' => isset($_COOKIE["_ga"]) ? substr($_COOKIE["_ga"], 6) : "-",
    'statsid' => isset($_COOKIE["_ga"]) ? substr($_COOKIE["_ga"], 6) : "-",
    'Value2' =>  $gclid,
    'Value11' => $utm_source,
    'Value12' => $utm_medium,
    'Value13' => $utm_campaign,
    'Value14' => $utm_adgroup,
    'Value15' => $utm_term,
    'Value16' => $userId,
    'countryName' => $countryName
]);

$data = [
    'FirstName' => $first_name,
    'Email' => $email,
    'phone' => $phone,
    'description' => $description,
    'Company' => $company,
    'ip' => filter_var($_SERVER['SERVER_ADDR'], FILTER_VALIDATE_IP),
    'country' => filter_input(INPUT_POST, 'country', FILTER_SANITIZE_SPECIAL_CHARS) ?? $country_code
];

$jsonData = json_encode($data);
$api_response = callPythonApi($jsonData);

if ($api_response['message'] == "Invalid JSON data") {
    insertSpamData($param);
    header("Location: $thanks_submitted_url");
    exit;
}

if ($api_response['dieAction']) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 405 Method Not Allowed');
    exit;
}

if (empty($api_response['isSpam'])) {
    $mysqliID = insertFormData($param);
    $param['Id'] = $mysqliID;
    $param['html_body'] = actionHquote($param);
    insertJsonData($param);
    sendEmail($param);
    header("Location: $thanks_url");
    exit;
} else {
    insertSpamData($param);
    header("Location: $thanks_submitted_url");
    exit;
}
