TIF_Nganjuk_E41212313/resources/views/kurir/dashboard.blade.php

259 lines
9.7 KiB
PHP

<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SIMAS KURIR</title>
<!-- Google Fonts: Poppins -->
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap" rel="stylesheet">
<!-- Bootstrap CSS -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" crossorigin="anonymous" />
<style>
/* Menggunakan font Poppins */
body {
font-family: 'Poppins', sans-serif;
padding-top: 50px; /* Memberikan ruang untuk navbar fixed */
}
/* Navbar Fixed */
.navbar {
position: fixed;
top: 0;
width: 100%;
z-index: 1030;
}
/* Table */
.table-responsive {
max-height: 400px;
overflow-y: auto;
}
/* Card */
.bg-light-soft {
background-color: #f9f9f9; /* Soft light gray */
}
.btn-dynamic {
background-color: #007BFF;
border: none;
color: white;
padding: 12px 20px;
font-size: 16px;
font-weight: 600;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0, 123, 255, 0.3);
transition: background-color 0.3s, transform 0.2s;
cursor: pointer;
}
.btn-dynamic:hover {
transform: scale(1.03);
}
.btn-start {
background-color: #007BFF !important; /* Biru */
}
.btn-stop {
background-color: #DC3545 !important; /* Merah */
}
</style>
</head>
<body>
<!-- Navbar -->
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
<div class="container">
<a class="navbar-brand" href="#">Kurir Dashboard</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="{{ route('kurir.dashboard') }}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('kurir.order') }}">Order</a>
</li>
<li class="nav-item">
<form action="{{ route('logout') }}" method="POST" class="d-flex mt-1">
@csrf
<button type="submit" class="btn btn-sm btn-danger">Logout</button>
</form>
</li>
</ul>
</div>
</div>
</nav>
<!-- Konten -->
<div class="container mt-3">
<h2>Selamat datang, {{ auth()->user()->name }}!</h2>
<p>Jangan lupa untuk Presensi dan Cek Pesanan Anda hari ini!</p>
<div class="card border-0 mt-4 shadow">
<div class="card-body">
<div class="row">
<div class="col-md-4 mb-md-0 p-3">
<div class="card border-0 shadow bg-light-soft text-center">
<div class="card-body text-center">
<h5 class="card-title">
<i class="fas fa-map-marker-alt text-muted me-2"></i> Presensi
</h5>
@php $firstPresence = $locations->first(); @endphp
@if ($firstPresence)
<span class="badge {{ $firstPresence->created_at->format('H:i') < '07:30' ? 'bg-success text-white' : 'bg-danger text-white' }}">
{{ $firstPresence->created_at->format('H:i') < '07:30' ? 'Ontime' : 'Late' }}
</span>
<p class="text-muted mt-2"><strong>Waktu Upload:</strong> {{ $firstPresence->created_at->format('d-m-Y, H:i:s') }}</p>
@else
<p class="text-muted">Upload lokasi untuk melakukan presensi!</p>
@endif
</div>
</div>
</div>
<div class="col-md-4 mb-md-0 p-3">
<div class="card border-0 shadow bg-light-soft">
<div class="card-body text-center">
<h5 class="card-title"><i class="fas fa-clock text-muted mr-2"></i> Pesanan Menunggu</h5>
<h1 class="fw-bold text-warning">{{ $ordersProcessing }}</h1>
<p class="text-muted mb-0">Pesanan baru hari ini</p>
</div>
</div>
</div>
<div class="col-md-4 mb-md-0 p-3">
<div class="card border-0 shadow bg-light-soft">
<div class="card-body text-center">
<h5 class="card-title"><i class="fas fa-money-bill-wave text-muted mr-2"></i> Estimasi Pendapatan</h5>
<h1 class="fw-bold text-success">Rp {{ number_format($estimateSalary, 0, ',', '.') }}</h1>
<p class="text-muted mb-0">Total pendapatan hari ini</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tabel Lokasi -->
<div class="card mt-4 mb-4">
<div class="card-header">Daftar Lokasi Anda</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="presenceTable">
<thead>
<tr>
<th>No</th>
<th>Latitude</th>
<th>Longitude</th>
<th>Waktu Upload</th>
</tr>
</thead>
<tbody id="locationTableBody">
@if ($locations->isNotEmpty())
@php
$lastLocation = $locations->last();
@endphp
<tr>
<td>1</td>
<td>{{ $lastLocation->latitude }}</td>
<td>{{ $lastLocation->longitude }}</td>
<td>{{ $lastLocation->created_at->format('d-m-Y, H:i:s') }} WIB</td>
</tr>
@else
<tr>
<td colspan="6" class="text-center">
<div class="alert alert-warning mb-0">Data Belum Tersedia</div>
</td>
</tr>
@endif
</tbody>
</table>
</div>
<div class="location-controls mt-4 d-flex align-items-center gap-3">
<button id="uploadLocation" class="btn-dynamic">
📍 Upload Lokasi
</button>
</div>
<small id="locationStatus" class="text-muted d-block mt-2"></small>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
const statusElement = document.getElementById('locationStatus');
const locationTableBody = document.getElementById('locationTableBody');
function uploadLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function (position) {
const latitude = position.coords.latitude.toString();
const longitude = position.coords.longitude.toString();
axios.post('/location/store', {
latitude: latitude,
longitude: longitude,
_token: '{{ csrf_token() }}'
})
.then(function (response) {
statusElement.textContent = 'Lokasi berhasil diunggah.';
updateLocationTable(latitude, longitude);
})
.catch(function (error) {
statusElement.textContent = 'Gagal mengunggah lokasi.';
console.error(error);
});
},
function (error) {
statusElement.textContent = 'Gagal mengambil lokasi.';
console.error(error);
}
);
} else {
statusElement.textContent = 'Browser tidak mendukung Geolocation.';
}
}
function updateLocationTable(lat, long) {
locationTableBody.innerHTML = '';
const row = document.createElement('tr');
const now = new Date().toLocaleString('id-ID');
row.innerHTML = `
<td>1</td>
<td>${lat}</td>
<td>${long}</td>
<td>${now}</td>
`;
locationTableBody.appendChild(row);
}
// ⏬ Jalankan upload saat halaman selesai dimuat
window.addEventListener('load', function () {
uploadLocation();
// 🔁 Auto reload setiap 30 detik
setTimeout(() => {
location.reload();
}, 30000);
});
</script>
<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>