<?php
// modules/mesai-giris.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
// Herkes girebilir (Çalışanlar kendi adına, yöneticiler/muhasebe/İK diğerleri adına)
yetkiKontrol(['root', 'yonetici', 'mudur', 'vardiya_amiri', 'calisan', 'stajyer', 'muhasebe', 'insan_kaynaklari']);
include '../includes/header.php';
include '../includes/menu.php';
$mesaj = '';
$kullanici_id = $_SESSION['kullanici_id'];
$rol = $_SESSION['rol'];
// Yüksek yetki kontrolü
$yuksek_yetki = in_array($rol, ['root', 'yonetici', 'mudur', 'muhasebe', 'insan_kaynaklari']);
// Standart Günlük Çalışma Saati (Normalde 9.00 saat)
$gunluk_saat_std = (float)($pdo->query("SELECT ayar_degeri FROM site_ayarlari WHERE ayar_anahtari = 'gunluk_mesai_saati'")->fetchColumn() ?: 9.00);
// Fazla Mesai Sınırları
$maks_ek_mesai_saati_gunluk = 2.0; // Günlük 9 saat normal + 2 saat mesai sınırı.
$maks_ek_mesai_saati_haftalik = 15.0; // Haftalık 45 saat üzerine eklenebilecek maksimum mesai saati.
$maks_ek_mesai_saati_yillik = 270.0; // Yıllık yasal mesai sınırı.
// Tatil Günleri için Saat Aralığı (08:00 - 18:00)
$maks_tatil_calisma_saati = 10.0; // 18:00 - 08:00 = 10 saat.
// Resmi Tatil Listesi
$tatiller = $pdo->query("SELECT tarih FROM resmi_tatiller")->fetchAll(PDO::FETCH_COLUMN);
// --- SAAT SEÇENEKLERİ (GÜNCELLENDİ: Sadece tam ve buçuk saatler) ---
$zaman_secenekleri = "";
for ($saat = 0; $saat < 24; $saat++) {
foreach (['00', '30'] as $dakika) {
$deger = sprintf('%02d:%s', $saat, $dakika);
$zaman_secenekleri .= "<option value='$deger'>$deger</option>";
}
}
// SİLME İŞLEMİ (Mevcut kod aynı kalır)
if (isset($_GET['sil_id'])) {
$sil_id = (int)$_GET['sil_id'];
$sql_sil = "SELECT durum, calisan_id FROM mesai_hareketleri WHERE id = ?";
$kontrol_stmt = $pdo->prepare($sql_sil);
$kontrol_stmt->execute([$sil_id]);
$kayit = $kontrol_stmt->fetch();
if ($kayit) {
if ($kayit['durum'] == 'beklemede' && ($kayit['calisan_id'] == $kullanici_id || $yuksek_yetki)) {
$pdo->prepare("DELETE FROM mesai_hareketleri WHERE id = ?")->execute([$sil_id]);
$mesaj = '<div class="alert alert-warning shadow-sm border-0"><i class="fas fa-trash-alt me-2"></i> Kayıt silindi.</div>';
} elseif ($kayit['durum'] != 'beklemede' && !$yuksek_yetki) {
$mesaj = '<div class="alert alert-danger shadow-sm border-0"><i class="fas fa-times-circle me-2"></i> Hata: Onaylanmış kayıt silinemez!</div>';
} else {
$mesaj = '<div class="alert alert-danger shadow-sm border-0"><i class="fas fa-times-circle me-2"></i> Hata: Kayıt silme yetkiniz yok.</div>';
}
}
}
// KAYIT EKLEME
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
csrfKontrol($_POST['csrf_token']);
$kaydedilen_calisan_id = $kullanici_id;
if ($yuksek_yetki && isset($_POST['mesai_calisan_id']) && $_POST['mesai_calisan_id'] != 'kendi') {
$kaydedilen_calisan_id = (int)$_POST['mesai_calisan_id'];
}
$tarih = $_POST['tarih'];
$bas_saat = $_POST['baslangic_saati'];
$bit_saat = $_POST['bitis_saati'];
$yonetici_id = $_POST['hedef_yonetici_id'];
$aciklama = !empty($_POST['aciklama']) ? guvenlik($_POST['aciklama']) : '-';
$mesai_tipi = $_POST['mesai_turu'] ?? 'fazla_mesai';
$t1 = strtotime($bas_saat);
$t2 = strtotime($bit_saat);
if ($t2 < $t1) $t2 += 24 * 60 * 60; // Gece geçişi
$fark_saniye = $t2 - $t1;
$ham_saat = $fark_saniye / 3600;
// Mola Düşümü (Yüksek yetkili toplu girişte mola düşümü yapılmaz)
$mola = 0;
if (!$yuksek_yetki) {
if ($ham_saat > 7.5) $mola = 1;
elseif ($ham_saat > 4) $mola = 0.5;
}
$net_saat = $ham_saat - $mola;
if ($net_saat < 0) $net_saat = 0;
$gun_no = date('N', strtotime($tarih)); // 1=Pzt, 7=Pzr
$is_tatil_gunu = ($gun_no >= 6 || in_array($tarih, $tatiller));
$islem_engellendi = false;
// =========================================================
// !!! YILLIK SINIR KONTROLÜ (Maks. 270 Saat) - UYARI VERİLİR !!!
// =========================================================
$yil_basi = date('Y-01-01', strtotime($tarih));
$sql_yillik = "SELECT SUM(toplam_saat) FROM mesai_hareketleri
WHERE calisan_id = ? AND durum = 'onaylandi' AND tarih BETWEEN ? AND ?";
$stmt_yillik = $pdo->prepare($sql_yillik);
$stmt_yillik->execute([$kaydedilen_calisan_id, $yil_basi, $tarih]);
$yillik_toplam = $stmt_yillik->fetchColumn() ?: 0;
$yillik_yeni_toplam = $yillik_toplam + $net_saat;
if ($yillik_yeni_toplam > $maks_ek_mesai_saati_yillik) {
$izin_verilen = number_format($maks_ek_mesai_saati_yillik - $yillik_toplam, 1);
// KAYIT ENGELİ KALDIRILDI, ŞİDDETLİ UYARI VERİLDİ.
$mesaj_yillik = "<div class='alert alert-danger shadow-sm border-start border-danger border-5'>
<h5 class='alert-heading h6 fw-bold'><i class='fas fa-exclamation-triangle me-2'></i> ÖNEMLİ UYARI (KANUN LİMİTİ AŞILDI)!</h5>
Yıllık yasal mesai sınırı (**{$maks_ek_mesai_saati_yillik} saat**) bu kayıt ile aşılmaktadır.
Mevcut onaylı: **{$yillik_toplam} saat**. Yöneticiler, muvafakatname kontrolü yapmalıdır.
</div>";
}
// =========================================================
// !!! HAFTALIK SINIR KONTROLÜ (Maks. 15 Saat) - ENGELLEME DEVAM EDER !!!
// =========================================================
if (!$islem_engellendi) {
$tarih_obj = new DateTime($tarih);
$hafta_gun_no = $tarih_obj->format('N');
$hafta_baslangic = clone $tarih_obj;
$hafta_baslangic->modify('-' . ($hafta_gun_no - 1) . ' days');
$hafta_bitis = clone $hafta_baslangic;
$hafta_bitis->modify('+6 days');
$sql_haftalik_mesai = "SELECT SUM(toplam_saat) FROM mesai_hareketleri
WHERE calisan_id = ? AND durum = 'onaylandi' AND tarih BETWEEN ? AND ?";
$stmt_haftalik = $pdo->prepare($sql_haftalik_mesai);
$stmt_haftalik->execute([$kaydedilen_calisan_id, $hafta_baslangic->format('Y-m-d'), $hafta_bitis->format('Y-m-d')]);
$haftalik_toplam = $stmt_haftalik->fetchColumn() ?: 0;
$haftalik_yeni_toplam = $haftalik_toplam + $net_saat;
if ($haftalik_yeni_toplam > $maks_ek_mesai_saati_haftalik) {
$izin_verilen = number_format($maks_ek_mesai_saati_haftalik - $haftalik_toplam, 1);
if($izin_verilen < 0) $izin_verilen = 0;
$mesaj = "<div class='alert alert-danger shadow-sm border-start border-danger border-5'>
<h5 class='alert-heading h6 fw-bold'><i class='fas fa-exclamation-triangle me-2'></i> KAYIT İPTAL (HAFTALIK LİMİT)!</h5>
Haftalık toplam mesai sınırı (**{$maks_ek_mesai_saati_haftalik} saat**) aşıldı. Bu hafta kalan limit: **{$izin_verilen} saat**.
</div>";
$islem_engellendi = true;
}
}
// =========================================================
// !!! GÜNLÜK SINIR KONTROLÜ - ENGELLEME DEVAM EDER !!!
// =========================================================
if (!$islem_engellendi) {
if ($is_tatil_gunu) {
// --- 1. Tatil Günü Kontrolü (Cumartesi, Pazar, Resmi Tatil/Bayram) ---
$baslangic_zaman = strtotime($bas_saat);
$bitis_zaman = strtotime($bit_saat);
$hedef_baslangic = strtotime('08:00');
$hedef_bitis = strtotime('18:00');
if ($baslangic_zaman < $hedef_baslangic || $bitis_zaman > $hedef_bitis) {
$mesaj = "<div class='alert alert-danger shadow-sm border-start border-danger border-5'>
<h5 class='alert-heading h6 fw-bold'><i class='fas fa-exclamation-triangle me-2'></i> SAAT HATASI!</h5>
Tatil günlerinde mesai girişi sadece 08:00 - 18:00 saatleri arasında yapılabilir.
</div>";
$islem_engellendi = true;
}
if (!$islem_engellendi && $net_saat > $maks_tatil_calisma_saati) {
$mesaj = "<div class='alert alert-danger shadow-sm border-start border-danger border-5'>
<h5 class='alert-heading h6 fw-bold'><i class='fas fa-exclamation-triangle me-2'></i> SÜRE HATASI!</h5>
Tatil günlerinde toplam çalışma süresi 10 saati aşamaz (08:00-18:00).
</div>";
$islem_engellendi = true;
}
} else {
// --- 2. Hafta İçi Kontrolü (Pazartesi - Cuma) ---
$sql_onceki_mesai = "SELECT SUM(toplam_saat) FROM mesai_hareketleri
WHERE calisan_id = ? AND durum = 'onaylandi' AND tarih = ?";
$stmt_onceki = $pdo->prepare($sql_onceki_mesai);
$stmt_onceki->execute([$kaydedilen_calisan_id, $tarih]);
$onceki_onayli_mesai = $stmt_onceki->fetchColumn() ?: 0;
$toplam_mesai_o_gun = $onceki_onayli_mesai + $net_saat;
if ($toplam_mesai_o_gun > $maks_ek_mesai_saati_gunluk) {
$izin_verilen = number_format($maks_ek_mesai_saati_gunluk - $onceki_onayli_mesai, 1);
if($izin_verilen < 0) $izin_verilen = 0;
$mesaj = "<div class='alert alert-danger shadow-sm border-start border-danger border-5'>
<h5 class='alert-heading h6 fw-bold'><i class='fas fa-exclamation-triangle me-2'></i> KAYIT İPTAL (GÜNLÜK LİMİT)!</h5>
Hafta içi için günlük toplam mesai süresi (9 saat normal + 2 saat ek) aşılamaz.
Maksimum girebileceğiniz ek mesai: **{$izin_verilen} saat**'tir.
</div>";
$islem_engellendi = true;
}
}
}
// =========================================================
// !!! KONTROL SONUÇ VE KAYIT !!!
// =========================================================
if ($islem_engellendi) {
// Engelleme varsa işlemi sonlandır
goto end_of_post;
}
// Yıllık uyarı mesajını mevcut mesaja ekle (eğer haftalık/günlük engellenmediyse)
if (isset($mesaj_yillik)) {
if (empty($mesaj)) {
$mesaj = $mesaj_yillik;
} else {
$mesaj .= $mesaj_yillik; // Bu durum pratikte olmaz, çünkü engellenen bir işlemde bu koda gelmez.
}
}
// Hedef Yöneticiyi Kontrol et
if (empty($yonetici_id) && $kaydedilen_calisan_id == $kullanici_id && !$yuksek_yetki) {
$mesaj .= '<div class="alert alert-danger shadow-sm border-0">Hata: Lütfen onaylayacak yönetici seçiniz.</div>';
goto end_of_post;
} else {
$sql = "INSERT INTO mesai_hareketleri (calisan_id, hedef_yonetici_id, tarih, baslangic_saati, bitis_saati, toplam_saat, mesai_turu, aciklama, durum)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
$durum = ($kaydedilen_calisan_id != $kullanici_id && $yuksek_yetki) ? 'onaylandi' : 'beklemede';
$hedef_yonetici = ($durum == 'onaylandi') ? $kullanici_id : $yonetici_id;
try {
$pdo->prepare($sql)->execute([$kaydedilen_calisan_id, $hedef_yonetici, $tarih, $bas_saat, $bit_saat, $net_saat, $mesai_tipi, $aciklama, $durum]);
$log_mesaj = "Mesai girişi: $tarih ($net_saat Saat) - {$durum}";
if($kaydedilen_calisan_id != $kullanici_id) $log_mesaj .= " (Personel ID: {$kaydedilen_calisan_id} Adına)";
logKaydet($pdo, $kullanici_id, 'ekleme', $log_mesaj, 'mesai_hareketleri', $pdo->lastInsertId());
if (!isset($mesaj_yillik) || empty($mesaj_yillik)) {
if ($durum == 'onaylandi') {
$mesaj = '<div class="alert alert-success shadow-sm border-start border-success border-5"><h5 class="alert-heading h6 fw-bold"><i class="fas fa-check-circle me-2"></i>Başarılı!</h5> Mesai kaydı doğrudan onaylandı.</div>';
} else {
$mesaj = '<div class="alert alert-success shadow-sm border-start border-success border-5"><h5 class="alert-heading h6 fw-bold"><i class="fas fa-check-circle me-2"></i>Başarılı!</h5> Mesai kaydınız yöneticiye iletildi.</div>';
}
} else {
// Eğer yıllık uyarı varsa, başarılı kaydı uyarı mesajının üstüne/altına ekle
$basari_mesaji = ($durum == 'onaylandi') ? "Kayıt başarıyla doğrudan onaylandı." : "Kayıt başarıyla yöneticiye iletildi.";
$mesaj = $mesaj_yillik . "<div class='alert alert-success shadow-sm border-start border-success border-5 mt-3'>{$basari_mesaji}</div>";
}
} catch (PDOException $e) {
$mesaj = '<div class="alert alert-danger shadow-sm border-0">Hata: ' . $e->getMessage() . '</div>';
}
}
}
end_of_post: // Kayıt sonrası devam etme noktası
// --- İSTATİSTİKLER VE GEÇMİŞ ---
// Kendi istatistiklerini gösterir.
$bugun = new DateTime();
$ay_basi = $bugun->format('Y-m-01');
$ay_sonu = $bugun->format('Y-m-t');
$haftanin_gunu = $bugun->format('N');
$pazartesi = clone $bugun; $pazartesi->modify('-' . ($haftanin_gunu - 1) . ' days');
$pazar = clone $pazartesi; $pazar->modify('+6 days');
$sql_haftalik = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = ? AND durum = 'onaylandi' AND tarih BETWEEN ? AND ?";
$stmt_h = $pdo->prepare($sql_haftalik);
$stmt_h->execute([$kullanici_id, $pazartesi->format('Y-m-d'), $pazar->format('Y-m-d')]);
$haftalik_toplam = $stmt_h->fetchColumn() ?: 0;
$sql_aylik = "SELECT SUM(toplam_saat) FROM mesai_hareketleri WHERE calisan_id = ? AND durum = 'onaylandi' AND tarih BETWEEN ? AND ?";
$stmt_ay = $pdo->prepare($sql_aylik);
$stmt_ay->execute([$kullanici_id, $ay_basi, $ay_sonu]);
$aylik_genel = $stmt_ay->fetchColumn() ?: 0;
// İlerleme (%100 45 saat)
$yuzde = ($haftalik_toplam / 45) * 100;
if($yuzde > 100) $yuzde = 100;
$renk = ($haftalik_toplam >= 45) ? 'bg-danger' : 'bg-success';
// Yöneticiler (Sadece Normal Çalışanlar Yöneticisine göndermeli)
$yoneticiler = $pdo->query("SELECT id, ad, soyad, rol FROM kullanicilar WHERE rol IN ('yonetici', 'mudur') AND durum=1 AND id != $kullanici_id")->fetchAll();
// Tüm çalışanlar (Yüksek yetkili roller için)
$tum_calisanlar = [];
if ($yuksek_yetki) {
$tum_calisanlar = $pdo->query("SELECT id, ad, soyad, rol FROM kullanicilar WHERE durum=1 AND rol NOT IN ('root') ORDER BY ad ASC")->fetchAll();
}
// Geçmiş
$gecmis = $pdo->prepare("SELECT * FROM mesai_hareketleri WHERE calisan_id = ? ORDER BY tarih DESC LIMIT 20");
$gecmis->execute([$kullanici_id]);
$kayitlar = $gecmis->fetchAll();
?>
<div class="container-fluid px-3">
<div class="row mb-4">
<div class="col-12">
<div class="card border-0 shadow-sm overflow-hidden">
<div class="card-header bg-white py-3 border-bottom-0">
<h6 class="mb-0 fw-bold text-dark text-uppercase small"><i class="fas fa-chart-pie me-2 text-primary"></i> Puantaj Durumunuz (Kendi Kayıtlarınız)</h6>
</div>
<div class="card-body pt-0 pb-4">
<div class="row g-3 text-center">
<div class="col-6 border-end">
<div class="text-muted small mb-1">BU HAFTA</div>
<h2 class="mb-0 fw-bold text-dark"><?php echo number_format($haftalik_toplam, 1); ?></h2>
<small class="text-muted" style="font-size: 0.7rem;">/ 45 SAAT</small>
<div class="progress mt-2" style="height: 4px;">
<div class="progress-bar <?php echo $renk; ?>" style="width: <?php echo $yuzde; ?>%"></div>
</div>
</div>
<div class="col-6">
<div class="text-muted small mb-1">BU AY TOPLAM</div>
<h2 class="mb-0 fw-bold text-primary"><?php echo number_format($aylik_genel, 1); ?></h2>
<small class="text-muted" style="font-size: 0.7rem;">SAAT ÇALIŞMA</small>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row g-4">
<div class="col-12 col-md-6 col-lg-5">
<div class="card border-0 shadow-sm h-100">
<div class="card-header bg-primary text-white py-3">
<h5 class="mb-0 fw-bold"><i class="fas fa-clock me-2"></i> Mesai Girişi</h5>
</div>
<div class="card-body p-4">
<?php echo $mesaj; ?>
<form method="POST">
<input type="hidden" name="csrf_token" value="<?php echo csrfTokenOlustur(); ?>">
<?php if ($yuksek_yetki): ?>
<div class="alert alert-info small py-2">
Mesaiyi **<?php echo strtoupper($rol); ?>** yetkisiyle giriyorsunuz. (Doğrudan **ONAYLI** olarak kaydedilecektir).
</div>
<div class="mb-4">
<label class="form-label fw-bold text-dark small">MESAYİ GİRİLECEK PERSONEL <span class="text-danger">*</span></label>
<select name="mesai_calisan_id" class="form-select form-select-lg bg-light border-warning fw-bold" required>
<option value="kendi" selected>-- Kendi Adıma Gir --</option>
<option disabled>──────────</option>
<?php foreach($tum_calisanlar as $c): ?>
<option value="<?php echo $c['id']; ?>">
<?php echo $c['ad'].' '.$c['soyad'].' ('.strtoupper($c['rol']).')'; ?>
</option>
<?php endforeach; ?>
</select>
</div>
<?php endif; ?>
<div class="mb-4">
<label class="form-label fw-bold text-muted small">TARİH SEÇİNİZ <span class="text-danger">*</span></label>
<input type="date" name="tarih" id="mesaiTarih" class="form-control form-control-lg bg-light border-0 fw-bold" required value="<?php echo date('Y-m-d'); ?>">
<div class="form-text text-danger small fw-bold mt-1">
Günlük ve Haftalık Mesai Sınırları kontrol edilecektir.
</div>
</div>
<div class="row g-3 mb-4">
<div class="col-6">
<label class="form-label fw-bold text-muted small">BAŞLANGIÇ <span class="text-danger">*</span></label>
<select name="baslangic_saati" id="baslangicSaati" class="form-select form-select-lg bg-light border-0 fw-bold" required>
<option value="">Seç...</option>
<?php echo $zaman_secenekleri; ?>
</select>
</div>
<div class="col-6">
<label class="form-label fw-bold text-muted small">BİTİŞ <span class="text-danger">*</span></label>
<select name="bitis_saati" class="form-select form-select-lg bg-light border-0 fw-bold" required>
<option value="">Seç...</option>
<?php echo $zaman_secenekleri; ?>
</select>
</div>
</div>
<div class="mb-4">
<label class="form-label fw-bold text-muted small">MESAI TÜRÜ <span class="text-danger">*</span></label>
<select name="mesai_turu" class="form-select form-select-lg bg-light border-0">
<option value="fazla_mesai" selected>Fazla Mesai (Hafta İçi, Cumartesi - 1.5x)</option>
<option value="hafta_tatili">Hafta Tatili (Pazar - 2.0x)</option>
<option value="resmi_tatil_mesaisi">Resmi Tatil / Bayram (2.0x)</option>
</select>
</div>
<?php if (!$yuksek_yetki): ?>
<div class="mb-4">
<label class="form-label fw-bold text-muted small">ONAYLAYACAK KİŞİ <span class="text-danger">*</span></label>
<select name="hedef_yonetici_id" class="form-select form-select-lg bg-light border-0" required>
<option value="">Yönetici Seçiniz...</option>
<?php foreach($yoneticiler as $y): ?>
<option value="<?php echo $y['id']; ?>"><?php echo $y['ad'].' '.$y['soyad']; ?></option>
<?php endforeach; ?>
</select>
</div>
<?php else: ?>
<input type="hidden" name="hedef_yonetici_id" value="<?php echo $kullanici_id; ?>">
<?php endif; ?>
<div class="mb-4">
<label class="form-label fw-bold text-muted small">AÇIKLAMA (İsteğe Bağlı)</label>
<textarea name="aciklama" class="form-control bg-light border-0" rows="2" placeholder="Varsa notunuz..."></textarea>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-primary btn-lg fw-bold shadow-sm py-3">
<i class="fas fa-paper-plane me-2"></i> KAYDET VE GÖNDER
</button>
</div>
</form>
</div>
</div>
</div>
<div class="col-12 col-md-6 col-lg-7">
<div class="card border-0 shadow-sm h-100">
<div class="card-header bg-white py-3 border-bottom">
<h5 class="mb-0 fw-bold text-dark"><i class="fas fa-history me-2"></i> Geçmiş Mesai Kayıtlarınız</h5>
</div>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light small text-muted text-uppercase">
<tr>
<th class="ps-4">Tarih</th>
<th>Tür</th>
<th>Saat</th>
<th>Süre</th>
<th>Durum</th>
<th></th>
</tr>
</thead>
<tbody class="border-top-0">
<?php foreach($kayitlar as $k): ?>
<tr>
<td class="ps-4">
<span class="fw-bold text-dark"><?php echo tarihTurkce($k['tarih']); ?></span>
</td>
<td>
<?php
$tur_map = ['fazla_mesai' => 'FM', 'hafta_tatili' => 'HT', 'resmi_tatil_mesaisi' => 'RT', 'normal_mesai' => 'NM'];
echo $tur_map[$k['mesai_turu']] ?? 'Diğer';
?>
</td>
<td class="text-muted small">
<?php echo substr($k['baslangic_saati'],0,5).'-'.substr($k['bitis_saati'],0,5); ?>
</td>
<td>
<span class="badge bg-light text-dark border"><?php echo $k['toplam_saat']; ?> Saat</span>
</td>
<td>
<?php if($k['durum']=='onaylandi'): ?>
<span class="badge bg-success bg-opacity-10 text-success px-2 py-1">Onaylı</span>
<?php elseif($k['durum']=='reddedildi'): ?>
<span class="badge bg-danger bg-opacity-10 text-danger px-2 py-1">Red</span>
<?php else: ?>
<span class="badge bg-warning bg-opacity-10 text-warning px-2 py-1">Bekliyor</span>
<?php endif; ?>
</td>
<td class="text-end pe-3">
<?php if($k['durum'] == 'beklemede'): ?>
<a href="?sil_id=<?php echo $k['id']; ?>" class="btn btn-sm btn-outline-danger border-0" onclick="return confirm('Silmek istiyor musunuz?')">
<i class="fas fa-trash-alt"></i>
</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
<?php if(empty($kayitlar)): ?>
<tr><td colspan="6" class="text-center py-5 text-muted">Henüz kayıt bulunmuyor.</td></tr>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script>
function togglePersonel(hedef) {
const tekilDiv = document.getElementById('personelSecimDivTekil');
const cokluDiv = document.getElementById('personelSecimDivCoklu');
const tekilSelect = tekilDiv.querySelector('select');
const cokluSelect = cokluDiv.querySelector('select');
// Gizle/Göster
tekilDiv.style.display = (hedef === 'tekil') ? 'block' : 'none';
cokluDiv.style.display = (hedef === 'coklu') ? 'block' : 'none';
// Zorunluluk (required) ayarı
if (hedef === 'tekil') {
tekilSelect.setAttribute('required', 'required');
cokluSelect.removeAttribute('required');
} else if (hedef === 'coklu') {
tekilSelect.removeAttribute('required');
cokluSelect.setAttribute('required', 'required');
} else { // 'toplu'
tekilSelect.removeAttribute('required');
cokluSelect.removeAttribute('required');
}
}
document.addEventListener('DOMContentLoaded', function() {
const tarihInput = document.getElementById('mesaiTarih');
const saatSelect = document.getElementById('baslangicSaati');
const mesaiCalisanIdSelect = document.querySelector('select[name="mesai_calisan_id"]');
function saatAyarla() {
if (mesaiCalisanIdSelect && mesaiCalisanIdSelect.value !== 'kendi') {
saatSelect.value = '';
return;
}
const tarihDegeri = tarihInput.value;
if (!tarihDegeri) return;
const secilenTarih = new Date(tarihDegeri);
const gun = secilenTarih.getDay();
let hedefSaat = (gun === 0 || gun === 6) ? "08:00" : "18:00";
saatSelect.value = hedefSaat;
}
if (mesaiCalisanIdSelect) {
mesaiCalisanIdSelect.addEventListener('change', saatAyarla);
}
tarihInput.addEventListener('change', saatAyarla);
saatAyarla();
});
</script>
<?php include '../includes/footer.php'; ?>