diff --git a/add_installation.php b/add_installation.php index d0ade99..ac1a2f8 100644 --- a/add_installation.php +++ b/add_installation.php @@ -6,25 +6,19 @@ 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 = !empty($_POST['voltage']) ? trim($_POST['voltage']) : null; - $phase_neutral_ground = !empty($_POST['phase_neutral_ground']) ? trim($_POST['phase_neutral_ground']) : null; - $breaker_output = !empty($_POST['breaker_output']) ? trim($_POST['breaker_output']) : null; - - // Validation removed to allow incomplete forms + $installation_date = !empty($_POST['installation_date']) ? trim($_POST['installation_date']) : null; $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 (?, ?, ?, ?, ?, ?, ?, ?)" + "INSERT INTO installations (client_name, address, technician_name, status, created_at) VALUES (?, ?, ?, ?, ?)" ); - $stmt->execute([$client_name, $address, $technician_name, $observations, $status, $voltage, $phase_neutral_ground, $breaker_output]); + $stmt->execute([$client_name, $address, $technician_name, $status, $installation_date]); $installation_id = $pdo->lastInsertId(); - // Handle multiple file uploads if (isset($_FILES['images'])) { $upload_dir = __DIR__ . '/assets/uploads/'; if (!is_dir($upload_dir)) { @@ -59,16 +53,122 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $pdo->commit(); $_SESSION['message'] = 'Instalação registrada com sucesso!'; $_SESSION['message_type'] = 'success'; + header('Location: index.php'); + exit; } 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'] = 'Erro ao registrar a instalação: ' . $e->getMessage(); $_SESSION['message_type'] = 'danger'; + header('Location: add_installation.php'); + exit; } } +?> + + + + + + Adicionar Nova Instalação - iload net Solutions + + + + + -header('Location: index.php'); -exit; + + +
+ + +
+
+
+
+
+

Registrar Nova Instalação

