LittleDemon WebShell


Linux in-mum-web1499.main-hosting.eu 5.14.0-503.40.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May 5 06:06:04 EDT 2025 x86_64
Path : /home/u901718425/domains/task.urbanpillar.in/public_html/dashboard/
File Upload :
Command :
Current File : /home/u901718425/domains/task.urbanpillar.in/public_html/dashboard/update_leave_status.php

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '../vendor/autoload.php';
require '../db.php';

$id = $_POST['id'] ?? null;
$status = $_POST['status'] ?? '';
$status_reason = $_POST['status_reason'] ?? '';

if (!$id || !in_array($status, ['approved', 'rejected'])) {
    http_response_code(400);
    echo json_encode(['error' => 'Invalid input']);
    exit;
}

$id = mysqli_real_escape_string($conn, $id);
$status = mysqli_real_escape_string($conn, $status);
$status_reason = mysqli_real_escape_string($conn, $status_reason);
$userQuery = "SELECT users.email, users.user_name as name, leaves.leave_data_json, leaves.reason, leaves.message_id 
              FROM leaves 
              JOIN users ON leaves.user_id = users.id 
              WHERE leaves.id = '$id'";
$userResult = mysqli_query($conn, $userQuery);
$userRow = mysqli_fetch_assoc($userResult);

if ($userRow) {
    $originalMsgId = $userRow['message_id'] ?? null;
    $userEmail = $userRow['email'];
    $userName = $userRow['name'];
    $leaveReason = $userRow['reason'];
    $leaveDataJson = $userRow['leave_data_json'];
    $leaveDates = json_decode($leaveDataJson, true);

    // Create leave summary
    $grouped = [];
    foreach ($leaveDates as $entry) {
        $type = $entry['type'];
        $grouped[$type][] = $entry['date'];
    }

    $summaryParts = [];
    foreach ($grouped as $type => $dates) {
        sort($dates);
        $formattedDays = array_map(function ($d) {
            return date('j', strtotime($d));
        }, $dates);
        $monthYear = date('F Y', strtotime($dates[0]));
        $count = count($dates);
        $summaryParts[] = "$count $type on " . implode(', ', $formattedDays) . " $monthYear";
    }

    $summaryText = implode(", ", $summaryParts);

    // Compose reply email
    $subject = "Your Leave Request has been " . ucfirst($status);
    $message = "
    <html>
    <body>
        <p>Dear $userName,</p>
        <p>Your leave request has been <strong>" . ucfirst($status) . "</strong>.</p>
        <p><strong>Reason:</strong> $leaveReason</p>
        <p><strong>Status Comment:</strong> $status_reason</p>
        <p><strong>Leave Summary:</strong><br>$summaryText</p>
        <p>Regards,<br>HR Team</p>
    </body>
    </html>
    ";

    $mail = new PHPMailer(true);
    try {
        
        $mail->setFrom($_SESSION['email'], "HR Team");
        $mail->addAddress($userRow['email'], $userRow['name']); // main recipient
        
        // ✅ Send a copy to sender
        $mail->addCC('hr.pune@kaycomm.in','saakshi.lodha@kaycomm.in'); // or use addBCC() if you don't want the recipient to see it
        
        $mail->isHTML(true);
        $mail->Subject = $subject;
        $mail->Body = $message;
        
        // ✅ Optional: Add reply headers
        if ($originalMsgId) {
            $mail->addCustomHeader('In-Reply-To', $originalMsgId);
            $mail->addCustomHeader('References', $originalMsgId);
        }
        
       if($mail->send()){
        // Update leave status
        $update = "UPDATE leaves 
                   SET status = '$status', status_reason = '$status_reason' 
                   WHERE id = '$id'";

        if (mysqli_query($conn, $update)) {
            echo json_encode(['success' => true]);
        } else {
            http_response_code(500);
            echo json_encode(['error' => 'Failed to update leave status']);
        }
       }else{
           http_response_code(500);
            echo json_encode(['error' => 'mail not send']);
       }

        
    } catch (Exception $e) {
        // Handle failure
        print_r($e);
    }
}



LittleDemon - FACEBOOK
[ KELUAR ]