Files
erv-ticket-dev/database.php

168 lines
6.5 KiB
PHP
Raw Permalink Normal View History

<?php
/**
* Проверка полиса в базе данных
* База данных: ci20465_erv
* Таблица: lexrpiority
*/
// Устанавливаем заголовки сразу
header('Content-Type: application/json; charset=utf-8');
// Загружаем .env
require_once __DIR__ . '/env_loader.php';
// Логирование
$log_file = __DIR__ . '/logs/policy_check.log';
$log_dir = dirname($log_file);
if (!is_dir($log_dir)) {
@mkdir($log_dir, 0755, true);
}
function log_message($message) {
global $log_file;
$timestamp = date('Y-m-d H:i:s');
@file_put_contents($log_file, "[$timestamp] $message\n", FILE_APPEND);
}
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'user_verify' : user_verify(); break;
}
exit; // Важно! Завершаем выполнение после обработки действия
}
function user_verify() {
// Тарифы, которые включают покрытие задержки рейса
$valid_tariffs_basic = [
'STB0048', 'STB1099', 'STB1100', 'STB2099', 'AVS21500', 'AVS22500'
];
$valid_tariffs_other = [
'SPV0001', 'SPV0002', 'SPV0003', 'SPV0004', 'SPV0005',
'STV0090',
'SPV1001', 'SPV1002', 'SPV1003', 'SPV1004', 'SPV1005',
'SPV2001', 'SPV2002', 'SPV2004', 'SPV2005',
'OPV1001', 'OPV1002', 'OPV1003', 'OPV1004', 'OPV1005',
'OPV2001', 'OPV2002', 'OPV2004', 'OPV2005'
];
// Получаем креды из .env (с fallback на старые значения для обратной совместимости)
$db_host = env('MYSQL_ERV_HOST', env('MYSQL_CRM_HOST', 'localhost'));
$db_user = env('MYSQL_ERV_USER', 'ci20465_erv');
$db_pass = env('MYSQL_ERV_PASSWORD', 'c7vOXbmG');
$db_name = env('MYSQL_ERV_DB', 'ci20465_erv');
log_message("Попытка подключения к БД: host=$db_host, user=$db_user, db=$db_name");
$link = @mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$link) {
$error = mysqli_connect_error();
log_message("Ошибка подключения к БД: $error");
echo json_encode([
"success" => "false",
"message" => "Ошибка подключения к базе данных: " . $error,
"result" => ""
], JSON_UNESCAPED_UNICODE);
return;
}
mysqli_set_charset($link, "utf8");
log_message("Подключение к БД успешно");
$inn = isset($_POST['inn']) ? trim($_POST['inn']) : '';
if (empty($inn)) {
log_message("Номер полиса не указан");
echo json_encode([
"success" => "false",
"message" => "Номер полиса не указан",
"result" => ""
], JSON_UNESCAPED_UNICODE);
mysqli_close($link);
return;
}
log_message("Проверка полиса: " . substr($inn, 0, 5) . "***");
// Нормализуем номер полиса: заменяем кириллическую "Е" на латинскую "E"
// Это нужно, т.к. в базе данных используются только латинские буквы
$inn_original = $inn;
$inn = str_replace('Е', 'E', $inn); // Кириллическая Е -> латинская E
$inn = str_replace('е', 'e', $inn); // Кириллическая е -> латинская e (на всякий случай)
$inn = str_replace('А', 'A', $inn); // Кириллическая А -> латинская A
$inn = str_replace('а', 'a', $inn); // Кириллическая а -> латинская a
if ($inn_original !== $inn) {
log_message("Номер полиса нормализован: $inn_original -> $inn");
}
// Экранируем для безопасности
$inn_escaped = mysqli_real_escape_string($link, $inn);
// Ищем полис по номеру voucher
$sql = "SELECT * FROM lexrpiority WHERE voucher = '$inn_escaped' LIMIT 1";
log_message("SQL запрос: SELECT * FROM lexrpiority WHERE voucher = '***'");
$result = mysqli_query($link, $sql);
if (!$result) {
$error = mysqli_error($link);
log_message("Ошибка SQL запроса: $error");
echo json_encode([
"success" => "false",
"message" => "Ошибка запроса к базе данных: " . $error,
"result" => ""
], JSON_UNESCAPED_UNICODE);
mysqli_close($link);
return;
}
$row = mysqli_fetch_assoc($result);
if (!$row) {
// Полис не найден в базе
log_message("Полис не найден в базе данных");
echo json_encode([
"success" => "false",
"message" => "Полис не найден",
"result" => ""
], JSON_UNESCAPED_UNICODE);
mysqli_close($link);
return;
}
log_message("Полис найден в БД. Тарифы: basic=" . ($row['tariff_code_basic'] ?? 'нет') . ", other=" . ($row['tariff_code_other'] ?? 'нет'));
// Полис найден, проверяем тариф
$tariff_basic = isset($row['tariff_code_basic']) ? trim($row['tariff_code_basic']) : '';
$tariff_other = isset($row['tariff_code_other']) ? trim($row['tariff_code_other']) : '';
$has_valid_tariff = in_array($tariff_basic, $valid_tariffs_basic) ||
in_array($tariff_other, $valid_tariffs_other);
if ($has_valid_tariff) {
// Полис найден и тариф подходит
log_message("Полис валиден. Тариф подходит для задержки рейса");
echo json_encode([
"success" => "true",
"message" => "Полис найден",
"result" => $row
], JSON_UNESCAPED_UNICODE);
} else {
// Полис найден, но тариф не включает покрытие задержки рейса
log_message("Полис найден, но тариф не подходит для задержки рейса");
echo json_encode([
"success" => "false",
"message" => "Ваш полис не включает покрытие задержки рейса",
"result" => ""
], JSON_UNESCAPED_UNICODE);
}
mysqli_close($link);
}
?>