+
+
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ Cancelar + +
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/assets/css/custom.css b/assets/css/custom.css index 1e1433f..d00a173 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -1,75 +1,9 @@ -@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&display=swap'); - -:root { - --primary-color: #6cc24a; - --secondary-color: #2c3e50; - --sidebar-width: 280px; -} - -body { - font-family: 'Poppins', sans-serif; - background-color: #f0f2f5; - color: #495057; -} - -.sidebar { - position: fixed; - top: 0; - left: 0; - height: 100%; - width: var(--sidebar-width); - background-color: var(--secondary-color); - padding-top: 1rem; - transition: all 0.3s; -} - -.sidebar .nav-link { - color: #adb5bd; - font-weight: 500; - padding: 0.75rem 1.5rem; - display: flex; - align-items: center; -} - -.sidebar .nav-link i { - margin-right: 0.75rem; - font-size: 1.1rem; - width: 20px; - text-align: center; -} - -.sidebar .nav-link:hover, .sidebar .nav-link.active { - color: #fff; - background-color: rgba(255, 255, 255, 0.05); -} - -.sidebar .navbar-brand { - color: #fff !important; - font-weight: 700; - padding: 0.5rem 1.5rem; - font-size: 1.5rem; - margin-bottom: 1rem; -} - -.main-content { - margin-left: var(--sidebar-width); - padding: 2rem; - transition: all 0.3s; -} - -.top-navbar { - background-color: #fff; - border-radius: 0.5rem; - margin-bottom: 2rem; - padding: 0.75rem 1.5rem; - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); -} - +/* Estilos para os cards de KPI */ .kpi-card { - border: none; - border-radius: 0.75rem; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); - margin-bottom: 2rem; + border: 1px solid #e3e6f0; + border-radius: .35rem; + transition: all .3s ease; + margin-bottom: 1.5rem; } .kpi-card .card-body { @@ -77,55 +11,95 @@ body { align-items: center; } -.kpi-card .kpi-icon { - font-size: 2.5rem; - padding: 1rem; +.kpi-icon { + width: 50px; + height: 50px; + display: flex; + align-items: center; + justify-content: center; border-radius: 50%; - margin-right: 1.5rem; color: #fff; + font-size: 24px; + margin-right: 1rem; } -.kpi-card .kpi-value { - font-size: 2rem; +.kpi-value { + font-size: 1.5rem; font-weight: 700; + color: #5a5c69; } -.kpi-card .kpi-label { - font-weight: 500; - color: #6c757d; +.kpi-label { + font-size: .8rem; + font-weight: 700; + color: #858796; + text-transform: uppercase; } -.card { - border-radius: 0.75rem; - border: none; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); +/* Remove o sublinhado dos links nos cards de KPI */ +a.kpi-link, +a.kpi-link:hover { + text-decoration: none; + color: inherit; } -.btn-primary { - background-color: var(--primary-color); - border-color: var(--primary-color); - padding: 0.5rem 1.5rem; - font-weight: 600; +/* Estilos gerais */ +body { + background-color: #f8f9fc; } -.btn-primary:hover { - background-color: #58a83a; - border-color: #58a83a; +.sidebar { + width: 250px; + background-color: #4e73df; + position: fixed; + height: 100%; + padding-top: 1rem; } -.table thead th { - border-bottom: 2px solid #dee2e6; - font-weight: 600; +.sidebar .navbar-brand { + color: #fff; + font-weight: 700; + text-align: center; + margin-bottom: 1rem; + display: block; } -.table-hover tbody tr:hover { - background-color: #f8f9fa; +.sidebar .nav-link { + color: rgba(255,255,255,.8); + padding: .75rem 1.5rem; } -.modal-header { - border-bottom: none; +.sidebar .nav-link.active, +.sidebar .nav-link:hover { + color: #fff; + background-color: rgba(255,255,255,.1); } -.modal-footer { - border-top: none; +.sidebar .nav-link i { + margin-right: .5rem; +} + +.main-content { + margin-left: 250px; +} + +.top-navbar { + background-color: #fff; + border-bottom: 1px solid #e3e6f0; + padding: .5rem 1.5rem; +} + +.container-fluid { + padding: 1.5rem; +} + +/* Estilos para telas pequenas (dispositivos móveis) */ +@media (max-width: 768px) { + .sidebar { + display: none; /* Esconde o menu lateral */ + } + + .main-content { + margin-left: 0; /* Remove a margem do conteúdo principal */ + } } \ No newline at end of file diff --git a/assets/uploads/1763754622_6920c27ee4cd9_WhatsApp Image 2025-11-21 at 16.32.20 (1).jpeg b/assets/uploads/1763754622_6920c27ee4cd9_WhatsApp Image 2025-11-21 at 16.32.20 (1).jpeg new file mode 100644 index 0000000..1b138f3 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee4cd9_WhatsApp Image 2025-11-21 at 16.32.20 (1).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee5fdc_WhatsApp Image 2025-11-21 at 16.32.20 (2).jpeg b/assets/uploads/1763754622_6920c27ee5fdc_WhatsApp Image 2025-11-21 at 16.32.20 (2).jpeg new file mode 100644 index 0000000..8a286b6 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee5fdc_WhatsApp Image 2025-11-21 at 16.32.20 (2).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee621f_WhatsApp Image 2025-11-21 at 16.32.20.jpeg b/assets/uploads/1763754622_6920c27ee621f_WhatsApp Image 2025-11-21 at 16.32.20.jpeg new file mode 100644 index 0000000..e2efcc1 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee621f_WhatsApp Image 2025-11-21 at 16.32.20.jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7142_WhatsApp Image 2025-11-21 at 16.32.21 (1).jpeg b/assets/uploads/1763754622_6920c27ee7142_WhatsApp Image 2025-11-21 at 16.32.21 (1).jpeg new file mode 100644 index 0000000..9570608 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7142_WhatsApp Image 2025-11-21 at 16.32.21 (1).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7401_WhatsApp Image 2025-11-21 at 16.32.21 (2).jpeg b/assets/uploads/1763754622_6920c27ee7401_WhatsApp Image 2025-11-21 at 16.32.21 (2).jpeg new file mode 100644 index 0000000..4f2a654 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7401_WhatsApp Image 2025-11-21 at 16.32.21 (2).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee75d9_WhatsApp Image 2025-11-21 at 16.32.21 (3).jpeg b/assets/uploads/1763754622_6920c27ee75d9_WhatsApp Image 2025-11-21 at 16.32.21 (3).jpeg new file mode 100644 index 0000000..abeb4c2 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee75d9_WhatsApp Image 2025-11-21 at 16.32.21 (3).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7770_WhatsApp Image 2025-11-21 at 16.32.21 (4).jpeg b/assets/uploads/1763754622_6920c27ee7770_WhatsApp Image 2025-11-21 at 16.32.21 (4).jpeg new file mode 100644 index 0000000..12d46c1 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7770_WhatsApp Image 2025-11-21 at 16.32.21 (4).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7919_WhatsApp Image 2025-11-21 at 16.32.21.jpeg b/assets/uploads/1763754622_6920c27ee7919_WhatsApp Image 2025-11-21 at 16.32.21.jpeg new file mode 100644 index 0000000..ee91c24 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7919_WhatsApp Image 2025-11-21 at 16.32.21.jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7a96_WhatsApp Image 2025-11-21 at 16.32.22 (1).jpeg b/assets/uploads/1763754622_6920c27ee7a96_WhatsApp Image 2025-11-21 at 16.32.22 (1).jpeg new file mode 100644 index 0000000..26365d2 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7a96_WhatsApp Image 2025-11-21 at 16.32.22 (1).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7bf9_WhatsApp Image 2025-11-21 at 16.32.22 (2).jpeg b/assets/uploads/1763754622_6920c27ee7bf9_WhatsApp Image 2025-11-21 at 16.32.22 (2).jpeg new file mode 100644 index 0000000..08350dd Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7bf9_WhatsApp Image 2025-11-21 at 16.32.22 (2).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7de0_WhatsApp Image 2025-11-21 at 16.32.22 (3).jpeg b/assets/uploads/1763754622_6920c27ee7de0_WhatsApp Image 2025-11-21 at 16.32.22 (3).jpeg new file mode 100644 index 0000000..59fbe57 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7de0_WhatsApp Image 2025-11-21 at 16.32.22 (3).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee7f7f_WhatsApp Image 2025-11-21 at 16.32.22 (4).jpeg b/assets/uploads/1763754622_6920c27ee7f7f_WhatsApp Image 2025-11-21 at 16.32.22 (4).jpeg new file mode 100644 index 0000000..10f7732 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee7f7f_WhatsApp Image 2025-11-21 at 16.32.22 (4).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee8158_WhatsApp Image 2025-11-21 at 16.32.22.jpeg b/assets/uploads/1763754622_6920c27ee8158_WhatsApp Image 2025-11-21 at 16.32.22.jpeg new file mode 100644 index 0000000..7746bf3 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee8158_WhatsApp Image 2025-11-21 at 16.32.22.jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee82f8_WhatsApp Image 2025-11-21 at 16.32.23 (1).jpeg b/assets/uploads/1763754622_6920c27ee82f8_WhatsApp Image 2025-11-21 at 16.32.23 (1).jpeg new file mode 100644 index 0000000..cf95b94 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee82f8_WhatsApp Image 2025-11-21 at 16.32.23 (1).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee8483_WhatsApp Image 2025-11-21 at 16.32.23 (2).jpeg b/assets/uploads/1763754622_6920c27ee8483_WhatsApp Image 2025-11-21 at 16.32.23 (2).jpeg new file mode 100644 index 0000000..15d6263 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee8483_WhatsApp Image 2025-11-21 at 16.32.23 (2).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee861d_WhatsApp Image 2025-11-21 at 16.32.23 (3).jpeg b/assets/uploads/1763754622_6920c27ee861d_WhatsApp Image 2025-11-21 at 16.32.23 (3).jpeg new file mode 100644 index 0000000..15d6263 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee861d_WhatsApp Image 2025-11-21 at 16.32.23 (3).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee8796_WhatsApp Image 2025-11-21 at 16.32.23 (4).jpeg b/assets/uploads/1763754622_6920c27ee8796_WhatsApp Image 2025-11-21 at 16.32.23 (4).jpeg new file mode 100644 index 0000000..cd8834b Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee8796_WhatsApp Image 2025-11-21 at 16.32.23 (4).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee88f9_WhatsApp Image 2025-11-21 at 16.32.23 (5).jpeg b/assets/uploads/1763754622_6920c27ee88f9_WhatsApp Image 2025-11-21 at 16.32.23 (5).jpeg new file mode 100644 index 0000000..cf95b94 Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee88f9_WhatsApp Image 2025-11-21 at 16.32.23 (5).jpeg differ diff --git a/assets/uploads/1763754622_6920c27ee8a6c_WhatsApp Image 2025-11-21 at 16.32.23.jpeg b/assets/uploads/1763754622_6920c27ee8a6c_WhatsApp Image 2025-11-21 at 16.32.23.jpeg new file mode 100644 index 0000000..cd8834b Binary files /dev/null and b/assets/uploads/1763754622_6920c27ee8a6c_WhatsApp Image 2025-11-21 at 16.32.23.jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4e337_WhatsApp Image 2025-11-21 at 18.12.04 (1).jpeg b/assets/uploads/1763760411_6920d91b4e337_WhatsApp Image 2025-11-21 at 18.12.04 (1).jpeg new file mode 100644 index 0000000..11ea286 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4e337_WhatsApp Image 2025-11-21 at 18.12.04 (1).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4e97f_WhatsApp Image 2025-11-21 at 18.12.04 (2).jpeg b/assets/uploads/1763760411_6920d91b4e97f_WhatsApp Image 2025-11-21 at 18.12.04 (2).jpeg new file mode 100644 index 0000000..1ec3b55 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4e97f_WhatsApp Image 2025-11-21 at 18.12.04 (2).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4ec05_WhatsApp Image 2025-11-21 at 18.12.04.jpeg b/assets/uploads/1763760411_6920d91b4ec05_WhatsApp Image 2025-11-21 at 18.12.04.jpeg new file mode 100644 index 0000000..2688c5a Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4ec05_WhatsApp Image 2025-11-21 at 18.12.04.jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4ee81_WhatsApp Image 2025-11-21 at 18.12.05 (1).jpeg b/assets/uploads/1763760411_6920d91b4ee81_WhatsApp Image 2025-11-21 at 18.12.05 (1).jpeg new file mode 100644 index 0000000..7b05a37 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4ee81_WhatsApp Image 2025-11-21 at 18.12.05 (1).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4f1f2_WhatsApp Image 2025-11-21 at 18.12.05 (2).jpeg b/assets/uploads/1763760411_6920d91b4f1f2_WhatsApp Image 2025-11-21 at 18.12.05 (2).jpeg new file mode 100644 index 0000000..c1846fe Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4f1f2_WhatsApp Image 2025-11-21 at 18.12.05 (2).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4f61a_WhatsApp Image 2025-11-21 at 18.12.05 (3).jpeg b/assets/uploads/1763760411_6920d91b4f61a_WhatsApp Image 2025-11-21 at 18.12.05 (3).jpeg new file mode 100644 index 0000000..e875a07 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4f61a_WhatsApp Image 2025-11-21 at 18.12.05 (3).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4f80e_WhatsApp Image 2025-11-21 at 18.12.05 (4).jpeg b/assets/uploads/1763760411_6920d91b4f80e_WhatsApp Image 2025-11-21 at 18.12.05 (4).jpeg new file mode 100644 index 0000000..0632160 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4f80e_WhatsApp Image 2025-11-21 at 18.12.05 (4).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4fa2b_WhatsApp Image 2025-11-21 at 18.12.05.jpeg b/assets/uploads/1763760411_6920d91b4fa2b_WhatsApp Image 2025-11-21 at 18.12.05.jpeg new file mode 100644 index 0000000..3a85aab Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4fa2b_WhatsApp Image 2025-11-21 at 18.12.05.jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4fbc8_WhatsApp Image 2025-11-21 at 18.12.06 (1).jpeg b/assets/uploads/1763760411_6920d91b4fbc8_WhatsApp Image 2025-11-21 at 18.12.06 (1).jpeg new file mode 100644 index 0000000..1fecc47 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4fbc8_WhatsApp Image 2025-11-21 at 18.12.06 (1).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4fd80_WhatsApp Image 2025-11-21 at 18.12.06 (2).jpeg b/assets/uploads/1763760411_6920d91b4fd80_WhatsApp Image 2025-11-21 at 18.12.06 (2).jpeg new file mode 100644 index 0000000..e1b8e5d Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4fd80_WhatsApp Image 2025-11-21 at 18.12.06 (2).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b4ff25_WhatsApp Image 2025-11-21 at 18.12.06 (3).jpeg b/assets/uploads/1763760411_6920d91b4ff25_WhatsApp Image 2025-11-21 at 18.12.06 (3).jpeg new file mode 100644 index 0000000..eefbfc9 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b4ff25_WhatsApp Image 2025-11-21 at 18.12.06 (3).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b500ab_WhatsApp Image 2025-11-21 at 18.12.06 (4).jpeg b/assets/uploads/1763760411_6920d91b500ab_WhatsApp Image 2025-11-21 at 18.12.06 (4).jpeg new file mode 100644 index 0000000..f58c0d6 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b500ab_WhatsApp Image 2025-11-21 at 18.12.06 (4).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50248_WhatsApp Image 2025-11-21 at 18.12.06.jpeg b/assets/uploads/1763760411_6920d91b50248_WhatsApp Image 2025-11-21 at 18.12.06.jpeg new file mode 100644 index 0000000..1da91ee Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50248_WhatsApp Image 2025-11-21 at 18.12.06.jpeg differ diff --git a/assets/uploads/1763760411_6920d91b503ee_WhatsApp Image 2025-11-21 at 18.12.07 (1).jpeg b/assets/uploads/1763760411_6920d91b503ee_WhatsApp Image 2025-11-21 at 18.12.07 (1).jpeg new file mode 100644 index 0000000..3d1ef50 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b503ee_WhatsApp Image 2025-11-21 at 18.12.07 (1).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50560_WhatsApp Image 2025-11-21 at 18.12.07 (2).jpeg b/assets/uploads/1763760411_6920d91b50560_WhatsApp Image 2025-11-21 at 18.12.07 (2).jpeg new file mode 100644 index 0000000..ba495b7 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50560_WhatsApp Image 2025-11-21 at 18.12.07 (2).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b5074a_WhatsApp Image 2025-11-21 at 18.12.07 (3).jpeg b/assets/uploads/1763760411_6920d91b5074a_WhatsApp Image 2025-11-21 at 18.12.07 (3).jpeg new file mode 100644 index 0000000..be2b642 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b5074a_WhatsApp Image 2025-11-21 at 18.12.07 (3).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50924_WhatsApp Image 2025-11-21 at 18.12.07.jpeg b/assets/uploads/1763760411_6920d91b50924_WhatsApp Image 2025-11-21 at 18.12.07.jpeg new file mode 100644 index 0000000..d9f1e71 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50924_WhatsApp Image 2025-11-21 at 18.12.07.jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50b04_WhatsApp Image 2025-11-21 at 18.12.08 (1).jpeg b/assets/uploads/1763760411_6920d91b50b04_WhatsApp Image 2025-11-21 at 18.12.08 (1).jpeg new file mode 100644 index 0000000..313eb87 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50b04_WhatsApp Image 2025-11-21 at 18.12.08 (1).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50d00_WhatsApp Image 2025-11-21 at 18.12.08 (2).jpeg b/assets/uploads/1763760411_6920d91b50d00_WhatsApp Image 2025-11-21 at 18.12.08 (2).jpeg new file mode 100644 index 0000000..4ad45d6 Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50d00_WhatsApp Image 2025-11-21 at 18.12.08 (2).jpeg differ diff --git a/assets/uploads/1763760411_6920d91b50ef8_WhatsApp Image 2025-11-21 at 18.12.08 (3).jpeg b/assets/uploads/1763760411_6920d91b50ef8_WhatsApp Image 2025-11-21 at 18.12.08 (3).jpeg new file mode 100644 index 0000000..c4245ed Binary files /dev/null and b/assets/uploads/1763760411_6920d91b50ef8_WhatsApp Image 2025-11-21 at 18.12.08 (3).jpeg differ diff --git a/assets/uploads/1763765335_6920ec578663d_WhatsApp Image 2025-11-21 at 19.27.18 (1).jpeg b/assets/uploads/1763765335_6920ec578663d_WhatsApp Image 2025-11-21 at 19.27.18 (1).jpeg new file mode 100644 index 0000000..3a35f4c Binary files /dev/null and b/assets/uploads/1763765335_6920ec578663d_WhatsApp Image 2025-11-21 at 19.27.18 (1).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5786ea3_WhatsApp Image 2025-11-21 at 19.27.18.jpeg b/assets/uploads/1763765335_6920ec5786ea3_WhatsApp Image 2025-11-21 at 19.27.18.jpeg new file mode 100644 index 0000000..67b24a2 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5786ea3_WhatsApp Image 2025-11-21 at 19.27.18.jpeg differ diff --git a/assets/uploads/1763765335_6920ec5787081_WhatsApp Image 2025-11-21 at 19.27.19 (1).jpeg b/assets/uploads/1763765335_6920ec5787081_WhatsApp Image 2025-11-21 at 19.27.19 (1).jpeg new file mode 100644 index 0000000..7194c83 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5787081_WhatsApp Image 2025-11-21 at 19.27.19 (1).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5787252_WhatsApp Image 2025-11-21 at 19.27.19 (2).jpeg b/assets/uploads/1763765335_6920ec5787252_WhatsApp Image 2025-11-21 at 19.27.19 (2).jpeg new file mode 100644 index 0000000..07e1f39 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5787252_WhatsApp Image 2025-11-21 at 19.27.19 (2).jpeg differ diff --git a/assets/uploads/1763765335_6920ec578741a_WhatsApp Image 2025-11-21 at 19.27.19 (3).jpeg b/assets/uploads/1763765335_6920ec578741a_WhatsApp Image 2025-11-21 at 19.27.19 (3).jpeg new file mode 100644 index 0000000..84680b0 Binary files /dev/null and b/assets/uploads/1763765335_6920ec578741a_WhatsApp Image 2025-11-21 at 19.27.19 (3).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5787597_WhatsApp Image 2025-11-21 at 19.27.19 (4).jpeg b/assets/uploads/1763765335_6920ec5787597_WhatsApp Image 2025-11-21 at 19.27.19 (4).jpeg new file mode 100644 index 0000000..668c9d0 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5787597_WhatsApp Image 2025-11-21 at 19.27.19 (4).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5787774_WhatsApp Image 2025-11-21 at 19.27.19.jpeg b/assets/uploads/1763765335_6920ec5787774_WhatsApp Image 2025-11-21 at 19.27.19.jpeg new file mode 100644 index 0000000..5c38cf6 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5787774_WhatsApp Image 2025-11-21 at 19.27.19.jpeg differ diff --git a/assets/uploads/1763765335_6920ec57884dd_WhatsApp Image 2025-11-21 at 19.27.20 (1).jpeg b/assets/uploads/1763765335_6920ec57884dd_WhatsApp Image 2025-11-21 at 19.27.20 (1).jpeg new file mode 100644 index 0000000..91c2405 Binary files /dev/null and b/assets/uploads/1763765335_6920ec57884dd_WhatsApp Image 2025-11-21 at 19.27.20 (1).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5788787_WhatsApp Image 2025-11-21 at 19.27.20 (2).jpeg b/assets/uploads/1763765335_6920ec5788787_WhatsApp Image 2025-11-21 at 19.27.20 (2).jpeg new file mode 100644 index 0000000..5ed929a Binary files /dev/null and b/assets/uploads/1763765335_6920ec5788787_WhatsApp Image 2025-11-21 at 19.27.20 (2).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5788950_WhatsApp Image 2025-11-21 at 19.27.20 (3).jpeg b/assets/uploads/1763765335_6920ec5788950_WhatsApp Image 2025-11-21 at 19.27.20 (3).jpeg new file mode 100644 index 0000000..ec67a2b Binary files /dev/null and b/assets/uploads/1763765335_6920ec5788950_WhatsApp Image 2025-11-21 at 19.27.20 (3).jpeg differ diff --git a/assets/uploads/1763765335_6920ec5788b2f_WhatsApp Image 2025-11-21 at 19.27.20.jpeg b/assets/uploads/1763765335_6920ec5788b2f_WhatsApp Image 2025-11-21 at 19.27.20.jpeg new file mode 100644 index 0000000..ccc87d0 Binary files /dev/null and b/assets/uploads/1763765335_6920ec5788b2f_WhatsApp Image 2025-11-21 at 19.27.20.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbb679_WhatsApp Image 2025-11-21 at 19.58.53.jpeg b/assets/uploads/1763768588_6920f90cbb679_WhatsApp Image 2025-11-21 at 19.58.53.jpeg new file mode 100644 index 0000000..71b1fa6 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbb679_WhatsApp Image 2025-11-21 at 19.58.53.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbbe27_WhatsApp Image 2025-11-21 at 19.58.54 (1).jpeg b/assets/uploads/1763768588_6920f90cbbe27_WhatsApp Image 2025-11-21 at 19.58.54 (1).jpeg new file mode 100644 index 0000000..25cd46b Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbbe27_WhatsApp Image 2025-11-21 at 19.58.54 (1).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbc111_WhatsApp Image 2025-11-21 at 19.58.54 (2).jpeg b/assets/uploads/1763768588_6920f90cbc111_WhatsApp Image 2025-11-21 at 19.58.54 (2).jpeg new file mode 100644 index 0000000..469e75e Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbc111_WhatsApp Image 2025-11-21 at 19.58.54 (2).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbd047_WhatsApp Image 2025-11-21 at 19.58.54 (3).jpeg b/assets/uploads/1763768588_6920f90cbd047_WhatsApp Image 2025-11-21 at 19.58.54 (3).jpeg new file mode 100644 index 0000000..3b06050 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbd047_WhatsApp Image 2025-11-21 at 19.58.54 (3).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbd2d5_WhatsApp Image 2025-11-21 at 19.58.54 (4).jpeg b/assets/uploads/1763768588_6920f90cbd2d5_WhatsApp Image 2025-11-21 at 19.58.54 (4).jpeg new file mode 100644 index 0000000..3d85475 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbd2d5_WhatsApp Image 2025-11-21 at 19.58.54 (4).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbd5db_WhatsApp Image 2025-11-21 at 19.58.54.jpeg b/assets/uploads/1763768588_6920f90cbd5db_WhatsApp Image 2025-11-21 at 19.58.54.jpeg new file mode 100644 index 0000000..b328fc5 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbd5db_WhatsApp Image 2025-11-21 at 19.58.54.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbdacd_WhatsApp Image 2025-11-21 at 19.58.55 (1).jpeg b/assets/uploads/1763768588_6920f90cbdacd_WhatsApp Image 2025-11-21 at 19.58.55 (1).jpeg new file mode 100644 index 0000000..964d790 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbdacd_WhatsApp Image 2025-11-21 at 19.58.55 (1).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbdcc0_WhatsApp Image 2025-11-21 at 19.58.55 (2).jpeg b/assets/uploads/1763768588_6920f90cbdcc0_WhatsApp Image 2025-11-21 at 19.58.55 (2).jpeg new file mode 100644 index 0000000..f125a43 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbdcc0_WhatsApp Image 2025-11-21 at 19.58.55 (2).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbde7b_WhatsApp Image 2025-11-21 at 19.58.55 (3).jpeg b/assets/uploads/1763768588_6920f90cbde7b_WhatsApp Image 2025-11-21 at 19.58.55 (3).jpeg new file mode 100644 index 0000000..58d5698 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbde7b_WhatsApp Image 2025-11-21 at 19.58.55 (3).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe0da_WhatsApp Image 2025-11-21 at 19.58.55 (4).jpeg b/assets/uploads/1763768588_6920f90cbe0da_WhatsApp Image 2025-11-21 at 19.58.55 (4).jpeg new file mode 100644 index 0000000..a301643 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe0da_WhatsApp Image 2025-11-21 at 19.58.55 (4).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe25e_WhatsApp Image 2025-11-21 at 19.58.55 (5).jpeg b/assets/uploads/1763768588_6920f90cbe25e_WhatsApp Image 2025-11-21 at 19.58.55 (5).jpeg new file mode 100644 index 0000000..be3d68b Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe25e_WhatsApp Image 2025-11-21 at 19.58.55 (5).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe3b9_WhatsApp Image 2025-11-21 at 19.58.55.jpeg b/assets/uploads/1763768588_6920f90cbe3b9_WhatsApp Image 2025-11-21 at 19.58.55.jpeg new file mode 100644 index 0000000..7976664 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe3b9_WhatsApp Image 2025-11-21 at 19.58.55.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe642_WhatsApp Image 2025-11-21 at 19.58.56.jpeg b/assets/uploads/1763768588_6920f90cbe642_WhatsApp Image 2025-11-21 at 19.58.56.jpeg new file mode 100644 index 0000000..fb0993e Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe642_WhatsApp Image 2025-11-21 at 19.58.56.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe7bf_WhatsApp Image 2025-11-21 at 20.03.55 (1).jpeg b/assets/uploads/1763768588_6920f90cbe7bf_WhatsApp Image 2025-11-21 at 20.03.55 (1).jpeg new file mode 100644 index 0000000..c1c264e Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe7bf_WhatsApp Image 2025-11-21 at 20.03.55 (1).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbe9ae_WhatsApp Image 2025-11-21 at 20.03.55.jpeg b/assets/uploads/1763768588_6920f90cbe9ae_WhatsApp Image 2025-11-21 at 20.03.55.jpeg new file mode 100644 index 0000000..f4a8baf Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbe9ae_WhatsApp Image 2025-11-21 at 20.03.55.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbec07_WhatsApp Image 2025-11-21 at 20.03.56 (1).jpeg b/assets/uploads/1763768588_6920f90cbec07_WhatsApp Image 2025-11-21 at 20.03.56 (1).jpeg new file mode 100644 index 0000000..5ee6285 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbec07_WhatsApp Image 2025-11-21 at 20.03.56 (1).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbed95_WhatsApp Image 2025-11-21 at 20.03.56 (2).jpeg b/assets/uploads/1763768588_6920f90cbed95_WhatsApp Image 2025-11-21 at 20.03.56 (2).jpeg new file mode 100644 index 0000000..15e90af Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbed95_WhatsApp Image 2025-11-21 at 20.03.56 (2).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbefd1_WhatsApp Image 2025-11-21 at 20.03.56.jpeg b/assets/uploads/1763768588_6920f90cbefd1_WhatsApp Image 2025-11-21 at 20.03.56.jpeg new file mode 100644 index 0000000..e4d1878 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbefd1_WhatsApp Image 2025-11-21 at 20.03.56.jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbf165_WhatsApp Image 2025-11-21 at 20.03.57 (1).jpeg b/assets/uploads/1763768588_6920f90cbf165_WhatsApp Image 2025-11-21 at 20.03.57 (1).jpeg new file mode 100644 index 0000000..3fc7595 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbf165_WhatsApp Image 2025-11-21 at 20.03.57 (1).jpeg differ diff --git a/assets/uploads/1763768588_6920f90cbf2f8_WhatsApp Image 2025-11-21 at 20.03.57 (2).jpeg b/assets/uploads/1763768588_6920f90cbf2f8_WhatsApp Image 2025-11-21 at 20.03.57 (2).jpeg new file mode 100644 index 0000000..19be701 Binary files /dev/null and b/assets/uploads/1763768588_6920f90cbf2f8_WhatsApp Image 2025-11-21 at 20.03.57 (2).jpeg differ diff --git a/assets/uploads/1763772646_692108e6addf9_WhatsApp Image 2025-11-21 at 21.21.08 (1).jpeg b/assets/uploads/1763772646_692108e6addf9_WhatsApp Image 2025-11-21 at 21.21.08 (1).jpeg new file mode 100644 index 0000000..bef9bd5 Binary files /dev/null and b/assets/uploads/1763772646_692108e6addf9_WhatsApp Image 2025-11-21 at 21.21.08 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6af76e_WhatsApp Image 2025-11-21 at 21.21.08 (2).jpeg b/assets/uploads/1763772646_692108e6af76e_WhatsApp Image 2025-11-21 at 21.21.08 (2).jpeg new file mode 100644 index 0000000..7f7f058 Binary files /dev/null and b/assets/uploads/1763772646_692108e6af76e_WhatsApp Image 2025-11-21 at 21.21.08 (2).jpeg differ diff --git a/assets/uploads/1763772646_692108e6afa25_WhatsApp Image 2025-11-21 at 21.21.08.jpeg b/assets/uploads/1763772646_692108e6afa25_WhatsApp Image 2025-11-21 at 21.21.08.jpeg new file mode 100644 index 0000000..b662415 Binary files /dev/null and b/assets/uploads/1763772646_692108e6afa25_WhatsApp Image 2025-11-21 at 21.21.08.jpeg differ diff --git a/assets/uploads/1763772646_692108e6afdb0_WhatsApp Image 2025-11-21 at 21.21.09 (1).jpeg b/assets/uploads/1763772646_692108e6afdb0_WhatsApp Image 2025-11-21 at 21.21.09 (1).jpeg new file mode 100644 index 0000000..9a57812 Binary files /dev/null and b/assets/uploads/1763772646_692108e6afdb0_WhatsApp Image 2025-11-21 at 21.21.09 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b0074_WhatsApp Image 2025-11-21 at 21.21.09.jpeg b/assets/uploads/1763772646_692108e6b0074_WhatsApp Image 2025-11-21 at 21.21.09.jpeg new file mode 100644 index 0000000..7e9872f Binary files /dev/null and b/assets/uploads/1763772646_692108e6b0074_WhatsApp Image 2025-11-21 at 21.21.09.jpeg differ diff --git a/assets/uploads/1763772646_692108e6b02b5_WhatsApp Image 2025-11-21 at 21.21.11 (1).jpeg b/assets/uploads/1763772646_692108e6b02b5_WhatsApp Image 2025-11-21 at 21.21.11 (1).jpeg new file mode 100644 index 0000000..c196358 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b02b5_WhatsApp Image 2025-11-21 at 21.21.11 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b04cd_WhatsApp Image 2025-11-21 at 21.21.11.jpeg b/assets/uploads/1763772646_692108e6b04cd_WhatsApp Image 2025-11-21 at 21.21.11.jpeg new file mode 100644 index 0000000..a548988 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b04cd_WhatsApp Image 2025-11-21 at 21.21.11.jpeg differ diff --git a/assets/uploads/1763772646_692108e6b06c7_WhatsApp Image 2025-11-21 at 21.21.12 (1).jpeg b/assets/uploads/1763772646_692108e6b06c7_WhatsApp Image 2025-11-21 at 21.21.12 (1).jpeg new file mode 100644 index 0000000..8324680 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b06c7_WhatsApp Image 2025-11-21 at 21.21.12 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b0871_WhatsApp Image 2025-11-21 at 21.21.12 (2).jpeg b/assets/uploads/1763772646_692108e6b0871_WhatsApp Image 2025-11-21 at 21.21.12 (2).jpeg new file mode 100644 index 0000000..8324680 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b0871_WhatsApp Image 2025-11-21 at 21.21.12 (2).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b0bfe_WhatsApp Image 2025-11-21 at 21.21.12 (3).jpeg b/assets/uploads/1763772646_692108e6b0bfe_WhatsApp Image 2025-11-21 at 21.21.12 (3).jpeg new file mode 100644 index 0000000..106cc9b Binary files /dev/null and b/assets/uploads/1763772646_692108e6b0bfe_WhatsApp Image 2025-11-21 at 21.21.12 (3).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b1836_WhatsApp Image 2025-11-21 at 21.21.12 (4).jpeg b/assets/uploads/1763772646_692108e6b1836_WhatsApp Image 2025-11-21 at 21.21.12 (4).jpeg new file mode 100644 index 0000000..ccabdd2 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b1836_WhatsApp Image 2025-11-21 at 21.21.12 (4).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b1acb_WhatsApp Image 2025-11-21 at 21.21.12.jpeg b/assets/uploads/1763772646_692108e6b1acb_WhatsApp Image 2025-11-21 at 21.21.12.jpeg new file mode 100644 index 0000000..aea4b5d Binary files /dev/null and b/assets/uploads/1763772646_692108e6b1acb_WhatsApp Image 2025-11-21 at 21.21.12.jpeg differ diff --git a/assets/uploads/1763772646_692108e6b1ccd_WhatsApp Image 2025-11-21 at 21.21.13 (1).jpeg b/assets/uploads/1763772646_692108e6b1ccd_WhatsApp Image 2025-11-21 at 21.21.13 (1).jpeg new file mode 100644 index 0000000..93d8729 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b1ccd_WhatsApp Image 2025-11-21 at 21.21.13 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b1e94_WhatsApp Image 2025-11-21 at 21.21.13 (2).jpeg b/assets/uploads/1763772646_692108e6b1e94_WhatsApp Image 2025-11-21 at 21.21.13 (2).jpeg new file mode 100644 index 0000000..93d8729 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b1e94_WhatsApp Image 2025-11-21 at 21.21.13 (2).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b2029_WhatsApp Image 2025-11-21 at 21.21.13 (3).jpeg b/assets/uploads/1763772646_692108e6b2029_WhatsApp Image 2025-11-21 at 21.21.13 (3).jpeg new file mode 100644 index 0000000..5e71c1b Binary files /dev/null and b/assets/uploads/1763772646_692108e6b2029_WhatsApp Image 2025-11-21 at 21.21.13 (3).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b21a6_WhatsApp Image 2025-11-21 at 21.21.13 (4).jpeg b/assets/uploads/1763772646_692108e6b21a6_WhatsApp Image 2025-11-21 at 21.21.13 (4).jpeg new file mode 100644 index 0000000..1633cd7 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b21a6_WhatsApp Image 2025-11-21 at 21.21.13 (4).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b23b2_WhatsApp Image 2025-11-21 at 21.21.13.jpeg b/assets/uploads/1763772646_692108e6b23b2_WhatsApp Image 2025-11-21 at 21.21.13.jpeg new file mode 100644 index 0000000..f83c389 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b23b2_WhatsApp Image 2025-11-21 at 21.21.13.jpeg differ diff --git a/assets/uploads/1763772646_692108e6b2550_WhatsApp Image 2025-11-21 at 21.21.14 (1).jpeg b/assets/uploads/1763772646_692108e6b2550_WhatsApp Image 2025-11-21 at 21.21.14 (1).jpeg new file mode 100644 index 0000000..5f2ca25 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b2550_WhatsApp Image 2025-11-21 at 21.21.14 (1).jpeg differ diff --git a/assets/uploads/1763772646_692108e6b2724_WhatsApp Image 2025-11-21 at 21.21.14.jpeg b/assets/uploads/1763772646_692108e6b2724_WhatsApp Image 2025-11-21 at 21.21.14.jpeg new file mode 100644 index 0000000..314d269 Binary files /dev/null and b/assets/uploads/1763772646_692108e6b2724_WhatsApp Image 2025-11-21 at 21.21.14.jpeg differ diff --git a/assets/uploads/1763772646_692108e6b28d1_WhatsApp Image 2025-11-21 at 21.21.15 (1).jpeg b/assets/uploads/1763772646_692108e6b28d1_WhatsApp Image 2025-11-21 at 21.21.15 (1).jpeg new file mode 100644 index 0000000..19c0a4c Binary files /dev/null and b/assets/uploads/1763772646_692108e6b28d1_WhatsApp Image 2025-11-21 at 21.21.15 (1).jpeg differ diff --git a/db/migrate.php b/db/migrate.php index ddfb7a3..6e76504 100644 --- a/db/migrate.php +++ b/db/migrate.php @@ -1,12 +1,56 @@ exec($sql); - echo "Migration completed successfully.\n"; -} catch (PDOException $e) { - die("Migration failed: " . $e->getMessage() . "\n"); +function get_executed_migrations($pdo) { + try { + $stmt = $pdo->query("SELECT `migration` FROM `migrations`"); + return $stmt->fetchAll(PDO::FETCH_COLUMN); + } catch (PDOException $e) { + // If the migrations table doesn't exist, create it. + if ($e->getCode() === '42S02') { // Base table or view not found + $pdo->exec("CREATE TABLE `migrations` (`migration` VARCHAR(255) PRIMARY KEY, `executed_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"); + return []; + } + throw $e; + } } +function mark_migration_as_executed($pdo, $migration_file) { + $stmt = $pdo->prepare("INSERT INTO `migrations` (`migration`) VALUES (?)"); + $stmt->execute([$migration_file]); +} + +try { + $pdo = db(); + echo "Conectado ao banco de dados.\n"; + + $executed_migrations = get_executed_migrations($pdo); + echo "Migrações já executadas: " . (empty($executed_migrations) ? "Nenhuma" : implode(', ', $executed_migrations)) . "\n"; + + $migration_files = glob(__DIR__ . '/migrations/*.sql'); + sort($migration_files); + + $new_migrations_found = false; + foreach ($migration_files as $file) { + $filename = basename($file); + if (!in_array($filename, $executed_migrations)) { + $new_migrations_found = true; + echo "Executando migração: $filename...\n"; + + $sql = file_get_contents($file); + $pdo->exec($sql); + mark_migration_as_executed($pdo, $filename); + + echo " -> Migração $filename concluída.\n"; + } + } + + if (!$new_migrations_found) { + echo "Nenhuma nova migração para executar. O banco de dados já está atualizado.\n"; + } else { + echo "Todas as novas migrações foram concluídas com sucesso!\n"; + } + +} catch (PDOException $e) { + die("Falha na migração: " . $e->getMessage() . "\n"); +} \ No newline at end of file diff --git a/delete_installation.php b/delete_installation.php new file mode 100644 index 0000000..3a58878 --- /dev/null +++ b/delete_installation.php @@ -0,0 +1,119 @@ +prepare("DELETE FROM installation_images WHERE installation_id = ?"); + $stmt->execute([$id]); + + // Delete the installation + $stmt = $pdo->prepare("DELETE FROM installations WHERE id = ?"); + $stmt->execute([$id]); + + $_SESSION['message'] = 'Instalação excluída com sucesso!'; + $_SESSION['message_type'] = 'success'; + } catch (Exception $e) { + $_SESSION['message'] = 'Erro ao excluir a instalação: ' . $e->getMessage(); + $_SESSION['message_type'] = 'danger'; + } + } + header("Location: index.php"); + exit; +} + +// Handle the GET request to show the confirmation page +$id = $_GET['id'] ?? null; +if (!$id) { + header("Location: index.php"); + exit; +} + +// Fetch installation data for display +$stmt = $pdo->prepare("SELECT * FROM installations WHERE id = ?"); +$stmt->execute([$id]); +$installation = $stmt->fetch(PDO::FETCH_ASSOC); + +if (!$installation) { + $_SESSION['message'] = 'Instalação não encontrada.'; + $_SESSION['message_type'] = 'danger'; + header("Location: index.php"); + exit; +} +?> + + + + + + Confirmar Exclusão - iload net Solutions + + + + + + + + +
+ + +
+
+
+

Confirmar Exclusão

+
+
+

Você tem certeza de que deseja excluir permanentemente a instalação para o cliente no endereço ?

+

Atenção: Esta ação não pode ser desfeita.

+ +
+ + +
+ Cancelar + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/edit_installation.php b/edit_installation.php new file mode 100644 index 0000000..ca00815 --- /dev/null +++ b/edit_installation.php @@ -0,0 +1,179 @@ +prepare("SELECT * FROM installations WHERE id = ?"); +$stmt->execute([$id]); +$installation = $stmt->fetch(PDO::FETCH_ASSOC); + +if (!$installation) { + $_SESSION['message'] = 'Instalação não encontrada.'; + $_SESSION['message_type'] = 'danger'; + header("Location: index.php"); + exit; +} + +// Fetch images for this installation +$img_stmt = $pdo->prepare("SELECT * FROM installation_images WHERE installation_id = ?"); +$img_stmt->execute([$id]); +$images = $img_stmt->fetchAll(PDO::FETCH_ASSOC); + +?> + + + + + + Editar Instalação #<?php echo htmlspecialchars($installation['id']); ?> - iload net Solutions + + + + + + + + +
+ + +
+
+
+
+
+

Editar Instalação #

+
+
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + 0) { + $installation_date_formatted = date('Y-m-d', $timestamp); + } + } + ?> + +
+ +
+
Dados Elétricos
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
Imagens
+
+ + +
+ + +

