Files
bij/public/ios/app/debug/debug_presensi_submit.php
2026-04-21 05:59:39 +07:00

369 lines
16 KiB
PHP

<?php
session_start();
require_once __DIR__ . '/../config.php';
// Check if user is logged in
if (!isset($_SESSION['token'])) {
header('Location: login.php');
exit;
}
$token = $_SESSION['token'];
$user_data = $_SESSION['user_data'] ?? [];
// Get user profile data
$profile_result = api_get_profil($token);
$profile_data = $profile_result['success'] ? $profile_result['data'] : [];
// Extract user info
$pegawai = $profile_data['pegawai'] ?? $profile_data['data']['pegawai'] ?? $profile_data['data'] ?? [];
$user_name = $pegawai['nama_lengkap'] ?? $pegawai['nama'] ?? $user_data['nama'] ?? $user_data['nama_lengkap'] ?? 'User';
$user_id = $pegawai['nip'] ?? $pegawai['id'] ?? $user_data['id'] ?? $user_data['nip'] ?? '';
// Extract kantor coordinates
$kantor_lat = $pegawai['kantor']['latitude'] ?? $pegawai['kantor']['lat'] ?? $user_data['kantor_lat'] ?? -6.2088;
$kantor_lng = $pegawai['kantor']['longitude'] ?? $pegawai['kantor']['lng'] ?? $user_data['kantor_lng'] ?? 106.8456;
$toleransi_meter = $pegawai['kantor']['toleransi'] ?? $pegawai['toleransi'] ?? $user_data['toleransi'] ?? 100;
$debug_results = [];
$test_coordinates = [
['lat' => -6.2088, 'lng' => 106.8456, 'name' => 'Jakarta (Kantor)'],
['lat' => -6.2090, 'lng' => 106.8458, 'name' => 'Jakarta (50m dari kantor)'],
['lat' => -6.2100, 'lng' => 106.8470, 'name' => 'Jakarta (200m dari kantor)'],
['lat' => -6.3000, 'lng' => 106.9000, 'name' => 'Jakarta (Jauh dari kantor)'],
];
// Test presensi untuk setiap koordinat
foreach ($test_coordinates as $coord) {
$data = [
'latitude' => $coord['lat'],
'longitude' => $coord['lng'],
'waktu' => date('Y-m-d H:i:s')
];
// Test masuk
$result_masuk = api_save_masuk($token, $data);
// Test pulang
$result_pulang = api_save_pulang($token, $data);
// Test istirahat
$result_istirahat = api_save_istirahat($token, $data);
$debug_results[] = [
'location' => $coord['name'],
'coordinates' => $coord['lat'] . ', ' . $coord['lng'],
'masuk' => $result_masuk,
'pulang' => $result_pulang,
'istirahat' => $result_istirahat
];
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Debug Presensi Submit - Sistem Presensi Bank BIJ</title>
<link rel="stylesheet" href="<?php echo asset('css/tailwind-essential.css'); ?>">
<style>
@font-face {
font-family: 'Outfit';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url('assets/webfonts/Outfit-Light.woff2') format('woff2');
}
@font-face {
font-family: 'Outfit';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('assets/webfonts/Outfit-Regular.woff2') format('woff2');
}
@font-face {
font-family: 'Outfit';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url('assets/webfonts/Outfit-Medium.woff2') format('woff2');
}
@font-face {
font-family: 'Outfit';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url('assets/webfonts/Outfit-SemiBold.woff2') format('woff2');
}
@font-face {
font-family: 'Outfit';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('assets/webfonts/Outfit-Bold.woff2') format('woff2');
}
body {
font-family: 'Outfit', sans-serif;
}
.code-block {
background: #1e1e1e;
color: #d4d4d4;
padding: 1rem;
border-radius: 0.5rem;
font-family: 'Courier New', monospace;
font-size: 0.875rem;
overflow-x: auto;
}
.success {
color: #10b981;
}
.error {
color: #ef4444;
}
.warning {
color: #f59e0b;
}
</style>
</head>
<body class="bg-gray-100 min-h-screen">
<div class="container mx-auto px-4 py-8">
<!-- Header -->
<div class="bg-white rounded-lg shadow-lg p-6 mb-6">
<div class="flex items-center justify-between">
<div>
<h1 class="text-2xl font-bold text-gray-800">Debug Presensi Submit</h1>
<p class="text-gray-600">Test API response untuk berbagai koordinat</p>
</div>
<div class="text-right">
<p class="text-sm text-gray-500">User: <?php echo htmlspecialchars($user_name); ?></p>
<p class="text-sm text-gray-500">NIP: <?php echo htmlspecialchars($user_id); ?></p>
</div>
</div>
</div>
<!-- Kantor Info -->
<div class="bg-white rounded-lg shadow-lg p-6 mb-6">
<h2 class="text-xl font-bold text-gray-800 mb-4">Informasi Kantor</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div>
<p class="text-sm text-gray-500">Koordinat Kantor</p>
<p class="font-mono text-lg"><?php echo $kantor_lat; ?>, <?php echo $kantor_lng; ?></p>
</div>
<div>
<p class="text-sm text-gray-500">Toleransi</p>
<p class="font-mono text-lg"><?php echo $toleransi_meter; ?> meter</p>
</div>
<div>
<p class="text-sm text-gray-500">Token</p>
<p class="font-mono text-sm"><?php echo substr($token, 0, 20); ?>...</p>
</div>
</div>
</div>
<!-- Test Results -->
<div class="space-y-6">
<?php foreach ($debug_results as $index => $result): ?>
<div class="bg-white rounded-lg shadow-lg p-6">
<h3 class="text-lg font-bold text-gray-800 mb-4">
Test <?php echo $index + 1; ?>: <?php echo htmlspecialchars($result['location']); ?>
</h3>
<p class="text-sm text-gray-600 mb-4">Koordinat: <?php echo $result['coordinates']; ?></p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<!-- Masuk -->
<div class="border rounded-lg p-4">
<h4 class="font-semibold text-gray-700 mb-2">
<i class="fas fa-sign-in-alt mr-2"></i>Masuk
</h4>
<div class="space-y-2">
<p class="text-sm">
<span class="font-medium">Status:</span>
<span class="<?php echo $result['masuk']['success'] ? 'success' : 'error'; ?>">
<?php echo $result['masuk']['success'] ? 'SUCCESS' : 'ERROR'; ?>
</span>
</p>
<p class="text-sm">
<span class="font-medium">HTTP Code:</span>
<?php echo $result['masuk']['http_code']; ?>
</p>
<?php if (isset($result['masuk']['data']['pesan'])): ?>
<p class="text-sm">
<span class="font-medium">Pesan:</span>
<span class="<?php echo $result['masuk']['success'] ? 'success' : 'error'; ?>">
<?php echo htmlspecialchars($result['masuk']['data']['pesan']); ?>
</span>
</p>
<?php endif; ?>
</div>
</div>
<!-- Pulang -->
<div class="border rounded-lg p-4">
<h4 class="font-semibold text-gray-700 mb-2">
<i class="fas fa-sign-out-alt mr-2"></i>Pulang
</h4>
<div class="space-y-2">
<p class="text-sm">
<span class="font-medium">Status:</span>
<span class="<?php echo $result['pulang']['success'] ? 'success' : 'error'; ?>">
<?php echo $result['pulang']['success'] ? 'SUCCESS' : 'ERROR'; ?>
</span>
</p>
<p class="text-sm">
<span class="font-medium">HTTP Code:</span>
<?php echo $result['pulang']['http_code']; ?>
</p>
<?php if (isset($result['pulang']['data']['pesan'])): ?>
<p class="text-sm">
<span class="font-medium">Pesan:</span>
<span class="<?php echo $result['pulang']['success'] ? 'success' : 'error'; ?>">
<?php echo htmlspecialchars($result['pulang']['data']['pesan']); ?>
</span>
</p>
<?php endif; ?>
</div>
</div>
<!-- Istirahat -->
<div class="border rounded-lg p-4">
<h4 class="font-semibold text-gray-700 mb-2">
<i class="fas fa-coffee mr-2"></i>Istirahat
</h4>
<div class="space-y-2">
<p class="text-sm">
<span class="font-medium">Status:</span>
<span class="<?php echo $result['istirahat']['success'] ? 'success' : 'error'; ?>">
<?php echo $result['istirahat']['success'] ? 'SUCCESS' : 'ERROR'; ?>
</span>
</p>
<p class="text-sm">
<span class="font-medium">HTTP Code:</span>
<?php echo $result['istirahat']['http_code']; ?>
</p>
<?php if (isset($result['istirahat']['data']['pesan'])): ?>
<p class="text-sm">
<span class="font-medium">Pesan:</span>
<span class="<?php echo $result['istirahat']['success'] ? 'success' : 'error'; ?>">
<?php echo htmlspecialchars($result['istirahat']['data']['pesan']); ?>
</span>
</p>
<?php endif; ?>
</div>
</div>
</div>
<!-- Raw Response -->
<div class="mt-4">
<h5 class="font-semibold text-gray-700 mb-2">Raw Response (Masuk):</h5>
<div class="code-block">
<?php echo htmlspecialchars(json_encode($result['masuk'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<!-- Manual Test Form -->
<div class="bg-white rounded-lg shadow-lg p-6 mt-6">
<h2 class="text-xl font-bold text-gray-800 mb-4">Manual Test</h2>
<form method="POST" class="space-y-4">
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Latitude</label>
<input type="number" name="test_lat" step="any" value="-6.2088"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Longitude</label>
<input type="number" name="test_lng" step="any" value="106.8456"
class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Action</label>
<select name="test_action" class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500">
<option value="masuk">Masuk</option>
<option value="pulang">Pulang</option>
<option value="istirahat">Istirahat</option>
</select>
</div>
<button type="submit" name="manual_test"
class="w-full bg-blue-600 text-white py-2 px-4 rounded-lg hover:bg-blue-700 transition-colors">
<i class="fas fa-play mr-2"></i>Test Manual
</button>
</form>
<?php if (isset($_POST['manual_test'])): ?>
<div class="mt-6 p-4 bg-gray-50 rounded-lg">
<h3 class="font-semibold text-gray-700 mb-2">Manual Test Result:</h3>
<?php
$manual_data = [
'latitude' => $_POST['test_lat'],
'longitude' => $_POST['test_lng'],
'waktu' => date('Y-m-d H:i:s')
];
$manual_result = null;
switch ($_POST['test_action']) {
case 'masuk':
$manual_result = api_save_masuk($token, $manual_data);
break;
case 'pulang':
$manual_result = api_save_pulang($token, $manual_data);
break;
case 'istirahat':
$manual_result = api_save_istirahat($token, $manual_data);
break;
}
?>
<div class="space-y-2">
<p class="text-sm">
<span class="font-medium">Status:</span>
<span class="<?php echo $manual_result['success'] ? 'success' : 'error'; ?>">
<?php echo $manual_result['success'] ? 'SUCCESS' : 'ERROR'; ?>
</span>
</p>
<p class="text-sm">
<span class="font-medium">HTTP Code:</span>
<?php echo $manual_result['http_code']; ?>
</p>
<?php if (isset($manual_result['data']['pesan'])): ?>
<p class="text-sm">
<span class="font-medium">Pesan:</span>
<span class="<?php echo $manual_result['success'] ? 'success' : 'error'; ?>">
<?php echo htmlspecialchars($manual_result['data']['pesan']); ?>
</span>
</p>
<?php endif; ?>
</div>
<div class="mt-4">
<h5 class="font-semibold text-gray-700 mb-2">Raw Response:</h5>
<div class="code-block">
<?php echo htmlspecialchars(json_encode($manual_result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); ?>
</div>
</div>
</div>
<?php endif; ?>
</div>
<!-- Navigation -->
<div class="mt-6 text-center">
<a href="rekam.php" class="inline-flex items-center text-blue-600 hover:text-blue-800">
<i class="fas fa-arrow-left mr-2"></i> Kembali ke Rekam Presensi
</a>
</div>
</div>
</body>
</html>