PYBS (Personel Yönetim Bilgi Sistemi) / modules/tatil-yonetimi.php
tatil-yonetimi.php 116 satır • 5.35 KB
<?php
// modules/tatil-yonetimi.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';

// YETKİLER: Root, Yönetici, İK, Muhasebe
yetkiKontrol(['root', 'yonetici', 'insan_kaynaklari', 'muhasebe']);

include '../includes/header.php';
include '../includes/menu.php';

$mesaj = '';

// EKLEME İŞLEMİ
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['tarih'])) {
    csrfKontrol($_POST['csrf_token']);
    $tarih = $_POST['tarih'];
    $aciklama = guvenlik($_POST['aciklama']);

    // Çakışma Kontrolü
    $kontrol = $pdo->query("SELECT count(*) FROM resmi_tatiller WHERE tarih = '$tarih'")->fetchColumn();
    
    if ($kontrol > 0) {
        $mesaj = '<div class="alert alert-warning">Bu tarih zaten tatil olarak kayıtlı.</div>';
    } else {
        $pdo->prepare("INSERT INTO resmi_tatiller (tarih, aciklama) VALUES (?, ?)")->execute([$tarih, $aciklama]);
        logKaydet($pdo, $_SESSION['kullanici_id'], 'ekleme', "Resmi Tatil Eklendi: $tarih - $aciklama", 'resmi_tatiller', 0);
        $mesaj = '<div class="alert alert-success">Resmi tatil eklendi.</div>';
    }
}

// SİLME İŞLEMİ
if (isset($_GET['sil_id'])) {
    $id = (int)$_GET['sil_id'];
    $pdo->prepare("DELETE FROM resmi_tatiller WHERE id = ?")->execute([$id]);
    logKaydet($pdo, $_SESSION['kullanici_id'], 'silme', "Resmi Tatil Silindi (ID: $id)", 'resmi_tatiller', $id);
    $mesaj = '<div class="alert alert-danger">Tatil silindi.</div>';
}

// LİSTELEME
$yil = isset($_GET['yil']) ? $_GET['yil'] : date('Y');
$tatiller = $pdo->query("SELECT * FROM resmi_tatiller WHERE YEAR(tarih) = '$yil' ORDER BY tarih ASC")->fetchAll();
?>

<div class="container-fluid">
    <div class="row">
        <div class="col-md-4">
            <div class="card border-0 shadow-sm">
                <div class="card-header bg-primary text-white">
                    <h5 class="mb-0 fw-bold"><i class="fas fa-plus-circle me-2"></i> Tatil Ekle</h5>
                </div>
                <div class="card-body p-4">
                    <?php echo $mesaj; ?>
                    <form method="POST">
                        <input type="hidden" name="csrf_token" value="<?php echo csrfTokenOlustur(); ?>">
                        
                        <div class="mb-3">
                            <label class="form-label fw-bold">Tarih</label>
                            <input type="date" name="tarih" class="form-control" required>
                        </div>
                        
                        <div class="mb-3">
                            <label class="form-label fw-bold">Tatil Adı / Açıklama</label>
                            <input type="text" name="aciklama" class="form-control" placeholder="Örn: Ramazan Bayramı 1. Gün" required>
                        </div>

                        <div class="d-grid">
                            <button type="submit" class="btn btn-primary fw-bold">Kaydet</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>

        <div class="col-md-8">
            <div class="card border-0 shadow-sm">
                <div class="card-header bg-white d-flex justify-content-between align-items-center py-3">
                    <h5 class="mb-0 fw-bold text-dark"><i class="fas fa-calendar-alt text-warning me-2"></i> Resmi Tatil Listesi</h5>
                    <form method="GET" class="d-flex">
                        <select name="yil" class="form-select form-select-sm me-2" onchange="this.form.submit()">
                            <?php for($y=2024; $y<=2030; $y++) echo "<option value='$y' ".($y==$yil?'selected':'').">$y Yılı</option>"; ?>
                        </select>
                    </form>
                </div>
                <div class="table-responsive">
                    <table class="table table-hover align-middle mb-0">
                        <thead class="table-light">
                            <tr>
                                <th>Tarih</th>
                                <th>Gün</th>
                                <th>Açıklama</th>
                                <th class="text-end">İşlem</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach($tatiller as $t): ?>
                            <tr>
                                <td><span class="badge bg-secondary"><?php echo date('d.m.Y', strtotime($t['tarih'])); ?></span></td>
                                <td><?php echo tarihTurkce($t['tarih']); // Sadece gün adı ?></td> 
                                <td class="fw-bold text-dark"><?php echo $t['aciklama']; ?></td>
                                <td class="text-end">
                                    <a href="?sil_id=<?php echo $t['id']; ?>&yil=<?php echo $yil; ?>" class="btn btn-sm btn-outline-danger" onclick="return confirm('Silmek istiyor musunuz?')"><i class="fas fa-trash-alt"></i></a>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                            <?php if(empty($tatiller)) echo '<tr><td colspan="4" class="text-center text-muted py-4">Kayıtlı tatil bulunamadı.</td></tr>'; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include '../includes/footer.php'; ?>