Imagens existentes:

+
+ +
+ Imagem da instalação +
+ +
+ +

Nenhuma imagem existente.

+ + + +
+
+ Cancelar + +
+
+
+
+
+
+
+
+ + + + diff --git a/export_html.php b/export_html.php new file mode 100644 index 0000000..88dce4a --- /dev/null +++ b/export_html.php @@ -0,0 +1,169 @@ +prepare("SELECT * FROM installations WHERE id = :id"); + $stmt->bindParam(':id', $installation_id, PDO::PARAM_INT); + $stmt->execute(); + $installation = $stmt->fetch(PDO::FETCH_ASSOC); + + if (!$installation) { + die("Instalação não encontrada."); + } + + // 4. Buscar imagens da instalação + $img_stmt = $pdo->prepare("SELECT image_path FROM installation_images WHERE installation_id = :id ORDER BY id ASC"); + $img_stmt->bindParam(':id', $installation_id, PDO::PARAM_INT); + $img_stmt->execute(); + $images = $img_stmt->fetchAll(PDO::FETCH_ASSOC); + +} catch (Exception $e) { + die("Erro ao acessar o banco de dados: " . $e->getMessage()); +} + +// 5. Gerar o nome do arquivo para download +$filename = "instalacao_" . $installation['id'] . "_" . str_replace(' ', '_', $installation['client_name']) . ".doc"; + +// 6. Enviar cabeçalhos para forçar o download +header("Content-Type: application/vnd.ms-word"); +header("Content-Disposition: attachment; filename=\"" . $filename . "\""); +header("Expires: 0"); +header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + +// 7. Iniciar a geração do conteúdo HTML +?> + + + + + Relatório de Instalação - <?php echo htmlspecialchars($installation['client_name']); ?> + + + +
+

