| 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/ |
| 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);
}
}