<?php
// modules/profil.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
// Yetki: Herkes kendi profilini görebilir
yetkiKontrol(['root', 'yonetici', 'mudur', 'vardiya_amiri', 'muhasebe', 'insan_kaynaklari', 'calisan', 'stajyer']);
include '../includes/header.php';
include '../includes/menu.php';
$id = $_SESSION['kullanici_id'];
$mesaj = '';
// 1. MEVCUT VERİLERİ ÇEK
$stmt = $pdo->prepare("SELECT * FROM kullanicilar WHERE id = ?");
$stmt->execute([$id]);
$u = $stmt->fetch();
if (!$u) {
session_destroy();
echo "<script>location.href='../auth/login.php';</script>";
exit;
}
// --- POST İŞLEMİ (GÜNCELLEME) ---
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
csrfKontrol($_POST['csrf_token']);
// Değiştirilebilir Alanlar
$email = guvenlik($_POST['email']);
$telefon = telefonFormatla($_POST['telefon']);
$adres = guvenlik($_POST['adres']);
$kan_grubu = $_POST['kan_grubu'];
$medeni_durum = $_POST['medeni_durum'];
$cocuk_sayisi = (int)$_POST['cocuk_sayisi'];
// Şifreler
$eski_sifre = $_POST['eski_sifre'];
$yeni_sifre = $_POST['yeni_sifre'];
// Güvenlik Kontrolü
if (!password_verify($eski_sifre, $u['sifre_hash'])) {
$mesaj = '<div class="alert alert-danger"><i class="fas fa-exclamation-triangle me-2"></i> Mevcut şifrenizi yanlış girdiniz.</div>';
} else {
// Fotoğraf Yükleme
$foto_yolu = $u['fotograf_yolu'];
if (isset($_FILES['fotograf']) && $_FILES['fotograf']['error'] === UPLOAD_ERR_OK) {
$izin_verilenler = ['jpg', 'jpeg', 'png'];
$ext = strtolower(pathinfo($_FILES['fotograf']['name'], PATHINFO_EXTENSION));
if (in_array($ext, $izin_verilenler)) {
$on_ek = $u['tc_no'] ? $u['tc_no'] : $u['kullanici_adi'];
$yeni_ad = $on_ek . '_' . time() . '.' . $ext;
$hedef_klasor = '../assets/uploads/';
$hedef_dosya = $hedef_klasor . $yeni_ad;
if (!is_dir($hedef_klasor)) mkdir($hedef_klasor, 0777, true);
if (move_uploaded_file($_FILES['fotograf']['tmp_name'], $hedef_dosya)) {
if (!empty($u['fotograf_yolu']) && file_exists('../'.$u['fotograf_yolu']) && strpos($u['fotograf_yolu'], 'default') === false) {
@unlink('../'.$u['fotograf_yolu']);
}
$foto_yolu = 'assets/uploads/' . $yeni_ad;
}
}
}
// Veritabanı Güncelleme
$sql = "UPDATE kullanicilar SET email=?, telefon=?, adres=?, kan_grubu=?, medeni_durum=?, cocuk_sayisi=?, fotograf_yolu=?";
$params = [$email, $telefon, $adres, $kan_grubu, $medeni_durum, $cocuk_sayisi, $foto_yolu];
if (!empty($yeni_sifre)) {
if (strlen($yeni_sifre) < 6) {
$mesaj = '<div class="alert alert-danger">Yeni şifre en az 6 karakter olmalı.</div>';
goto form_goster;
}
$sql .= ", sifre_hash=?";
$params[] = password_hash($yeni_sifre, PASSWORD_DEFAULT);
}
$sql .= " WHERE id=?";
$params[] = $id;
try {
$pdo->prepare($sql)->execute($params);
if ($foto_yolu != $u['fotograf_yolu']) {
$_SESSION['fotograf_yolu'] = $foto_yolu;
}
logKaydet($pdo, $id, 'guncelleme', 'Kullanıcı profilini güncelledi.', 'kullanicilar', $id);
$mesaj = '<div class="alert alert-success"><i class="fas fa-check-circle me-2"></i> Profil başarıyla güncellendi.</div>';
// Verileri tazele
$stmt->execute([$id]);
$u = $stmt->fetch();
} catch (PDOException $e) {
$mesaj = '<div class="alert alert-danger">Veritabanı Hatası: ' . $e->getMessage() . '</div>';
}
}
}
form_goster:
?>
<div class="container-fluid">
<div class="row g-4">
<div class="col-12 col-md-4 col-lg-3">
<div class="card border-0 shadow-sm text-center mb-4">
<div class="card-body p-4">
<div class="position-relative d-inline-block mb-3">
<img src="../<?php echo !empty($u['fotograf_yolu']) ? htmlspecialchars($u['fotograf_yolu']) : 'assets/img/default-user.png'; ?>"
class="rounded-circle border border-4 border-light shadow-sm"
style="width: 140px; height: 140px; object-fit: cover;"
alt="Profil Resmi">
</div>
<h5 class="fw-bold mb-1"><?php echo htmlspecialchars($u['ad'] . ' ' . $u['soyad']); ?></h5>
<div class="text-muted small mb-3"><?php echo strtoupper(str_replace('_', ' ', $u['rol'])); ?></div>
<ul class="list-group list-group-flush text-start small">
<li class="list-group-item d-flex justify-content-between px-0">
<span class="text-muted">TC No:</span>
<span>
<?php echo (!empty($u['tc_no']) && strlen($u['tc_no']) >= 11) ? substr($u['tc_no'], 0, 2).'*******'.substr($u['tc_no'], -2) : '-'; ?>
</span>
</li>
<li class="list-group-item d-flex justify-content-between px-0">
<span class="text-muted fw-bold">SGK No:</span>
<span class="fw-bold text-dark"><?php echo !empty($u['sgk_no']) ? htmlspecialchars($u['sgk_no']) : '-'; ?></span>
</li>
<li class="list-group-item d-flex justify-content-between px-0">
<span class="text-muted">İşe Giriş:</span>
<span class="fw-bold text-primary"><?php echo tarihTurkce($u['ise_giris_tarihi']); ?></span>
</li>
</ul>
</div>
</div>
</div>
<div class="col-12 col-md-8 col-lg-9">
<div class="card border-0 shadow-sm">
<div class="card-header bg-white py-3 border-bottom">
<h5 class="mb-0 text-primary"><i class="fas fa-user-edit me-2"></i> Bilgilerimi Güncelle</h5>
</div>
<div class="card-body p-4">
<?php echo $mesaj; ?>
<div class="alert alert-warning border-0 shadow-sm mb-4">
<div class="d-flex">
<div class="me-3">
<i class="fas fa-info-circle fa-2x"></i>
</div>
<div class="small">
<strong>Bilgilendirme:</strong><br>
Bilgilerinizde hata var ve değişiklik yapamıyorsanız, lütfen <strong>İnsan Kaynakları</strong>, <strong>Muhasebe</strong> ya da <strong>Yönetim</strong> ile irtibat kurunuz.
</div>
</div>
</div>
<form method="POST" enctype="multipart/form-data">
<input type="hidden" name="csrf_token" value="<?php echo csrfTokenOlustur(); ?>">
<h6 class="text-muted text-uppercase small fw-bold mb-3 border-bottom pb-2">Resmi & Kimlik Bilgileri (Değiştirilemez)</h6>
<div class="row g-3 mb-4">
<div class="col-12 col-md-6">
<label class="form-label small text-muted">TC Kimlik No</label>
<input type="text" class="form-control bg-light" value="<?php echo (!empty($u['tc_no']) && strlen($u['tc_no']) >= 11) ? substr($u['tc_no'],0,2).'*******'.substr($u['tc_no'],-2) : ''; ?>" disabled>
</div>
<div class="col-12 col-md-6">
<label class="form-label small text-muted">SGK Sicil No</label>
<input type="text" class="form-control bg-light fw-bold" value="<?php echo !empty($u['sgk_no']) ? htmlspecialchars($u['sgk_no']) : '-'; ?>" disabled>
</div>
<div class="col-12 col-md-6">
<label class="form-label small text-muted">İşe Giriş Tarihi</label>
<input type="text" class="form-control bg-light fw-bold" value="<?php echo tarihTurkce($u['ise_giris_tarihi']); ?>" disabled>
</div>
<div class="col-12 col-md-6">
<label class="form-label small text-muted">Doğum Tarihi</label>
<input type="text" class="form-control bg-light" value="<?php echo tarihTurkce($u['dogum_tarihi']); ?>" disabled>
</div>
</div>
<h6 class="text-muted text-uppercase small fw-bold mb-3 border-bottom pb-2">İletişim & Kişisel (Düzenlenebilir)</h6>
<div class="row g-3 mb-4">
<div class="col-12 col-md-6">
<label class="form-label small fw-bold">E-Posta</label>
<input type="email" name="email" class="form-control" value="<?php echo htmlspecialchars($u['email'] ?? ''); ?>">
</div>
<div class="col-12 col-md-6">
<label class="form-label small fw-bold">Telefon</label>
<input type="text" name="telefon" class="form-control" value="<?php echo htmlspecialchars($u['telefon'] ?? ''); ?>">
</div>
<div class="col-12 col-md-4">
<label class="form-label small fw-bold">Medeni Durum</label>
<select name="medeni_durum" class="form-select">
<option value="">Seçiniz</option>
<?php foreach(['Bekar','Evli','Dul','Boşanmış'] as $d) echo "<option value='$d' ".($u['medeni_durum']==$d?'selected':'').">$d</option>"; ?>
</select>
</div>
<div class="col-12 col-md-4">
<label class="form-label small fw-bold">Çocuk Sayısı</label>
<input type="number" name="cocuk_sayisi" class="form-control" min="0" value="<?php echo (int)$u['cocuk_sayisi']; ?>">
</div>
<div class="col-12 col-md-4">
<label class="form-label small fw-bold">Kan Grubu</label>
<select name="kan_grubu" class="form-select">
<option value="">Seçiniz</option>
<?php foreach(['A+','A-','B+','B-','AB+','AB-','0+','0-'] as $g) echo "<option value='$g' ".($u['kan_grubu']==$g?'selected':'').">$g</option>"; ?>
</select>
</div>
<div class="col-12">
<label class="form-label small fw-bold">Adres</label>
<textarea name="adres" class="form-control" rows="2"><?php echo htmlspecialchars($u['adres'] ?? ''); ?></textarea>
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<label class="form-label small fw-bold">Profil Fotoğrafı</label>
<input type="file" name="fotograf" class="form-control" accept="image/*">
<div class="form-text">JPG, JPEG veya PNG formatında yükleyebilirsiniz.</div>
</div>
</div>
<div class="p-3 bg-light rounded border border-danger border-opacity-25">
<h6 class="text-danger small fw-bold mb-3"><i class="fas fa-lock me-1"></i> Onay & Güvenlik</h6>
<div class="row g-3">
<div class="col-12 col-md-6">
<label class="form-label fw-bold text-danger small">Mevcut Şifre (Zorunlu)</label>
<input type="password" name="eski_sifre" class="form-control" required placeholder="Değişiklikleri kaydetmek için girin">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-bold small">Yeni Şifre (Opsiyonel)</label>
<input type="password" name="yeni_sifre" class="form-control" placeholder="Değiştirmek istemiyorsanız boş bırakın">
</div>
</div>
</div>
<div class="d-grid mt-4">
<button type="submit" class="btn btn-primary btn-lg shadow-sm">
<i class="fas fa-save me-2"></i> Bilgilerimi Güncelle
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<?php include '../includes/footer.php'; ?>