Relatório de Instalação

+ +

Detalhes do Cliente e Instalação

+ + + + + + + + + + + + + + + + + + + + + + + + + +
ID da Instalação
Cliente
Endereço
Técnico Responsável
Data
Status
+ +

Detalhes Técnicos

+ + + + + + + + + + + + + + + + + +
Potência do Carregador (kW)
Tensão da Rede (V)
Tipo de Disjuntor
Número de Série
+ +

Observações

+

+ + +

Imagens da Instalação

+
+ '; + } + ?> +
+ + +
+ + diff --git a/index.php b/index.php index 6a92089..a9d02ae 100644 --- a/index.php +++ b/index.php @@ -5,14 +5,63 @@ $message_type = $_SESSION['message_type'] ?? null; unset($_SESSION['message'], $_SESSION['message_type']); require_once __DIR__ . '/db/config.php'; + +// Get status from query string +$status_filter = $_GET['status'] ?? null; +$page_title = "Painel de Controle"; +if ($status_filter === 'Manutencao') { + $page_title = "Instalações em Manutenção"; +} + try { $pdo = db(); - $stmt = $pdo->query("SELECT * FROM installations ORDER BY created_at DESC LIMIT 10"); + + // Base query + $query = " + SELECT + i.*, + (SELECT ii.image_path FROM installation_images ii WHERE ii.installation_id = i.id ORDER BY ii.id ASC LIMIT 1) as first_image + FROM + installations i + "; + + // Apply status filter if present + if ($status_filter) { + $query .= " WHERE i.status = :status"; + } + + $query .= " ORDER BY i.created_at DESC"; + + $stmt = $pdo->prepare($query); + + if ($status_filter) { + $stmt->bindParam(':status', $status_filter, PDO::PARAM_STR); + } + + $stmt->execute(); $installations = $stmt->fetchAll(PDO::FETCH_ASSOC); - $total_installations = count($installations); + + // Calculate KPIs + $kpi_query = " + SELECT + (SELECT COUNT(*) FROM installations) as total, + (SELECT COUNT(*) FROM installations WHERE status = 'ativo') as active, + (SELECT COUNT(*) FROM installations WHERE status = 'Manutencao') as maintenance, + (SELECT COUNT(*) FROM installations WHERE status = 'Manutenção Parcial') as partial_maintenance + "; + $kpi_stmt = $pdo->query($kpi_query); + $kpis = $kpi_stmt->fetch(PDO::FETCH_ASSOC); + + $total_installations = $kpis['total'] ?? 0; + $active_installations = $kpis['active'] ?? 0; + $maintenance_installations = $kpis['maintenance'] ?? 0; + $partial_maintenance_installations = $kpis['partial_maintenance'] ?? 0; + } catch (Exception $e) { $installations = []; $total_installations = 0; + $active_installations = 0; + $maintenance_installations = 0; $db_error = "Falha na conexão com o banco de dados ou tabela não encontrada. Por favor, execute a migração."; } ?> @@ -21,10 +70,10 @@ try { - ILOADNET SOLUTIONS - Painel de Controle + iload net Solutions - <?php echo $page_title; ?> - + @@ -37,26 +86,16 @@ try {