35888-vm/add_installation.php
2025-11-20 23:00:58 +00:00

75 lines
3.0 KiB
PHP

<?php
session_start();
require_once __DIR__ . '/db/config.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$client_name = trim($_POST['client_name'] ?? '');
$address = trim($_POST['address'] ?? '');
$technician_name = trim($_POST['technician_name'] ?? '');
$observations = trim($_POST['observations'] ?? '');
$status = trim($_POST['status'] ?? 'ativo');
$voltage = trim($_POST['voltage'] ?? null);
$phase_neutral_ground = trim($_POST['phase_neutral_ground'] ?? null);
$breaker_output = trim($_POST['breaker_output'] ?? null);
// Validation removed to allow incomplete forms
$pdo = db();
try {
$pdo->beginTransaction();
$stmt = $pdo->prepare(
"INSERT INTO installations (client_name, address, technician_name, observations, status, voltage, phase_neutral_ground, breaker_output) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
);
$stmt->execute([$client_name, $address, $technician_name, $observations, $status, $voltage, $phase_neutral_ground, $breaker_output]);
$installation_id = $pdo->lastInsertId();
// Handle multiple file uploads
if (isset($_FILES['images'])) {
$upload_dir = __DIR__ . '/assets/uploads/';
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0775, true);
}
$allowed_ext = ['jpg', 'jpeg', 'png', 'gif'];
foreach ($_FILES['images']['tmp_name'] as $key => $tmp_name) {
if ($_FILES['images']['error'][$key] === UPLOAD_ERR_OK) {
$file_name = $_FILES['images']['name'][$key];
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (in_array($file_ext, $allowed_ext)) {
$new_file_name = time() . '_' . uniqid() . '_' . basename($file_name);
$dest_path = $upload_dir . $new_file_name;
if (move_uploaded_file($tmp_name, $dest_path)) {
$image_path = 'assets/uploads/' . $new_file_name;
$img_stmt = $pdo->prepare("INSERT INTO installation_images (installation_id, image_path) VALUES (?, ?)");
$img_stmt->execute([$installation_id, $image_path]);
} else {
throw new Exception('Falha ao mover o arquivo enviado: ' . $file_name);
}
} else {
throw new Exception('Tipo de arquivo inválido: ' . $file_name);
}
}
}
}
$pdo->commit();
$_SESSION['message'] = 'Instalação registrada com sucesso!';
$_SESSION['message_type'] = 'success';
} catch (Exception $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
error_log("Upload/Database error: " . $e->getMessage());
$_SESSION['message'] = 'Falha ao registrar a instalação: ' . $e->getMessage();
$_SESSION['message_type'] = 'danger';
}
}
header('Location: index.php');
exit;