getConnection(); if (!isset($iduserlogin)) { die("Errore: ID utente non definito."); } // Recupera utente $stmt = $pdo->prepare("SELECT id, first_name, last_name, email FROM auth_users WHERE id = ? LIMIT 1"); $stmt->execute([$iduserlogin]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if (!$user) { die("Errore: Utente non trovato."); } // Recupera eventuale scuola del proprietario $stmt = $pdo->prepare("SELECT * FROM schools WHERE owner_id = ? ORDER BY id DESC LIMIT 1"); $stmt->execute([$iduserlogin]); $school = $stmt->fetch(PDO::FETCH_ASSOC); $is_new = !$school; if ($is_new) { $school = [ 'id' => null, 'owner_id' => $iduserlogin, 'name' => '', 'slug' => '', 'website' => '', 'email' => $user['email'] ?? '', // default utile 'phone' => '', 'description' => '', 'address_street' => '', 'address_city' => '', 'address_postal_code' => '', 'address_province' => '', 'address_country' => 'Italia', 'latitude' => null, 'longitude' => null, 'owner_name' => trim(($user['first_name'] ?? '') . ' ' . ($user['last_name'] ?? '')), 'vat_number' => '', 'logo' => '', 'status' => 'active', ]; } else { // se esiste, sincronizza school_id in sessione $_SESSION['school_id'] = (int)$school['id']; } // Generatore slug function generateSlug($string) { $slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string); $slug = preg_replace('/[^a-z0-9 -]/i', '', $slug); $slug = trim($slug); $slug = preg_replace('/ +/', '-', $slug); $slug = strtolower($slug); return $slug; } // POST - Salvataggio $success_message = $error = null; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = trim($_POST['name'] ?? ''); $slug = generateSlug(trim($_POST['slug'] ?? $name)); $website = trim($_POST['website'] ?? ''); $email = trim($_POST['email'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $description = trim($_POST['description'] ?? ''); $address_street = trim($_POST['address_street'] ?? ''); $address_city = trim($_POST['address_city'] ?? ''); $address_postal_code = trim($_POST['address_postal_code'] ?? ''); $address_province = trim($_POST['address_province'] ?? ''); $address_country = trim($_POST['address_country'] ?? 'Italia'); $latitude = !empty($_POST['latitude']) ? floatval($_POST['latitude']) : null; $longitude = !empty($_POST['longitude']) ? floatval($_POST['longitude']) : null; $owner_name = trim($_POST['owner_name'] ?? ''); $vat_number = trim($_POST['vat_number'] ?? ''); $status = in_array($_POST['status'] ?? 'active', ['active', 'inactive', 'suspended']) ? $_POST['status'] : 'active'; // Validazioni if (empty($name)) $error = "Il nome della scuola è obbligatorio."; elseif (empty($slug)) $error = "Lo slug non può essere vuoto."; else { $stmt = $pdo->prepare("SELECT COUNT(*) FROM schools WHERE slug = ? AND id != ?"); $stmt->execute([$slug, $school['id'] ?? 0]); if ($stmt->fetchColumn() > 0) { $error = "Lo slug '$slug' è già in uso."; } } // Logo $logo = $school['logo'] ?? ''; if (!empty($_FILES['logo']['name']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) { $ext = strtolower(pathinfo($_FILES['logo']['name'], PATHINFO_EXTENSION)); if (in_array($ext, ['jpg', 'jpeg', 'png', 'gif'])) { $new_name = "photoschool/{$iduserlogin}-" . time() . "-logo.$ext"; if (move_uploaded_file($_FILES['logo']['tmp_name'], $new_name)) { if ($logo && file_exists($logo) && !$is_new) @unlink($logo); $logo = $new_name; } else { $error = "Errore caricamento logo."; } } else { $error = "Solo JPG, PNG, GIF ammessi."; } } if (!isset($error)) { $params = [ $name, $slug, $website ?: null, $email, $phone ?: null, $description, $address_street, $address_city, $address_postal_code, $address_province, $address_country, $latitude, $longitude, $owner_name, $vat_number, $logo, $status ]; if ($is_new) { $stmt = $pdo->prepare(" INSERT INTO schools ( owner_id, name, slug, website, email, phone, description, address_street, address_city, address_postal_code, address_province, address_country, latitude, longitude, owner_name, vat_number, logo, status ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) "); array_unshift($params, $iduserlogin); $success = $stmt->execute($params); if ($success) { // 1) Prendi ID appena creato $newSchoolId = (int)$pdo->lastInsertId(); // 2) Salvalo in sessione (FONDAMENTALE per evitare redirect onboarding) $_SESSION['school_id'] = $newSchoolId; // 3) Crea record settings base (se non esiste già) try { $stmtSet = $pdo->prepare("INSERT INTO school_settings (school_id) VALUES (?)"); $stmtSet->execute([$newSchoolId]); } catch (Exception $e) { // se esiste già, ignoriamo } // 4) Ricarica la scuola appena creata $stmt = $pdo->prepare("SELECT * FROM schools WHERE id = ? LIMIT 1"); $stmt->execute([$newSchoolId]); $school = $stmt->fetch(PDO::FETCH_ASSOC); $success_message = "Scuola creata con successo!"; $is_new = false; } else { $error = "Errore creazione scuola."; } } else { $params[] = $school['id']; $stmt = $pdo->prepare(" UPDATE schools SET name=?, slug=?, website=?, email=?, phone=?, description=?, address_street=?, address_city=?, address_postal_code=?, address_province=?, address_country=?, latitude=?, longitude=?, owner_name=?, vat_number=?, logo=?, status=? WHERE id=? "); $success = $stmt->execute($params); if ($success) { $success_message = "Profilo aggiornato con successo!"; $stmt = $pdo->prepare("SELECT * FROM schools WHERE id = ?"); $stmt->execute([$school['id']]); $school = $stmt->fetch(PDO::FETCH_ASSOC); } else { $error = "Errore aggiornamento."; } } } } ?>