116 lines
3.9 KiB
PHP
116 lines
3.9 KiB
PHP
<?php
|
|
session_start();
|
|
include 'koneksi.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
if (!isset($_SESSION['user_id'])) {
|
|
echo json_encode(['status' => 'error', 'message' => 'Sesi tidak valid. Silakan login ulang.']);
|
|
exit;
|
|
}
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
echo json_encode(['status' => 'error', 'message' => 'Method tidak diizinkan.']);
|
|
exit;
|
|
}
|
|
|
|
$id_account = $_SESSION['user_id'];
|
|
$form_type = $_POST['form_type'] ?? '';
|
|
|
|
// Ambil data existing dulu agar tidak ter-overwrite dengan kosong
|
|
$existing = $pdo->prepare("SELECT * FROM profile WHERE id_account = ?");
|
|
$existing->execute([$id_account]);
|
|
$old = $existing->fetch(PDO::FETCH_ASSOC);
|
|
|
|
// Merge: pakai POST value jika ada & tidak kosong, otherwise pakai existing
|
|
$email = trim($_POST['email'] ?? ($old['email'] ?? ''));
|
|
$moto = trim($_POST['moto'] ?? ($old['moto'] ?? ''));
|
|
$provinsi = trim($_POST['provinsi'] ?? ($old['provinsi'] ?? ''));
|
|
$kabupaten = trim($_POST['kabupaten'] ?? ($old['kabupaten'] ?? ''));
|
|
$kecamatan = trim($_POST['kecamatan'] ?? ($old['kecamatan'] ?? ''));
|
|
$desa = trim($_POST['desa'] ?? ($old['desa'] ?? ''));
|
|
$kode_pos = trim($_POST['kode_pos'] ?? ($old['kode_pos'] ?? ''));
|
|
$facebook = trim($_POST['facebook'] ?? ($old['facebook'] ?? ''));
|
|
$instagram = trim($_POST['instagram'] ?? ($old['instagram'] ?? ''));
|
|
$linkedin = trim($_POST['linkedin'] ?? ($old['linkedin'] ?? ''));
|
|
$whatsapp = trim($_POST['whatsapp'] ?? ($old['whatsapp'] ?? ''));
|
|
|
|
// Validasi berdasarkan form_type
|
|
if ($form_type === 'social') {
|
|
$required = [
|
|
'WhatsApp' => $whatsapp,
|
|
];
|
|
foreach ($required as $label => $value) {
|
|
if (empty($value)) {
|
|
echo json_encode(['status' => 'error', 'message' => "$label wajib diisi."]);
|
|
exit;
|
|
}
|
|
}
|
|
$waClean = preg_replace('/[^0-9]/', '', $whatsapp);
|
|
if (strlen($waClean) < 10 || strlen($waClean) > 15) {
|
|
echo json_encode(['status' => 'error', 'message' => 'Nomor WhatsApp harus 10-15 digit angka.']);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
if ($form_type === 'personal') {
|
|
$required = [
|
|
'Email' => $email,
|
|
];
|
|
foreach ($required as $label => $value) {
|
|
if (empty($value)) {
|
|
echo json_encode(['status' => 'error', 'message' => "$label wajib diisi."]);
|
|
exit;
|
|
}
|
|
}
|
|
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
|
echo json_encode(['status' => 'error', 'message' => 'Format email tidak valid.']);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
if ($form_type === 'address') {
|
|
// Hanya validasi alamat (kode pos tidak wajib)
|
|
$required = [
|
|
'Provinsi' => $provinsi,
|
|
'Kabupaten/Kota' => $kabupaten,
|
|
'Kecamatan' => $kecamatan,
|
|
'Desa' => $desa,
|
|
];
|
|
foreach ($required as $label => $value) {
|
|
if (empty($value)) {
|
|
echo json_encode(['status' => 'error', 'message' => "$label wajib diisi."]);
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
try {
|
|
$stmt = $pdo->prepare("
|
|
INSERT INTO profile (id_account, email, moto, provinsi, kabupaten, kecamatan, desa, kode_pos, facebook, instagram, linkedin, whatsapp)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
ON DUPLICATE KEY UPDATE
|
|
email = VALUES(email),
|
|
moto = VALUES(moto),
|
|
provinsi = VALUES(provinsi),
|
|
kabupaten = VALUES(kabupaten),
|
|
kecamatan = VALUES(kecamatan),
|
|
desa = VALUES(desa),
|
|
kode_pos = VALUES(kode_pos),
|
|
facebook = VALUES(facebook),
|
|
instagram = VALUES(instagram),
|
|
linkedin = VALUES(linkedin),
|
|
whatsapp = VALUES(whatsapp)
|
|
");
|
|
|
|
$stmt->execute([
|
|
$id_account, $email, $moto, $provinsi, $kabupaten, $kecamatan, $desa, $kode_pos,
|
|
$facebook, $instagram, $linkedin, $whatsapp
|
|
]);
|
|
|
|
echo json_encode(['status' => 'success', 'message' => 'Profil berhasil disimpan.']);
|
|
} catch (PDOException $e) {
|
|
echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan: ' . $e->getMessage()]);
|
|
}
|
|
?>
|