<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  http_response_code(405);
  echo json_encode(['ok'=>false,'error'=>'Only POST is allowed'], JSON_UNESCAPED_UNICODE);
  exit;
}
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$expert = isset($_POST['expert']) ? trim($_POST['expert']) : 'KLT 4.14 web';
$group = isset($_POST['group']) ? trim($_POST['group']) : '';
$summary = isset($_POST['summary']) ? trim($_POST['summary']) : '';
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  http_response_code(400);
  echo json_encode(['ok'=>false,'error'=>'Некорректный e-mail'], JSON_UNESCAPED_UNICODE);
  exit;
}
if (!isset($_FILES['zip']) || $_FILES['zip']['error'] !== UPLOAD_ERR_OK) {
  http_response_code(400);
  echo json_encode(['ok'=>false,'error'=>'ZIP-файл не получен'], JSON_UNESCAPED_UNICODE);
  exit;
}
if ($_FILES['zip']['size'] > 7 * 1024 * 1024) {
  http_response_code(400);
  echo json_encode(['ok'=>false,'error'=>'ZIP больше 7 МБ. Скачайте его вручную.'], JSON_UNESCAPED_UNICODE);
  exit;
}
$admin = 'me@kurpishev.ru';
$from = 'no-reply@kurpishev.com';
$subject = 'KLT 4.14: группа финальных lambda-чек-листов';
$body = "Здравствуйте!\n\nВо вложении ZIP с итоговыми lambda-чек-листами KLT 4.14 в формате DOCX.\n\n".
        "Проверяющий: {$expert}\nГруппа: {$group}\n\nСводка:\n{$summary}\n\n".
        "Документ сформирован автоматически на странице kurpishev.com/ru/klt/k414.html.\n".
        "Результат является демонстрационным рекомендательным листом и не заменяет эксперта.\n\n".
        "© Иван Борисович Курпишев, KLT / Kurpishev Lambda Truth.";
$filePath = $_FILES['zip']['tmp_name'];
$fileName = 'klt414_lambda_checks.zip';
$fileData = chunk_split(base64_encode(file_get_contents($filePath)));
$boundary = 'klt414_' . md5(uniqid('', true));
$headers = "From: KLT 4.14 <{$from}>\r\n";
$headers .= "Reply-To: {$admin}\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"{$boundary}\"\r\n";
$message = "--{$boundary}\r\n";
$message .= "Content-Type: text/plain; charset=UTF-8\r\n";
$message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$message .= $body . "\r\n";
$message .= "--{$boundary}\r\n";
$message .= "Content-Type: application/zip; name=\"{$fileName}\"\r\n";
$message .= "Content-Transfer-Encoding: base64\r\n";
$message .= "Content-Disposition: attachment; filename=\"{$fileName}\"\r\n\r\n";
$message .= $fileData . "\r\n";
$message .= "--{$boundary}--";
$sentUser = @mail($email, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $headers);
$sentAdmin = @mail($admin, '=?UTF-8?B?'.base64_encode('KLT 4.14: копия отправки чек-листов').'?=', $message, $headers);
if ($sentUser) {
  echo json_encode(['ok'=>true,'admin_copy'=>$sentAdmin], JSON_UNESCAPED_UNICODE);
} else {
  http_response_code(500);
  echo json_encode(['ok'=>false,'error'=>'PHP mail() не отправил письмо. Проверьте почтовые настройки хостинга.'], JSON_UNESCAPED_UNICODE);
}
