Website
This commit is contained in:
parent
01a4d3e5d6
commit
a9151efeac
|
@ -0,0 +1,92 @@
|
||||||
|
<?php
|
||||||
|
// Koneksi ke database MySQL
|
||||||
|
$servername = "Localhost";
|
||||||
|
$username = "root";
|
||||||
|
$password = "";
|
||||||
|
$database = "travelapps";
|
||||||
|
|
||||||
|
$conn = new mysqli($servername, $username, $password, $database);
|
||||||
|
|
||||||
|
// Periksa koneksi
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("Koneksi ke database gagal: " . $conn->connect_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil data dari halaman login
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$username = $_POST["username"];
|
||||||
|
$password = $_POST["password"];
|
||||||
|
|
||||||
|
// Query untuk memeriksa apakah pengguna ada di database
|
||||||
|
$sql = "SELECT * FROM user WHERE username='$username' AND password='$password' AND id_role = 1";
|
||||||
|
$result = $conn->query($sql);
|
||||||
|
|
||||||
|
if ($result->num_rows == 1) {
|
||||||
|
// Pengguna berhasil login
|
||||||
|
session_start();
|
||||||
|
$_SESSION["username"] = $username;
|
||||||
|
header("Location: dashboard.php"); // Redirect ke halaman home setelah login sukses
|
||||||
|
} else {
|
||||||
|
// Login gagal, mungkin tampilkan pesan kesalahan
|
||||||
|
echo "Login gagal. Periksa kembali username dan password Anda atau pastikan Anda memiliki peran 'Admin'.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$conn->close();
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Login</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/login.css">
|
||||||
|
</head>
|
||||||
|
<body class="align">
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
<h2>Login</h2>
|
||||||
|
|
||||||
|
<form action="login.php" method="POST" class="form login">
|
||||||
|
|
||||||
|
<div class="form__field">
|
||||||
|
<label for="login__username"><svg class="icon">
|
||||||
|
<use xlink:href="#icon-user"></use>
|
||||||
|
</svg><span class="hidden">Username</span></label>
|
||||||
|
<input autocomplete="username" id="username" type="text" name="username" class="form__input" placeholder="Username" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form__field">
|
||||||
|
<label for="login__password"><svg class="icon">
|
||||||
|
<use xlink:href="#icon-lock"></use>
|
||||||
|
</svg><span class="hidden">Password</span></label>
|
||||||
|
<input id="password" type="password" name="password" class="form__input" placeholder="Password" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form__field">
|
||||||
|
<input type="submit" value="Sign In">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<p class="text--center">Not a member? <a href="#">Sign up now</a> <svg class="icon">
|
||||||
|
<use xlink:href="#icon-arrow-right"></use>
|
||||||
|
</svg></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="icons">
|
||||||
|
<symbol id="icon-arrow-right" viewBox="0 0 1792 1792">
|
||||||
|
<path d="M1600 960q0 54-37 91l-651 651q-39 37-91 37-51 0-90-37l-75-75q-38-38-38-91t38-91l293-293H245q-52 0-84.5-37.5T128 1024V896q0-53 32.5-90.5T245 768h704L656 474q-38-36-38-90t38-90l75-75q38-38 90-38 53 0 91 38l651 651q37 35 37 90z" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-lock" viewBox="0 0 1792 1792">
|
||||||
|
<path d="M640 768h512V576q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28H416q-40 0-68-28t-28-68V864q0-40 28-68t68-28h32V576q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z" />
|
||||||
|
</symbol>
|
||||||
|
<symbol id="icon-user" viewBox="0 0 1792 1792">
|
||||||
|
<path d="M1600 1405q0 120-73 189.5t-194 69.5H459q-121 0-194-69.5T192 1405q0-53 3.5-103.5t14-109T236 1084t43-97.5 62-81 85.5-53.5T538 832q9 0 42 21.5t74.5 48 108 48T896 971t133.5-21.5 108-48 74.5-48 42-21.5q61 0 111.5 20t85.5 53.5 62 81 43 97.5 26.5 108.5 14 109 3.5 103.5zm-320-893q0 159-112.5 271.5T896 896 624.5 783.5 512 512t112.5-271.5T896 128t271.5 112.5T1280 512z" />
|
||||||
|
</symbol>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"name": "ProjectTA",
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {}
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
# adminhub
|
||||||
|
Website ini merupakan hasil slicing dari Figma ke responsive website menggunakan HTML, CSS, dan JavaScript
|
|
@ -0,0 +1,20 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$token = $_POST['token'];
|
||||||
|
$latitude = $_POST['latitude'];
|
||||||
|
$longitude = $_POST['longitude'];
|
||||||
|
|
||||||
|
$sql = "UPDATE user SET latitude = '$latitude', longitude = '$longitude' WHERE token = '$token'";
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Failed to insert latLng'));
|
||||||
|
}
|
||||||
|
mysqli_close($db);
|
||||||
|
?>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$token = $_POST['token'];
|
||||||
|
|
||||||
|
$sql = "SELECT * FROM user WHERE token = '$token'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if (mysqli_num_rows($result) > 0) {
|
||||||
|
// Data ditemukan
|
||||||
|
$row = mysqli_fetch_assoc($result);
|
||||||
|
$latitude = $row['latitude'];
|
||||||
|
$longitude = $row['longitude'];
|
||||||
|
|
||||||
|
echo json_encode(array('success' => true, 'latitude' => $latitude, 'longitude' => $longitude));
|
||||||
|
} else {
|
||||||
|
// Data tidak ditemukan
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Data not found'));
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_user = $_GET['id_user'] ?? '';
|
||||||
|
|
||||||
|
// Validasi input
|
||||||
|
if (empty($id_user)) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'ID User tidak valid'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepared statement untuk mengambil notifikasi berdasarkan id_user
|
||||||
|
$sql = "SELECT * FROM notifikasi WHERE id_user = ?";
|
||||||
|
$stmt = mysqli_prepare($db, $sql);
|
||||||
|
mysqli_stmt_bind_param($stmt, 'i', $id_user);
|
||||||
|
mysqli_stmt_execute($stmt);
|
||||||
|
|
||||||
|
$result = mysqli_stmt_get_result($stmt);
|
||||||
|
$notifications = array();
|
||||||
|
|
||||||
|
// Loop melalui hasil dan menyimpan notifikasi dalam array
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
$notifications[] = $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengembalikan notifikasi dalam format JSON
|
||||||
|
echo json_encode($notifications);
|
||||||
|
|
||||||
|
// Tutup statement
|
||||||
|
mysqli_stmt_close($stmt);
|
||||||
|
|
||||||
|
// Tutup koneksi
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
if (!$db) {
|
||||||
|
die("Connection failed: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil kota asal dari parameter request
|
||||||
|
$selectedKotaAsal = isset($_GET['kota_asal']) ? $_GET['kota_asal'] : '';
|
||||||
|
|
||||||
|
// Query untuk mengambil kota asal
|
||||||
|
$queryAsal = "
|
||||||
|
SELECT DISTINCT kota_asal
|
||||||
|
FROM daftar_perjalanan
|
||||||
|
";
|
||||||
|
|
||||||
|
$resultAsal = mysqli_query($db, $queryAsal);
|
||||||
|
|
||||||
|
// Query untuk mengambil kota tujuan, mengabaikan kota yang dipilih sebagai asal
|
||||||
|
$queryTujuan = "
|
||||||
|
SELECT DISTINCT kota_tujuan
|
||||||
|
FROM daftar_perjalanan
|
||||||
|
WHERE kota_tujuan != '$selectedKotaAsal'
|
||||||
|
";
|
||||||
|
|
||||||
|
$resultTujuan = mysqli_query($db, $queryTujuan);
|
||||||
|
|
||||||
|
if ($resultAsal && $resultTujuan) {
|
||||||
|
$citiesAsal = array();
|
||||||
|
$citiesTujuan = array();
|
||||||
|
|
||||||
|
while ($rowAsal = mysqli_fetch_assoc($resultAsal)) {
|
||||||
|
$citiesAsal[] = $rowAsal['kota_asal'];
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($rowTujuan = mysqli_fetch_assoc($resultTujuan)) {
|
||||||
|
$citiesTujuan[] = $rowTujuan['kota_tujuan'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengembalikan hasil dalam format JSON
|
||||||
|
echo json_encode(array('success' => true, 'kota_asal' => $citiesAsal, 'kota_tujuan' => $citiesTujuan));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Failed to retrieve cities'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menutup koneksi database
|
||||||
|
mysqli_close($db);
|
||||||
|
?>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Terima input id_sopir
|
||||||
|
$id_sopir = $_GET['id_sopir'];
|
||||||
|
|
||||||
|
// Buat query SQL untuk memilih data dari hari ini hingga satu hari berikutnya menggunakan NOW() di SQL
|
||||||
|
$sql = "SELECT * FROM daftar_perjalanan
|
||||||
|
WHERE id_sopir = '$id_sopir'
|
||||||
|
AND tanggal BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)";
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
// Inisialisasi response
|
||||||
|
$response = array();
|
||||||
|
|
||||||
|
if (mysqli_num_rows($result) > 0) {
|
||||||
|
// Jika data ditemukan, tambahkan ke response
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
$response[] = $row;
|
||||||
|
}
|
||||||
|
echo json_encode($response);
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada data, kirim pesan JSON
|
||||||
|
echo json_encode(array('message' => 'Data tidak ditemukan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tutup koneksi database
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_sopir = $_POST['id_sopir'];
|
||||||
|
$id_perjalanan = $_POST['id_perjalanan'];
|
||||||
|
|
||||||
|
$sql = "SELECT p.*, u.*, dp.*,
|
||||||
|
|
||||||
|
lt.lat AS lat_tujuan, lt.lng AS lng_tujuan,
|
||||||
|
m.nama_mobil, m.plat
|
||||||
|
FROM pemesanan p
|
||||||
|
JOIN user u ON p.id_user = u.id_user
|
||||||
|
JOIN daftar_perjalanan dp ON p.id_perjalanan = dp.id_perjalanan
|
||||||
|
JOIN lokasi lt ON p.latlong_tujuan = lt.id
|
||||||
|
JOIN mobil m ON dp.mobil_id = m.id_mobil
|
||||||
|
WHERE p.status = 'Selesai'
|
||||||
|
AND dp.id_sopir = '$id_sopir'
|
||||||
|
AND dp.id_perjalanan = '$id_perjalanan'
|
||||||
|
AND p.status_antar = 'active'";
|
||||||
|
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if (mysqli_num_rows($result) > 0) {
|
||||||
|
$response = array();
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
$response[] = $row;
|
||||||
|
}
|
||||||
|
echo json_encode($response);
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('message' => 'Data tidak ditemukan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_sopir = $_POST['id_sopir'];
|
||||||
|
$id_perjalanan = $_POST['id_perjalanan'];
|
||||||
|
|
||||||
|
$sql = "SELECT p.*, u.*, dp.*,
|
||||||
|
|
||||||
|
lt.lat AS lat_tujuan, lt.lng AS lng_tujuan,
|
||||||
|
m.nama_mobil, m.plat
|
||||||
|
FROM pemesanan p
|
||||||
|
JOIN user u ON p.id_user = u.id_user
|
||||||
|
JOIN daftar_perjalanan dp ON p.id_perjalanan = dp.id_perjalanan
|
||||||
|
JOIN lokasi lt ON p.latlong_tujuan = lt.id
|
||||||
|
JOIN mobil m ON dp.mobil_id = m.id_mobil
|
||||||
|
WHERE p.status = 'Selesai'
|
||||||
|
AND dp.id_sopir = '$id_sopir'
|
||||||
|
AND dp.id_perjalanan = '$id_perjalanan'
|
||||||
|
AND p.status_penjemputan = 'active'";
|
||||||
|
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if (mysqli_num_rows($result) > 0) {
|
||||||
|
$response = array();
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
$response[] = $row;
|
||||||
|
}
|
||||||
|
echo json_encode(array('data' => $response, 'message' => 'ok'));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('message' => 'Data tidak ditemukan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
$id = $_GET['id'];
|
||||||
|
|
||||||
|
$sql = "SELECT * FROM sopir WHERE id_sopir = '" . $id . "'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if ($result->num_rows == 1) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
unset($row['password']);
|
||||||
|
unset($row['token']);
|
||||||
|
|
||||||
|
echo json_encode([
|
||||||
|
'message' => "success",
|
||||||
|
'sopir' => $row
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Token tidak valid"
|
||||||
|
]);
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Terima input id_sopir dan tanggal
|
||||||
|
$id_sopir = $_GET['id_sopir'];
|
||||||
|
|
||||||
|
// Buat query SQL untuk melakukan penggabungan tabel dan menghitung jumlah total penumpang
|
||||||
|
$sql = "SELECT dp.*, COUNT(p.id_perjalanan) AS total_penumpang
|
||||||
|
FROM daftar_perjalanan dp
|
||||||
|
LEFT JOIN pemesanan p ON dp.id_perjalanan = p.id_perjalanan AND p.status = 'Selesai'
|
||||||
|
WHERE dp.id_sopir = '$id_sopir'
|
||||||
|
GROUP BY dp.id_perjalanan
|
||||||
|
ORDER BY dp.tanggal DESC";
|
||||||
|
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
// Inisialisasi response
|
||||||
|
$response = array();
|
||||||
|
|
||||||
|
if (mysqli_num_rows($result) > 0) {
|
||||||
|
// Jika data ditemukan, tambahkan ke response
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
// Masukkan data ke dalam array response
|
||||||
|
$response[] = array(
|
||||||
|
"id_perjalanan" => $row["id_perjalanan"],
|
||||||
|
"kota_asal" => $row["kota_asal"],
|
||||||
|
"kota_tujuan" => $row["kota_tujuan"],
|
||||||
|
"tanggal" => $row["tanggal"],
|
||||||
|
"waktu_keberangkatan" => $row["waktu_keberangkatan"],
|
||||||
|
"harga" => $row["harga"],
|
||||||
|
"status" => $row["status"],
|
||||||
|
"jumlah_penumpang" => $row["jumlah_penumpang"],
|
||||||
|
"total_penumpang" => $row["total_penumpang"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Mengirimkan response dalam format JSON
|
||||||
|
echo json_encode($response);
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada data, kirim pesan JSON
|
||||||
|
echo json_encode(array('message' => 'Data tidak ditemukan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tutup koneksi database
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
$token = $_GET['token'];
|
||||||
|
|
||||||
|
$sql = "SELECT * FROM user WHERE token = '" . $token . "'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if ($result->num_rows == 1) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
unset($row['password']);
|
||||||
|
unset($row['token']);
|
||||||
|
|
||||||
|
echo json_encode([
|
||||||
|
'message' => "success",
|
||||||
|
'user' => $row
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Token tidak valid"
|
||||||
|
]);
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$password = $_POST['password'];
|
||||||
|
|
||||||
|
$sql = "SELECT * FROM user WHERE email = '" . $email . "'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if ($result->num_rows == 1) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
if (password_verify($password, $row['password'])) {
|
||||||
|
$token = generateRandomToken();
|
||||||
|
|
||||||
|
$updateTokenQuery = "UPDATE user SET token = '$token' WHERE email = '$email'";
|
||||||
|
mysqli_query($db, $updateTokenQuery);
|
||||||
|
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'message' => "Berhasil Login",
|
||||||
|
'user' => $row,
|
||||||
|
'token' => $token
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Password Salah"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Email dan Password Salah"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateRandomToken($length = 50)
|
||||||
|
{
|
||||||
|
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
$charactersLength = strlen($characters);
|
||||||
|
$randomToken = '';
|
||||||
|
for ($i = 0; $i < $length; $i++) {
|
||||||
|
$randomToken .= $characters[rand(0, $charactersLength - 1)];
|
||||||
|
}
|
||||||
|
return $randomToken;
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
$username = $_POST['username'];
|
||||||
|
$password = $_POST['password'];
|
||||||
|
|
||||||
|
$sql = "SELECT * FROM sopir WHERE username = '" . $username . "'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if ($result->num_rows == 1) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
|
||||||
|
if ($row['status'] == 'non_active') {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Akun Anda belum aktif mohon hubungi admin."
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
if (password_verify($password, $row['password'])) {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'message' => "Berhasil Login",
|
||||||
|
'user' => $row,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Password Salah"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Email dan Password Salah"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
?>
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
// Set your server key (Note: Server key for sandbox and production mode are different)
|
||||||
|
$server_key = 'Mid-server-XBke6mIjQ_YoBmmtePvZowCZ';
|
||||||
|
// Set true for production, set false for sandbox
|
||||||
|
$is_production = false;
|
||||||
|
|
||||||
|
$api_url = $is_production ?
|
||||||
|
'https://app.midtrans.com/snap/v1/transactions' :
|
||||||
|
'https://app.sandbox.midtrans.com/snap/v1/transactions';
|
||||||
|
|
||||||
|
|
||||||
|
// Check if request doesn't contains `/charge` in the url/path, display 404
|
||||||
|
if (!strpos($_SERVER['REQUEST_URI'], '/charge')) {
|
||||||
|
http_response_code(404);
|
||||||
|
echo "wrong path, make sure it's `/charge`";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
// Check if method is not HTTP POST, display 404
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||||
|
http_response_code(404);
|
||||||
|
echo "Page not found or wrong HTTP request method is used";
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the HTTP POST body of the request
|
||||||
|
$request_body = file_get_contents('php://input');
|
||||||
|
// set response's content type as JSON
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
// call charge API using request body passed by mobile SDK
|
||||||
|
$charge_result = chargeAPI($api_url, $server_key, $request_body);
|
||||||
|
// set the response http status code
|
||||||
|
http_response_code($charge_result['http_code']);
|
||||||
|
// then print out the response body
|
||||||
|
echo $charge_result['body'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* call charge API using Curl
|
||||||
|
* @param string $api_url
|
||||||
|
* @param string $server_key
|
||||||
|
* @param string $request_body
|
||||||
|
*/
|
||||||
|
function chargeAPI($api_url, $server_key, $request_body)
|
||||||
|
{
|
||||||
|
$ch = curl_init();
|
||||||
|
$curl_options = array(
|
||||||
|
CURLOPT_URL => $api_url,
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_POST => 1,
|
||||||
|
CURLOPT_HEADER => 0,
|
||||||
|
// Add header to the request, including Authorization generated from server key
|
||||||
|
CURLOPT_HTTPHEADER => array(
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Accept: application/json',
|
||||||
|
'Authorization: Basic ' . base64_encode($server_key . ':')
|
||||||
|
),
|
||||||
|
CURLOPT_POSTFIELDS => $request_body
|
||||||
|
);
|
||||||
|
curl_setopt_array($ch, $curl_options);
|
||||||
|
$result = array(
|
||||||
|
'body' => curl_exec($ch),
|
||||||
|
'http_code' => curl_getinfo($ch, CURLINFO_HTTP_CODE),
|
||||||
|
);
|
||||||
|
return $result;
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Database connection
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
if (!$db) {
|
||||||
|
die("Connection failed: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to update password
|
||||||
|
function updatePassword($email, $newPassword)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
// Update the password
|
||||||
|
$hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT);
|
||||||
|
$updateSql = "UPDATE sopir SET password = '$hashedPassword', reset_password_otp = NULL WHERE email = '$email'";
|
||||||
|
if (mysqli_query($db, $updateSql)) {
|
||||||
|
return true; // Password updated successfully
|
||||||
|
} else {
|
||||||
|
return false; // Failed to update password
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// API endpoint to update password
|
||||||
|
if (!empty($_POST['email']) && !empty($_POST['new_password'])) {
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$newPassword = $_POST['new_password'];
|
||||||
|
|
||||||
|
// Update password
|
||||||
|
$passwordUpdated = updatePassword($email, $newPassword);
|
||||||
|
|
||||||
|
if ($passwordUpdated) {
|
||||||
|
echo "Password updated successfully";
|
||||||
|
} else {
|
||||||
|
echo "Failed to update password. Please try again later.";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "Email and new password are required";
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Database connection
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
if (!$db) {
|
||||||
|
die("Connection failed: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to update password
|
||||||
|
function updatePassword($email, $oldPassword, $newPassword)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
// Hash the new password
|
||||||
|
$hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT);
|
||||||
|
|
||||||
|
// Check if the email exists in 'user' table and retrieve the current password hash
|
||||||
|
$queryUser = "SELECT password FROM user WHERE email = '" . mysqli_real_escape_string($db, $email) . "'";
|
||||||
|
$resultUser = mysqli_query($db, $queryUser);
|
||||||
|
|
||||||
|
if (mysqli_num_rows($resultUser) > 0) {
|
||||||
|
$user = mysqli_fetch_assoc($resultUser);
|
||||||
|
$currentPasswordHash = $user['password'];
|
||||||
|
|
||||||
|
// Verify the old password
|
||||||
|
if (password_verify($oldPassword, $currentPasswordHash)) {
|
||||||
|
// Update password in 'user' table
|
||||||
|
$updateSql = "UPDATE user SET password = '$hashedPassword', reset_password_otp = NULL WHERE email = '" . mysqli_real_escape_string($db, $email) . "'";
|
||||||
|
} else {
|
||||||
|
return array('success' => false, 'message' => 'Old password is incorrect');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return array('success' => false, 'message' => 'Email not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mysqli_query($db, $updateSql)) {
|
||||||
|
return array('success' => true, 'message' => 'Password updated successfully');
|
||||||
|
} else {
|
||||||
|
return array('success' => false, 'message' => 'Failed to update password');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// API endpoint to update password
|
||||||
|
if (!empty($_POST['email']) && !empty($_POST['old_password']) && !empty($_POST['new_password'])) {
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$oldPassword = $_POST['old_password'];
|
||||||
|
$newPassword = $_POST['new_password'];
|
||||||
|
|
||||||
|
// Update password
|
||||||
|
$passwordUpdated = updatePassword($email, $oldPassword, $newPassword);
|
||||||
|
|
||||||
|
echo json_encode($passwordUpdated);
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Email, old password, and new password are required'));
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_user = $_POST['id_user'];
|
||||||
|
$title = $_POST['title'];
|
||||||
|
$desc = $_POST['desc'];
|
||||||
|
|
||||||
|
// Prepared statement
|
||||||
|
$insert = mysqli_prepare($db, "INSERT INTO notifikasi (id_user, title, `desc`) VALUES (?, ?, ?)");
|
||||||
|
|
||||||
|
// Bind parameters
|
||||||
|
mysqli_stmt_bind_param($insert, 'iss', $id_user, $title, $desc);
|
||||||
|
|
||||||
|
// Execute statement
|
||||||
|
if (mysqli_stmt_execute($insert)) {
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => mysqli_error($db)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close statement
|
||||||
|
mysqli_stmt_close($insert);
|
||||||
|
|
||||||
|
// Close connection
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
// Basic authentication credentials
|
||||||
|
$username = 'SB-Mid-server-yIQsPkGPeYXJDAM2voIw1mp_';
|
||||||
|
|
||||||
|
// JSON data from request body
|
||||||
|
$requestBody = file_get_contents('php://input');
|
||||||
|
$requestData = json_decode($requestBody, true);
|
||||||
|
|
||||||
|
// Generate response JSON based on request data
|
||||||
|
$responseData = [
|
||||||
|
"payment_type" => $requestData["payment_type"],
|
||||||
|
"transaction_details" => [
|
||||||
|
"order_id" => isset($requestData["transaction_details"]["order_id"]) ? $requestData["transaction_details"]["order_id"] : "order_id-" . rand(1000, 9999),
|
||||||
|
"gross_amount" => isset($requestData["transaction_details"]["gross_amount"]) ? $requestData["transaction_details"]["gross_amount"] : 100000
|
||||||
|
],
|
||||||
|
"qris" => [
|
||||||
|
"acquirer" => $requestData["qris"]["acquirer"]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
// Output the response JSON
|
||||||
|
echo json_encode($responseData);
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_user = $_POST['id_user'];
|
||||||
|
$id_perjalanan = $_POST['id_perjalanan'];
|
||||||
|
$order_id = $_POST['order_id'];
|
||||||
|
$alamat_jemput = $_POST['alamat_jemput'];
|
||||||
|
$alamat_tujuan = $_POST['alamat_tujuan'];
|
||||||
|
$waktu_jemput = $_POST['waktu_jemput'];
|
||||||
|
$status = $_POST['status'];
|
||||||
|
$qty = $_POST['qty'];
|
||||||
|
$tanggal_pesan = date("Y-m-d");
|
||||||
|
$tanggal_berangkat = $_POST['tanggal_berangkat'];
|
||||||
|
$status_penjemputan = 'active';
|
||||||
|
$harga = $_POST['harga'];
|
||||||
|
// $lat_jemput = $_POST['lat_jemput'];
|
||||||
|
// $lng_jemput = $_POST['lng_jemput'];
|
||||||
|
$lat_tujuan = $_POST['lat_tujuan'];
|
||||||
|
$lng_tujuan = $_POST['lng_tujuan'];
|
||||||
|
|
||||||
|
$sqlGetJumlahPenumpang = "SELECT jumlah_penumpang FROM daftar_perjalanan WHERE id_perjalanan = '$id_perjalanan'";
|
||||||
|
$result = mysqli_query($db, $sqlGetJumlahPenumpang);
|
||||||
|
$row = mysqli_fetch_assoc($result);
|
||||||
|
$jumlah_penumpang_sekarang = $row['jumlah_penumpang'];
|
||||||
|
|
||||||
|
if ($qty > $jumlah_penumpang_sekarang) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Jumlah penumpang melebihi yang tersedia'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_jumlah_penumpang = $jumlah_penumpang_sekarang - $qty;
|
||||||
|
$sqlUpdateJumlahPenumpang = "UPDATE daftar_perjalanan SET jumlah_penumpang = '$new_jumlah_penumpang' WHERE id_perjalanan = '$id_perjalanan'";
|
||||||
|
if (!mysqli_query($db, $sqlUpdateJumlahPenumpang)) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Gagal mengupdate jumlah penumpang'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert lat-long jemput
|
||||||
|
// $sqlInsertLatLngJemput = "INSERT INTO lokasi (lat, lng) VALUES ('$lat_jemput', '$lng_jemput')";
|
||||||
|
// if (!mysqli_query($db, $sqlInsertLatLngJemput)) {
|
||||||
|
// echo json_encode(array('success' => false, 'error' => 'Gagal menginsert lokasi jemput'));
|
||||||
|
// exit;
|
||||||
|
// }
|
||||||
|
// $id_lokasi_jemput = mysqli_insert_id($db);
|
||||||
|
|
||||||
|
// Insert lat-long tujuan
|
||||||
|
$sqlInsertLatLngTujuan = "INSERT INTO lokasi (lat, lng) VALUES ('$lat_tujuan', '$lng_tujuan')";
|
||||||
|
if (!mysqli_query($db, $sqlInsertLatLngTujuan)) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Gagal menginsert lokasi tujuan'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
$id_lokasi_tujuan = mysqli_insert_id($db);
|
||||||
|
|
||||||
|
// Insert pemesanan dengan latlong_jemput dan latlong_tujuan
|
||||||
|
$sqlInsert = "INSERT INTO pemesanan (id_user, id_perjalanan, order_id, qty, alamat_jemput, alamat_tujuan, waktu_jemput, status, tanggal_pesan, tanggal_berangkat, harga, status_penjemputan, latlong_tujuan)
|
||||||
|
VALUES ('$id_user', '$id_perjalanan', '$order_id', '$qty', '$alamat_jemput', '$alamat_tujuan', '$waktu_jemput', '$status', '$tanggal_pesan', '$tanggal_berangkat', '$harga', '$status_penjemputan', '$id_lokasi_tujuan')";
|
||||||
|
if (mysqli_query($db, $sqlInsert)) {
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Failed to insert pemesanan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
$nama_lengkap = $_POST['nama_lengkap'];
|
||||||
|
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$notelp = $_POST['notelp'];
|
||||||
|
$alamat = $_POST['alamat'];
|
||||||
|
$nik = $_POST['nik'];
|
||||||
|
|
||||||
|
$sqlCheckEmail = "SELECT id_user FROM user WHERE email = '$email'";
|
||||||
|
$resultCheckEmail = $db->query($sqlCheckEmail);
|
||||||
|
|
||||||
|
if ($resultCheckEmail && $resultCheckEmail->num_rows > 0) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Email sudah terdaftar'));
|
||||||
|
} else {
|
||||||
|
$sqlRole = "SELECT id_role FROM role WHERE role = 'pelanggan'";
|
||||||
|
$resultRole = $db->query($sqlRole);
|
||||||
|
|
||||||
|
if ($resultRole && $resultRole->num_rows > 0) {
|
||||||
|
$row = $resultRole->fetch_assoc();
|
||||||
|
$role_id = $row['id_role'];
|
||||||
|
|
||||||
|
$sqlInsert = "INSERT INTO user SET nama_lengkap = '$nama_lengkap', id_role = '$role_id', password = '$password', email = '$email', alamat = '$alamat', notelp = '$notelp', nik = '$nik'";
|
||||||
|
$resultInsert = $db->query($sqlInsert);
|
||||||
|
|
||||||
|
if ($resultInsert) {
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Failed to insert user'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Failed to fetch role_id'));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
$nama_lengkap = $_POST['nama_lengkap'];
|
||||||
|
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
|
||||||
|
$username = $_POST['username'];
|
||||||
|
$no_SIM = $_POST['no_SIM'];
|
||||||
|
$notelp = $_POST['notelp'];
|
||||||
|
$alamat = $_POST['alamat'];
|
||||||
|
$status = "non_active";
|
||||||
|
|
||||||
|
$sqlCheckUsername = "SELECT id_sopir FROM sopir WHERE username = '$username'";
|
||||||
|
$resultCheckUsername = $db->query($sqlCheckUsername);
|
||||||
|
|
||||||
|
if ($resultCheckUsername && $resultCheckUsername->num_rows > 0) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Username sudah terdaftar'));
|
||||||
|
} else {
|
||||||
|
$sqlInsert = "INSERT INTO sopir (nama_lengkap, username, password, no_SIM, alamat, notelp, status) VALUES ('$nama_lengkap', '$username', '$password', '$no_SIM', '$alamat', '$notelp', '$status')";
|
||||||
|
$resultInsert = $db->query($sqlInsert);
|
||||||
|
|
||||||
|
if ($resultInsert) {
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Gagal menyimpan data'));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use PHPMailer\PHPMailer\PHPMailer;
|
||||||
|
use PHPMailer\PHPMailer\SMTP;
|
||||||
|
use PHPMailer\PHPMailer\Exception;
|
||||||
|
|
||||||
|
require "../vendor/autoload.php";
|
||||||
|
|
||||||
|
if (!empty($_POST['email'])) {
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
$email = $_POST['email'];
|
||||||
|
if ($db) {
|
||||||
|
try {
|
||||||
|
$otp = random_int(100000, 999999);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$otp = rand(100000, 999999);
|
||||||
|
}
|
||||||
|
$sql = "update sopir set reset_password_otp = '" . $otp . "' , password_created_at = '" . date('Y-m-d H:i:s') . "' where email = '" . $email . "'";
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
if (mysqli_affected_rows($db)) {
|
||||||
|
$mail = new PHPMailer(true);
|
||||||
|
try {
|
||||||
|
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
|
||||||
|
$mail->isSMTP();
|
||||||
|
$mail->Host = 'smtp.gmail.com';
|
||||||
|
$mail->SMTPAuth = true;
|
||||||
|
$mail->Username = 'karnando1994@gmail.com';
|
||||||
|
$mail->Password = 'rktz hnyc ykyr gbzh';
|
||||||
|
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
|
||||||
|
$mail->Port = 465;
|
||||||
|
|
||||||
|
//Recipients
|
||||||
|
$mail->setFrom('from@example.com', 'PETTA EXPRESS');
|
||||||
|
$mail->addAddress($email);
|
||||||
|
$mail->addAddress('ellen@example.com');
|
||||||
|
$mail->addReplyTo('info@example.com', 'Information');
|
||||||
|
|
||||||
|
//Content
|
||||||
|
$mail->isHTML(true);
|
||||||
|
$mail->Subject = 'Reset Password';
|
||||||
|
$mail->Body = 'Your Otp to reset Password is [' . $otp . ']';
|
||||||
|
$mail->AltBody = 'Reset password to access codes easy application';
|
||||||
|
|
||||||
|
if ($mail->send())
|
||||||
|
echo 'Message has been sent';
|
||||||
|
else echo 'Failed to send otp';
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
|
||||||
|
}
|
||||||
|
} else echo 'reset password failed';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "db conn failed";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "All fields is required";
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use PHPMailer\PHPMailer\PHPMailer;
|
||||||
|
use PHPMailer\PHPMailer\SMTP;
|
||||||
|
use PHPMailer\PHPMailer\Exception;
|
||||||
|
|
||||||
|
require "../vendor/autoload.php";
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
// if (!empty($_POST['email'])) {
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
$email = $_POST['email'];
|
||||||
|
|
||||||
|
if ($db) {
|
||||||
|
// Check email in the 'user' table
|
||||||
|
$query = "SELECT * FROM user WHERE email = '" . mysqli_real_escape_string($db, $email) . "'";
|
||||||
|
$resultUser = mysqli_query($db, $query);
|
||||||
|
|
||||||
|
if (mysqli_num_rows($resultUser) > 0) {
|
||||||
|
$table = 'user';
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Email not found'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$otp = random_int(100000, 999999);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$otp = rand(100000, 999999);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "UPDATE $table SET reset_password_otp = '" . $otp . "', password_created_at = '" . date('Y-m-d H:i:s') . "' WHERE email = '" . mysqli_real_escape_string($db, $email) . "'";
|
||||||
|
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
if (mysqli_affected_rows($db)) {
|
||||||
|
$mail = new PHPMailer();
|
||||||
|
try {
|
||||||
|
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
|
||||||
|
|
||||||
|
$mail->isSMTP();
|
||||||
|
$mail->Host = "smtp.example.com";
|
||||||
|
$mail->Port = 465;
|
||||||
|
$mail->SMTPAuth = true;
|
||||||
|
$mail->Username = 'suketkepuharjo@gmail.com';
|
||||||
|
$mail->Password = 'hske pghu dkmy fwpj';
|
||||||
|
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
|
||||||
|
// $mail->Port = 25;
|
||||||
|
|
||||||
|
//Recipients
|
||||||
|
$mail->setFrom('from@example.com', 'PETTA EXPRESS');
|
||||||
|
$mail->addAddress($email);
|
||||||
|
$mail->addReplyTo('info@example.com', 'Information');
|
||||||
|
|
||||||
|
//Content
|
||||||
|
$mail->isHTML(true);
|
||||||
|
$mail->Subject = 'Reset Password';
|
||||||
|
$mail->Body = 'Your OTP to reset Password is [' . $otp . ']';
|
||||||
|
$mail->AltBody = 'Reset password to access codes easy application';
|
||||||
|
|
||||||
|
if ($mail->send()) {
|
||||||
|
echo json_encode(array('success' => true, 'message' => 'Email sent successfully'));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Failed to send OTP'));
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Message could not be sent. Mailer Error: ' . $mail->ErrorInfo));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Reset password failed'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'DB connection failed'));
|
||||||
|
}
|
||||||
|
// } else {
|
||||||
|
// echo json_encode(array('success' => false, 'message' => 'All fields are required'));
|
||||||
|
// }
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$kota_asal = $_GET['kota_asal'];
|
||||||
|
$kota_tujuan = $_GET['kota_tujuan'];
|
||||||
|
$tanggal = $_GET['tanggal'];
|
||||||
|
|
||||||
|
// Hitung tanggal 7 hari ke depan dari tanggal yang diberikan
|
||||||
|
$tanggal_hingga = date('Y-m-d', strtotime($tanggal . ' +7 days'));
|
||||||
|
|
||||||
|
// Kueri untuk memilih perjalanan yang memiliki tanggal di antara tanggal yang diberikan dan 7 hari ke depan
|
||||||
|
$query = "SELECT * FROM daftar_perjalanan WHERE
|
||||||
|
kota_asal = '$kota_asal' AND
|
||||||
|
kota_tujuan = '$kota_tujuan' AND
|
||||||
|
tanggal BETWEEN '$tanggal' AND '$tanggal_hingga'";
|
||||||
|
|
||||||
|
$result = mysqli_query($db, $query);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
$perjalanan = array();
|
||||||
|
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
if (
|
||||||
|
$row['tanggal'] > date('Y-m-d') ||
|
||||||
|
($row['tanggal'] == date('Y-m-d') && strtotime($row['waktu_keberangkatan']) > strtotime(date('H:i:s')))
|
||||||
|
) {
|
||||||
|
$perjalanan[] = $row;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($perjalanan)) {
|
||||||
|
echo json_encode(array('message' => 'success', 'data' => $perjalanan));
|
||||||
|
} else {
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Tidak ada jadwal perjalanan'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$id_user = $_GET['id_user'];
|
||||||
|
|
||||||
|
$sql = "SELECT p.id_pemesanan, p.id_user, p.id_perjalanan, p.order_id, p.alamat_jemput, p.alamat_tujuan, p.waktu_jemput,p.qty, p.status AS pemesanan_status, p.tanggal_pesan, p.tanggal_berangkat, p.harga, dp.kota_asal, dp.kota_tujuan, dp.tanggal, dp.waktu_keberangkatan
|
||||||
|
, p.status_penjemputan, P.status_antar
|
||||||
|
FROM pemesanan p
|
||||||
|
JOIN daftar_perjalanan dp ON p.id_perjalanan = dp.id_perjalanan
|
||||||
|
WHERE p.id_user = '$id_user'
|
||||||
|
ORDER BY p.id_pemesanan DESC";
|
||||||
|
|
||||||
|
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
|
||||||
|
if (!$result) {
|
||||||
|
die("Error: " . $sql . "<br>" . mysqli_error($db));
|
||||||
|
}
|
||||||
|
|
||||||
|
$pemesanan_list = array();
|
||||||
|
|
||||||
|
while ($row = mysqli_fetch_assoc($result)) {
|
||||||
|
$pemesanan_list[] = $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo json_encode(array('message' => 'success', 'data' => $pemesanan_list));
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Terima input id_sopir dan id_perjalanan
|
||||||
|
$id_pemesanan = $_POST['id_pemesanan'];
|
||||||
|
$status = 'non_active';
|
||||||
|
|
||||||
|
// Buat query SQL untuk mengupdate status di tabel daftar_perjalanan
|
||||||
|
$sql = "UPDATE pemesanan
|
||||||
|
SET status_antar = '$status'
|
||||||
|
WHERE id_pemesanan = '$id_pemesanan'";
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
// Jika update berhasil, kirimkan response sukses
|
||||||
|
echo json_encode(array('message' => 'Status berhasil diupdate'));
|
||||||
|
} else {
|
||||||
|
// Jika update gagal, kirimkan response error
|
||||||
|
echo json_encode(array('message' => 'Gagal mengupdate status'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tutup koneksi database
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
// Mendapatkan data dari body permintaan (request)
|
||||||
|
|
||||||
|
// Pastikan data diterima dengan benar
|
||||||
|
$id_sopir = $_POST['id_sopir'];
|
||||||
|
$nama_lengkap = $_POST['nama_lengkap'];
|
||||||
|
$notelp = $_POST['notelp'];
|
||||||
|
$username = $_POST['username'];
|
||||||
|
$alamat = $_POST['alamat'];
|
||||||
|
$no_SIM = $_POST['no_SIM'];
|
||||||
|
|
||||||
|
// Periksa keberadaan id_sopir dalam tabel user
|
||||||
|
$check_query = "SELECT * FROM sopir WHERE id_sopir = '" . $id_sopir . "'";
|
||||||
|
$check_result = mysqli_query($db, $check_query);
|
||||||
|
|
||||||
|
if ($check_result->num_rows == 1) {
|
||||||
|
// id_sopir valid, lakukan pembaruan data
|
||||||
|
$update_query = "UPDATE sopir SET
|
||||||
|
nama_lengkap = '" . $nama_lengkap . "',
|
||||||
|
notelp = '" . $notelp . "',
|
||||||
|
username = '" . $username . "',
|
||||||
|
alamat = '" . $alamat . "',
|
||||||
|
no_SIM = '" . $no_SIM . "'
|
||||||
|
WHERE id_sopir = '" . $id_sopir . "'";
|
||||||
|
$update_result = mysqli_query($db, $update_query);
|
||||||
|
|
||||||
|
if ($update_result) {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'message' => "Data pengguna berhasil diperbarui"
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Gagal memperbarui data pengguna"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Token tidak valid"
|
||||||
|
]);
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Terima input id_sopir dan id_perjalanan
|
||||||
|
$id_pemesanan = $_POST['id_pemesanan'];
|
||||||
|
$status = 'non_active';
|
||||||
|
|
||||||
|
// Buat query SQL untuk mengupdate status di tabel daftar_perjalanan
|
||||||
|
$sql = "UPDATE pemesanan
|
||||||
|
SET status_penjemputan = '$status'
|
||||||
|
WHERE id_pemesanan = '$id_pemesanan'";
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
// Jika update berhasil, kirimkan response sukses
|
||||||
|
echo json_encode(array('message' => 'Status berhasil diupdate'));
|
||||||
|
} else {
|
||||||
|
// Jika update gagal, kirimkan response error
|
||||||
|
echo json_encode(array('message' => 'Gagal mengupdate status'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tutup koneksi database
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
// Mendapatkan data dari body permintaan (request)
|
||||||
|
|
||||||
|
// Pastikan data diterima dengan benar
|
||||||
|
$token = $_POST['token'];
|
||||||
|
$nama_lengkap = $_POST['nama_lengkap'];
|
||||||
|
$notelp = $_POST['notelp'];
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$alamat = $_POST['alamat'];
|
||||||
|
$nik = $_POST['nik'];
|
||||||
|
|
||||||
|
// Periksa keberadaan token dalam tabel user
|
||||||
|
$check_query = "SELECT * FROM user WHERE token = '" . $token . "'";
|
||||||
|
$check_result = mysqli_query($db, $check_query);
|
||||||
|
|
||||||
|
if ($check_result->num_rows == 1) {
|
||||||
|
// Token valid, lakukan pembaruan data
|
||||||
|
$update_query = "UPDATE user SET
|
||||||
|
nama_lengkap = '" . $nama_lengkap . "',
|
||||||
|
notelp = '" . $notelp . "',
|
||||||
|
email = '" . $email . "',
|
||||||
|
nik = '" . $nik . "',
|
||||||
|
alamat = '" . $alamat . "'
|
||||||
|
WHERE token = '" . $token . "'";
|
||||||
|
$update_result = mysqli_query($db, $update_query);
|
||||||
|
|
||||||
|
if ($update_result) {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => true,
|
||||||
|
'message' => "Data pengguna berhasil diperbarui"
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Gagal memperbarui data pengguna"
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode([
|
||||||
|
'success' => false,
|
||||||
|
'message' => "Token tidak valid"
|
||||||
|
]);
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
$order_id = $_POST['order_id'];
|
||||||
|
$status = $_POST['status'];
|
||||||
|
|
||||||
|
$sqlUpdateStatus = "UPDATE pemesanan SET status = '$status' WHERE order_id = '$order_id'";
|
||||||
|
if (!mysqli_query($db, $sqlUpdateStatus)) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Failed to update status'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($status == 'Gagal') {
|
||||||
|
$sqlGetPemesanan = "SELECT * FROM pemesanan WHERE order_id = '$order_id'";
|
||||||
|
$result = mysqli_query($db, $sqlGetPemesanan);
|
||||||
|
$row = mysqli_fetch_assoc($result);
|
||||||
|
|
||||||
|
$qty = $row['qty'];
|
||||||
|
$id_perjalanan = $row['id_perjalanan'];
|
||||||
|
|
||||||
|
$sqlGetJumlahPenumpang = "SELECT jumlah_penumpang FROM daftar_perjalanan WHERE id_perjalanan = '$id_perjalanan'";
|
||||||
|
$result = mysqli_query($db, $sqlGetJumlahPenumpang);
|
||||||
|
$row = mysqli_fetch_assoc($result);
|
||||||
|
$jumlah_penumpang_sekarang = $row['jumlah_penumpang'];
|
||||||
|
|
||||||
|
|
||||||
|
$new_jumlah_penumpang = $jumlah_penumpang_sekarang + $qty;
|
||||||
|
$sqlUpdateJumlahPenumpang = "UPDATE daftar_perjalanan SET jumlah_penumpang = '$new_jumlah_penumpang' WHERE id_perjalanan = '$id_perjalanan'";
|
||||||
|
if (!mysqli_query($db, $sqlUpdateJumlahPenumpang)) {
|
||||||
|
echo json_encode(array('success' => false, 'error' => 'Gagal mengupdate jumlah penumpang'));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo json_encode(array('success' => true));
|
||||||
|
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Koneksi ke database
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
|
||||||
|
if (!$db) {
|
||||||
|
die("Koneksi gagal: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Terima input id_sopir dan id_perjalanan
|
||||||
|
$id_sopir = $_POST['id_sopir'];
|
||||||
|
$id_perjalanan = $_POST['id_perjalanan'];
|
||||||
|
$status = $_POST['status']; // Status baru yang akan diupdate
|
||||||
|
|
||||||
|
// Buat query SQL untuk mengupdate status di tabel daftar_perjalanan
|
||||||
|
$sql = "UPDATE daftar_perjalanan
|
||||||
|
SET status = '$status'
|
||||||
|
WHERE id_sopir = '$id_sopir' AND id_perjalanan = '$id_perjalanan'";
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
if (mysqli_query($db, $sql)) {
|
||||||
|
// Jika update berhasil, kirimkan response sukses
|
||||||
|
echo json_encode(array('message' => 'Status berhasil diupdate'));
|
||||||
|
} else {
|
||||||
|
// Jika update gagal, kirimkan response error
|
||||||
|
echo json_encode(array('message' => 'Gagal mengupdate status'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tutup koneksi database
|
||||||
|
mysqli_close($db);
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Database connection
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
if (!$db) {
|
||||||
|
die("Connection failed: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to verify OTP and email
|
||||||
|
function verifyOTP($email, $otp)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
// Check if the OTP is valid for the given email
|
||||||
|
$sql = "SELECT * FROM sopir WHERE email = '$email' AND reset_password_otp = '$otp'";
|
||||||
|
$result = mysqli_query($db, $sql);
|
||||||
|
if ($result && mysqli_num_rows($result) > 0) {
|
||||||
|
return true; // OTP verified successfully
|
||||||
|
} else {
|
||||||
|
return false; // Invalid OTP for the given email
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// API endpoint to verify OTP and email
|
||||||
|
if (!empty($_POST['email']) && !empty($_POST['otp'])) {
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$otp = $_POST['otp'];
|
||||||
|
|
||||||
|
// Verify OTP and email
|
||||||
|
$otpVerified = verifyOTP($email, $otp);
|
||||||
|
|
||||||
|
if ($otpVerified) {
|
||||||
|
echo "OTP verified successfully";
|
||||||
|
} else {
|
||||||
|
echo "Invalid OTP for the given email";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "Email and OTP are required";
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
// Database connection
|
||||||
|
$db = mysqli_connect('localhost', 'root', '', 'travelapps');
|
||||||
|
if (!$db) {
|
||||||
|
die("Connection failed: " . mysqli_connect_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to verify OTP and email
|
||||||
|
function verifyOTP($email, $otp)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
// Check if the OTP is valid for the given email in 'user' table
|
||||||
|
$sqlUser = "SELECT * FROM user WHERE email = '" . mysqli_real_escape_string($db, $email) . "' AND reset_password_otp = '" . mysqli_real_escape_string($db, $otp) . "'";
|
||||||
|
$resultUser = mysqli_query($db, $sqlUser);
|
||||||
|
|
||||||
|
if ($resultUser && mysqli_num_rows($resultUser) > 0) {
|
||||||
|
return true; // OTP verified successfully in 'user' table
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the OTP is valid for the given email in 'sopir' table
|
||||||
|
$sqlSopir = "SELECT * FROM sopir WHERE email = '" . mysqli_real_escape_string($db, $email) . "' AND reset_password_otp = '" . mysqli_real_escape_string($db, $otp) . "'";
|
||||||
|
$resultSopir = mysqli_query($db, $sqlSopir);
|
||||||
|
|
||||||
|
if ($resultSopir && mysqli_num_rows($resultSopir) > 0) {
|
||||||
|
return true; // OTP verified successfully in 'sopir' table
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // Invalid OTP for the given email in both tables
|
||||||
|
}
|
||||||
|
|
||||||
|
// API endpoint to verify OTP and email
|
||||||
|
if (!empty($_POST['email']) && !empty($_POST['otp'])) {
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$otp = $_POST['otp'];
|
||||||
|
|
||||||
|
// Verify OTP and email
|
||||||
|
$otpVerified = verifyOTP($email, $otp);
|
||||||
|
|
||||||
|
if ($otpVerified) {
|
||||||
|
// echo "OTP verified successfully";
|
||||||
|
echo json_encode(array('success' => true, 'message' => 'OTP verified successfully'));
|
||||||
|
} else {
|
||||||
|
// echo "Invalid OTP for the given email";
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Invalid OTP for the given email'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// echo "Email and OTP are required";
|
||||||
|
echo json_encode(array('success' => false, 'message' => 'Email and OTP are required'));
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"require": {
|
||||||
|
"phpmailer/phpmailer": "^6.9"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"content-hash": "baf0b1b659e688a64051c5ee9742a77e",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "phpmailer/phpmailer",
|
||||||
|
"version": "v6.9.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/PHPMailer/PHPMailer.git",
|
||||||
|
"reference": "039de174cd9c17a8389754d3b877a2ed22743e18"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/039de174cd9c17a8389754d3b877a2ed22743e18",
|
||||||
|
"reference": "039de174cd9c17a8389754d3b877a2ed22743e18",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"ext-ctype": "*",
|
||||||
|
"ext-filter": "*",
|
||||||
|
"ext-hash": "*",
|
||||||
|
"php": ">=5.5.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
|
||||||
|
"doctrine/annotations": "^1.2.6 || ^1.13.3",
|
||||||
|
"php-parallel-lint/php-console-highlighter": "^1.0.0",
|
||||||
|
"php-parallel-lint/php-parallel-lint": "^1.3.2",
|
||||||
|
"phpcompatibility/php-compatibility": "^9.3.5",
|
||||||
|
"roave/security-advisories": "dev-latest",
|
||||||
|
"squizlabs/php_codesniffer": "^3.7.2",
|
||||||
|
"yoast/phpunit-polyfills": "^1.0.4"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication",
|
||||||
|
"ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses",
|
||||||
|
"ext-openssl": "Needed for secure SMTP sending and DKIM signing",
|
||||||
|
"greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication",
|
||||||
|
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
|
||||||
|
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
|
||||||
|
"psr/log": "For optional PSR-3 debug logging",
|
||||||
|
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)",
|
||||||
|
"thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"PHPMailer\\PHPMailer\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"LGPL-2.1-only"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marcus Bointon",
|
||||||
|
"email": "phpmailer@synchromedia.co.uk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jim Jagielski",
|
||||||
|
"email": "jimjag@gmail.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Andy Prevost",
|
||||||
|
"email": "codeworxtech@users.sourceforge.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Brent R. Matzelle"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/PHPMailer/PHPMailer/issues",
|
||||||
|
"source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.1"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/Synchro",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2023-11-25T22:23:28+00:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": [],
|
||||||
|
"plugin-api-version": "2.3.0"
|
||||||
|
}
|
|
@ -0,0 +1,214 @@
|
||||||
|
|
||||||
|
|
||||||
|
/* config.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--baseColor: #606468;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* helpers/align.css */
|
||||||
|
|
||||||
|
.align {
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
inline-size: 90%;
|
||||||
|
margin-inline: auto;
|
||||||
|
max-inline-size: 20rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* helpers/hidden.css */
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
border: 0;
|
||||||
|
clip: rect(0 0 0 0);
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* helpers/icon.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--iconFill: var(--baseColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
.icons {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
block-size: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
fill: var(--iconFill);
|
||||||
|
inline-size: 1em;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* layout/base.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--htmlFontSize: 100%;
|
||||||
|
|
||||||
|
--bodyBackgroundColor: #2c3338;
|
||||||
|
--bodyColor: var(--baseColor);
|
||||||
|
--bodyFontFamily: "Open Sans";
|
||||||
|
--bodyFontFamilyFallback: sans-serif;
|
||||||
|
--bodyFontSize: 0.875rem;
|
||||||
|
--bodyFontWeight: 400;
|
||||||
|
--bodyLineHeight: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
box-sizing: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
font-size: var(--htmlFontSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: var(--bodyBackgroundColor);
|
||||||
|
color: var(--bodyColor);
|
||||||
|
font-family: var(--bodyFontFamily), var(--bodyFontFamilyFallback);
|
||||||
|
font-size: var(--bodyFontSize);
|
||||||
|
font-weight: var(--bodyFontWeight);
|
||||||
|
line-height: var(--bodyLineHeight);
|
||||||
|
margin: 0;
|
||||||
|
min-block-size: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* modules/anchor.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--anchorColor: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--anchorColor);
|
||||||
|
outline: 0;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:focus,
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* modules/form.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--formGap: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
background-image: none;
|
||||||
|
border: 0;
|
||||||
|
color: inherit;
|
||||||
|
font: inherit;
|
||||||
|
margin: 0;
|
||||||
|
outline: 0;
|
||||||
|
padding: 0;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="submit"] {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
display: grid;
|
||||||
|
gap: var(--formGap);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form input[type="password"],
|
||||||
|
.form input[type="text"],
|
||||||
|
.form input[type="submit"] {
|
||||||
|
inline-size: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form__field {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form__input {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* modules/login.css */
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--loginBorderRadus: 0.25rem;
|
||||||
|
--loginColor: #eee;
|
||||||
|
|
||||||
|
--loginInputBackgroundColor: #3b4148;
|
||||||
|
--loginInputHoverBackgroundColor: #434a52;
|
||||||
|
|
||||||
|
--loginLabelBackgroundColor: #363b41;
|
||||||
|
|
||||||
|
--loginSubmitBackgroundColor: #ea4c88;
|
||||||
|
--loginSubmitColor: #eee;
|
||||||
|
--loginSubmitHoverBackgroundColor: #d44179;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login {
|
||||||
|
color: var(--loginColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
.login label,
|
||||||
|
.login input[type="text"],
|
||||||
|
.login input[type="password"],
|
||||||
|
.login input[type="submit"] {
|
||||||
|
border-radius: var(--loginBorderRadus);
|
||||||
|
padding: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login label {
|
||||||
|
background-color: var(--loginLabelBackgroundColor);
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
padding-inline: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login input[type="password"],
|
||||||
|
.login input[type="text"] {
|
||||||
|
background-color: var(--loginInputBackgroundColor);
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login input[type="password"]:focus,
|
||||||
|
.login input[type="password"]:hover,
|
||||||
|
.login input[type="text"]:focus,
|
||||||
|
.login input[type="text"]:hover {
|
||||||
|
background-color: var(--loginInputHoverBackgroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
.login input[type="submit"] {
|
||||||
|
background-color: var(--loginSubmitBackgroundColor);
|
||||||
|
color: var(--loginSubmitColor);
|
||||||
|
font-weight: 700;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login input[type="submit"]:focus,
|
||||||
|
.login input[type="submit"]:hover {
|
||||||
|
background-color: var(--loginSubmitHoverBackgroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* modules/text.css */
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-block: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text--center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,533 @@
|
||||||
|
<?php
|
||||||
|
include "koneksi.php";
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Periksa apakah pengguna telah login
|
||||||
|
if (!isset($_SESSION["username"])) {
|
||||||
|
header("Location: login.php"); // Jika tidak ada sesi username, redirect ke halaman login
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil username dari sesi
|
||||||
|
$username = $_SESSION["username"];
|
||||||
|
|
||||||
|
// Mendapatkan tanggal hari ini dalam format Y-m-d
|
||||||
|
$today = date("Y-m-d");
|
||||||
|
|
||||||
|
// Query untuk mendapatkan data pesanan hari ini
|
||||||
|
$query = "SELECT pemesanan.*, user.nama_lengkap, daftar_perjalanan.kota_asal, daftar_perjalanan.kota_tujuan
|
||||||
|
FROM pemesanan
|
||||||
|
JOIN user ON pemesanan.id_user = user.id_user
|
||||||
|
JOIN daftar_perjalanan ON pemesanan.id_perjalanan = daftar_perjalanan.id_perjalanan WHERE DATE(tanggal_pesan) = '$today'";
|
||||||
|
$result = $conn->query($query);
|
||||||
|
|
||||||
|
$querySopir = "SELECT * FROM sopir";
|
||||||
|
|
||||||
|
$res = $conn->query($querySopir);
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Star Admin2 </title>
|
||||||
|
<!-- plugins:css -->
|
||||||
|
<link rel="stylesheet" href="vendors/feather/feather.css">
|
||||||
|
<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">
|
||||||
|
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/typicons/typicons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/simple-line-icons/css/simple-line-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin css for this page -->
|
||||||
|
<link rel="stylesheet" href="js/select.dataTables.min.css">
|
||||||
|
<!-- End plugin css for this page -->
|
||||||
|
<!-- inject:css -->
|
||||||
|
<link rel="stylesheet" href="css/vertical-layout-light/style.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:partials/_navbar.html -->
|
||||||
|
<nav class="navbar default-layout col-lg-12 col-12 p-0 fixed-top d-flex align-items-top flex-row">
|
||||||
|
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-start">
|
||||||
|
<div class="me-3">
|
||||||
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-bs-toggle="minimize">
|
||||||
|
<span class="icon-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="navbar-brand brand-logo" href="#">
|
||||||
|
<strong>PettaExpress</strong>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-brand brand-logo-mini" href="index.html">
|
||||||
|
<img src="img/logo-mini.svg" alt="logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu-wrapper d-flex align-items-top">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item font-weight-semibold d-none d-lg-block ms-0">
|
||||||
|
<h1 class="welcome-text">Semangat Kerja, <span class="text-black fw-bold"><?php echo $username ?></span></h1>
|
||||||
|
<h3 class="welcome-sub-text">PETTA TOUR & TRAVEL EXPRESS BANYUWANGI </h3>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item d-none d-lg-block">
|
||||||
|
<div id="datepicker-popup" class="input-group date datepicker navbar-date-picker">
|
||||||
|
<span class="input-group-addon input-group-prepend border-right">
|
||||||
|
<span class="icon-calendar input-group-text calendar-icon"></span>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown d-none d-lg-block user-dropdown">
|
||||||
|
<a class="nav-link" id="UserDropdown" href="#" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="img-xs rounded-circle profile-initials" id="profileInitials"></div>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="UserDropdown">
|
||||||
|
<a class="dropdown-item dropdown-header" href="#" data-bs-toggle="modal" data-bs-target="#logoutModal">
|
||||||
|
<i class="dropdown-item-icon mdi mdi-power text-primary me-2"></i>Logout
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-bs-toggle="offcanvas">
|
||||||
|
<span class="mdi mdi-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="container-fluid page-body-wrapper">
|
||||||
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="dashboard.php">
|
||||||
|
<i class="mdi mdi-grid-large menu-icon"></i>
|
||||||
|
<span class="menu-title">Dashboard</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Pengguna</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#ui-basic" aria-expanded="false" aria-controls="ui-basic">
|
||||||
|
<i class="menu-icon mdi mdi-floor-plan"></i>
|
||||||
|
<span class="menu-title">Pengguna</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="ui-basic">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="pelanggan.php">Pelanggan</a></li>
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="driver.php">Sopir</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Semua Data</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#form-elements" aria-expanded="false" aria-controls="form-elements">
|
||||||
|
<i class="menu-icon mdi mdi-card-text-outline"></i>
|
||||||
|
<span class="menu-title">Pemesanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="form-elements">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="pemesanan.php">Data Pemesanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#charts" aria-expanded="false" aria-controls="charts">
|
||||||
|
<i class="menu-icon mdi mdi-chart-line"></i>
|
||||||
|
<span class="menu-title">Data Perjalanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="charts">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="jurusan.php">Daftar Perjalanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="mobil.php">
|
||||||
|
<i class="menu-icon mdi mdi-table"></i>
|
||||||
|
<span class="menu-title">Mobil</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="main-panel">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<?php
|
||||||
|
$queryPelanggan = "SELECT COUNT(*) AS total_pelanggan FROM user WHERE id_role = '3'";
|
||||||
|
$resultPelanggan = $conn->query($queryPelanggan);
|
||||||
|
$totalPelanggan = ($resultPelanggan->num_rows > 0) ? $resultPelanggan->fetch_assoc()['total_pelanggan'] : 0;
|
||||||
|
|
||||||
|
$queryPesanan = "SELECT COUNT(*) AS total_pesanan FROM pemesanan";
|
||||||
|
$resultPesanan = $conn->query($queryPesanan);
|
||||||
|
$totalPesanan = ($resultPesanan->num_rows > 0) ? $resultPesanan->fetch_assoc()['total_pesanan'] : 0;
|
||||||
|
|
||||||
|
$queryPendapatan = "SELECT SUM(harga) AS total_pendapatan FROM pemesanan";
|
||||||
|
$resultPendapatan = $conn->query($queryPendapatan);
|
||||||
|
$totalPendapatan = ($resultPendapatan->num_rows > 0) ? $resultPendapatan->fetch_assoc()['total_pendapatan'] : 0;
|
||||||
|
|
||||||
|
$formattedHarga = number_format($totalPendapatan, 2, ',', '.');
|
||||||
|
?>
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="statistics-details d-flex align-items-center justify-content-between">
|
||||||
|
<div class="card card-rounded p-4 w-100 m-2">
|
||||||
|
<p class="statistics-title">Pelanggan</p>
|
||||||
|
<h3 class="rate-percentage"><?php echo $totalPelanggan; ?></h3>
|
||||||
|
</div>
|
||||||
|
<div class="card card-rounded p-4 w-100 m-2">
|
||||||
|
<p class="statistics-title">Pemesanan</p>
|
||||||
|
<h3 class="rate-percentage"><?php echo $totalPesanan; ?></h3>
|
||||||
|
</div>
|
||||||
|
<div class="card card-rounded p-4 w-100 m-2">
|
||||||
|
<p class="statistics-title">Pendapatan</p>
|
||||||
|
<h3 class="rate-percentage">Rp. <?php echo $formattedHarga ?></h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="home-tab">
|
||||||
|
<div class="tab-content tab-content-basic">
|
||||||
|
<div class="tab-pane fade show active" id="overview" role="tabpanel" aria-labelledby="overview">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 d-flex flex-column">
|
||||||
|
<div class="card card-rounded">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
||||||
|
<div>
|
||||||
|
<h4 class="card-title card-title-dash">Pemesanan Tahun Ini</h4>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3">
|
||||||
|
<canvas id="pemesananReport" width="277" height="150" style="display: block; box-sizing: border-box; height: 150px; width: 277px;"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<!-- Tabel kecil -->
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
<h4 class="card-title">Driver</h4>
|
||||||
|
</div>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nama</th>
|
||||||
|
<th>Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
// Periksa apakah ada data
|
||||||
|
if ($res->num_rows > 0) {
|
||||||
|
// Loop untuk menampilkan data
|
||||||
|
while ($row = $res->fetch_assoc()) {
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td>" . $row["nama_lengkap"] . "</td>";
|
||||||
|
$status = $row["status"];
|
||||||
|
$class = '';
|
||||||
|
|
||||||
|
if ($status == 'active') {
|
||||||
|
$class = 'badge-opacity-success';
|
||||||
|
} elseif ($status == 'non_active') {
|
||||||
|
$class = 'badge-opacity-warning';
|
||||||
|
}
|
||||||
|
echo "<td><div class='badge $class'>$status</div></td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada data
|
||||||
|
echo "<tr><td colspan='9'>Belum Ada Pesanan Hari ini</td></tr>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 grid-margin stretch-card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="d-flex justify-content-between align-items-center">
|
||||||
|
<h4 class="card-title">Pesanan Terbaru</h4>
|
||||||
|
<button type="submit" class="btn btn-primary"><i class="mdi mdi-apps"></i>Selengkapnya</button>
|
||||||
|
</div>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-Hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nama</th>
|
||||||
|
<th>Kota Asal</th>
|
||||||
|
<th>Kota Tujuan</th>
|
||||||
|
<th>Tanggal Keberangkatan</th>
|
||||||
|
<th>Harga</th>
|
||||||
|
<th>Status</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
// Periksa apakah ada data
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
// Loop untuk menampilkan data
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td>" . $row["nama_lengkap"] . "</td>";
|
||||||
|
echo "<td>" . $row["kota_asal"] . "</td>";
|
||||||
|
echo "<td>" . $row["kota_tujuan"] . "</td>";
|
||||||
|
echo "<td>" . $row["tanggal_berangkat"] . "</td>";
|
||||||
|
echo "<td>" . $row["harga"] . "</td>";
|
||||||
|
$status = $row["status"];
|
||||||
|
$class = '';
|
||||||
|
|
||||||
|
if ($status == 'Menunggu') {
|
||||||
|
$class = 'badge-opacity-warning';
|
||||||
|
} elseif ($status == 'Selesai') {
|
||||||
|
$class = 'badge-opacity-success';
|
||||||
|
} elseif ($status == 'Gagal') {
|
||||||
|
$class = 'badge-opacity-danger';
|
||||||
|
}
|
||||||
|
echo "<td><div class='badge $class'>$status</div></td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada data
|
||||||
|
echo "<tr><td colspan='9'>Belum Ada Pesanan Hari ini</td></tr>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal Logout -->
|
||||||
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Apakah Anda yakin ingin logout?
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
||||||
|
<a href="logout.php" class="btn btn-danger">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- content-wrapper ends -->
|
||||||
|
<!-- partial:partials/_footer.html -->
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="d-sm-flex justify-content-center justify-content-sm-between">
|
||||||
|
<span class="float-none float-sm-right d-block mt-1 mt-sm-0 text-center">Copyright © 2021. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- partial -->
|
||||||
|
</div>
|
||||||
|
<!-- main-panel ends -->
|
||||||
|
</div>
|
||||||
|
<!-- page-body-wrapper ends -->
|
||||||
|
</div>
|
||||||
|
<!-- container-scroller -->
|
||||||
|
|
||||||
|
<!-- plugins:js -->
|
||||||
|
<script src="vendors/js/vendor.bundle.base.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin js for this page -->
|
||||||
|
<script src="vendors/chart.js/Chart.min.js"></script>
|
||||||
|
<script src="vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="vendors/progressbar.js/progressbar.min.js"></script>
|
||||||
|
|
||||||
|
<!-- End plugin js for this page -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Mengambil nama pengguna dari sesi PHP
|
||||||
|
fetch('get_username.php')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
var name = data.username; // Sesuaikan dengan struktur data yang diambil dari sesi
|
||||||
|
var initials = getInitials(name);
|
||||||
|
document.getElementById('profileInitials').innerText = initials;
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function getInitials(name) {
|
||||||
|
var names = name.split(' ');
|
||||||
|
var initials = names[0].charAt(0).toUpperCase();
|
||||||
|
if (names.length > 1) {
|
||||||
|
initials += names[names.length - 1].charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
|
return initials;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Inisialisasi modal
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('logoutModal'), {
|
||||||
|
keyboard: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
<?php
|
||||||
|
$thisYear = date('Y');
|
||||||
|
$queryChart = "
|
||||||
|
SELECT
|
||||||
|
months.month_name,
|
||||||
|
COALESCE(pemesanan.total, 0) as total
|
||||||
|
FROM
|
||||||
|
(SELECT 1 as month_num, 'Jan' as month_name
|
||||||
|
UNION ALL SELECT 2, 'Feb'
|
||||||
|
UNION ALL SELECT 3, 'Mar'
|
||||||
|
UNION ALL SELECT 4, 'Apr'
|
||||||
|
UNION ALL SELECT 5, 'May'
|
||||||
|
UNION ALL SELECT 6, 'Jun'
|
||||||
|
UNION ALL SELECT 7, 'Jul'
|
||||||
|
UNION ALL SELECT 8, 'Aug'
|
||||||
|
UNION ALL SELECT 9, 'Sept'
|
||||||
|
UNION ALL SELECT 10, 'Oct'
|
||||||
|
UNION ALL SELECT 11, 'Nov'
|
||||||
|
UNION ALL SELECT 12, 'Dec') as months
|
||||||
|
LEFT JOIN
|
||||||
|
(SELECT
|
||||||
|
MONTH(tanggal_pesan) as month_num,
|
||||||
|
COUNT(harga) as total
|
||||||
|
FROM pemesanan
|
||||||
|
WHERE pemesanan.status = 'Selesai'
|
||||||
|
AND YEAR(tanggal_pesan) = '$thisYear'
|
||||||
|
GROUP BY MONTH(tanggal_pesan)
|
||||||
|
) as pemesanan
|
||||||
|
ON months.month_num = pemesanan.month_num
|
||||||
|
ORDER BY months.month_num;
|
||||||
|
";
|
||||||
|
$result = $conn->query($queryChart);
|
||||||
|
$monthNames = [];
|
||||||
|
$totals = [];
|
||||||
|
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
$monthNames[] = $row['month_name'];
|
||||||
|
$totals[] = $row['total'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$monthNamesJson = json_encode($monthNames);
|
||||||
|
$totalsJson = json_encode($totals);
|
||||||
|
?>
|
||||||
|
if ($("#pemesananReport").length) {
|
||||||
|
var leaveReportChart = document.getElementById("pemesananReport").getContext('2d');
|
||||||
|
var leaveReportData = {
|
||||||
|
labels: <?= $monthNamesJson ?>,
|
||||||
|
datasets: [{
|
||||||
|
label: 'Bulan Ini',
|
||||||
|
data: <?= $totalsJson ?>,
|
||||||
|
backgroundColor: "#52CDFF",
|
||||||
|
borderColor: [
|
||||||
|
'#52CDFF',
|
||||||
|
],
|
||||||
|
borderWidth: 0,
|
||||||
|
fill: true, // 3: no fill
|
||||||
|
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
var leaveReportOptions = {
|
||||||
|
responsive: true,
|
||||||
|
maintainAspectRatio: false,
|
||||||
|
scales: {
|
||||||
|
yAxes: [{
|
||||||
|
gridLines: {
|
||||||
|
display: true,
|
||||||
|
drawBorder: false,
|
||||||
|
color:"rgba(255,255,255,.05)",
|
||||||
|
zeroLineColor: "rgba(255,255,255,.05)",
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
beginAtZero: true,
|
||||||
|
autoSkip: true,
|
||||||
|
maxTicksLimit: 5,
|
||||||
|
fontSize: 10,
|
||||||
|
color:"#6B778C"
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
xAxes: [{
|
||||||
|
barPercentage: 0.5,
|
||||||
|
gridLines: {
|
||||||
|
display: false,
|
||||||
|
drawBorder: false,
|
||||||
|
},
|
||||||
|
ticks: {
|
||||||
|
beginAtZero: false,
|
||||||
|
autoSkip: true,
|
||||||
|
maxTicksLimit: 12,
|
||||||
|
fontSize: 10,
|
||||||
|
color:"#6B778C"
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
legend:false,
|
||||||
|
|
||||||
|
elements: {
|
||||||
|
line: {
|
||||||
|
tension: 0.4,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tooltips: {
|
||||||
|
backgroundColor: 'rgba(31, 59, 179, 1)',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var leaveReport = new Chart(leaveReportChart, {
|
||||||
|
type: 'bar',
|
||||||
|
data: leaveReportData,
|
||||||
|
options: leaveReportOptions
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- inject:js -->
|
||||||
|
<script src="js/off-canvas.js"></script>
|
||||||
|
<script src="js/hoverable-collapse.js"></script>
|
||||||
|
<script src="js/template.js"></script>
|
||||||
|
<script src="js/settings.js"></script>
|
||||||
|
<script src="js/todolist.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Custom js for this page-->
|
||||||
|
<script src="js/jquery.cookie.js" type="text/javascript"></script>
|
||||||
|
<script src="js/dashboard.js"></script>
|
||||||
|
<script src="js/Chart.roundedBarCharts.js"></script>
|
||||||
|
<!-- End custom js for this page-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,406 @@
|
||||||
|
<?php
|
||||||
|
include "koneksi.php";
|
||||||
|
|
||||||
|
// Proses penghapusan data sopir
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
if (isset($_POST["action"]) && $_POST["action"] == "delete" && isset($_POST["id_sopir"])) {
|
||||||
|
$id_sopir = $_POST["id_sopir"];
|
||||||
|
|
||||||
|
// Query DELETE
|
||||||
|
$sql = "DELETE FROM sopir WHERE id_sopir='$id_sopir'";
|
||||||
|
|
||||||
|
// Eksekusi query
|
||||||
|
if ($conn->query($sql) === TRUE) {
|
||||||
|
$isSuccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Periksa apakah pengguna telah login
|
||||||
|
if (!isset($_SESSION["username"])) {
|
||||||
|
header("Location: login.php"); // Jika tidak ada sesi username, redirect ke halaman login
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menampilkan pesan jika ada
|
||||||
|
if (isset($_SESSION['pesan'])) {
|
||||||
|
echo "<p>{$_SESSION['pesan']}</p>";
|
||||||
|
unset($_SESSION['pesan']); // Hapus pesan setelah ditampilkan
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil username dari sesi
|
||||||
|
$username = $_SESSION["username"];
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Star Admin2 </title>
|
||||||
|
<!-- plugins:css -->
|
||||||
|
<link rel="stylesheet" href="vendors/feather/feather.css">
|
||||||
|
<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">
|
||||||
|
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/typicons/typicons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/simple-line-icons/css/simple-line-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin css for this page -->
|
||||||
|
<link rel="stylesheet" href="vendors/datatables.net-bs4/dataTables.bootstrap4.css">
|
||||||
|
<link rel="stylesheet" href="js/select.dataTables.min.css">
|
||||||
|
<!-- End plugin css for this page -->
|
||||||
|
<!-- icon -->
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-xrZ12XNDSm6ZuAu0GzNPgA/0p9LpfbjqLXPde3d/+2I02wcDJG3QeBAA+QvwtuIQreIV9fsAgXtRs2e+1kA+dQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
<!-- inject:css -->
|
||||||
|
<link rel="stylesheet" href="css/vertical-layout-light/style.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:partials/_navbar.html -->
|
||||||
|
<nav class="navbar default-layout col-lg-12 col-12 p-0 fixed-top d-flex align-items-top flex-row">
|
||||||
|
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-start">
|
||||||
|
<div class="me-3">
|
||||||
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-bs-toggle="minimize">
|
||||||
|
<span class="icon-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="navbar-brand brand-logo" href="#">
|
||||||
|
<strong>PettaExpress</strong>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-brand brand-logo-mini" href="index.html">
|
||||||
|
<img src="img/logo-mini.svg" alt="logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu-wrapper d-flex align-items-top">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item font-weight-semibold d-none d-lg-block ms-0">
|
||||||
|
<h1 class="welcome-text">Semangat Kerja, <span class="text-black fw-bold"><?php echo $username ?></span></h1>
|
||||||
|
<h3 class="welcome-sub-text">PETTA TOUR & TRAVEL EXPRESS BANYUWANGI </h3>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item d-none d-lg-block">
|
||||||
|
<div id="datepicker-popup" class="input-group date datepicker navbar-date-picker">
|
||||||
|
<span class="input-group-addon input-group-prepend border-right">
|
||||||
|
<span class="icon-calendar input-group-text calendar-icon"></span>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<form class="search-form" action="#">
|
||||||
|
<i class="icon-search"></i>
|
||||||
|
<input type="search" class="form-control" placeholder="Search Here" title="Search here">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown d-none d-lg-block user-dropdown">
|
||||||
|
<a class="nav-link" id="UserDropdown" href="#" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="img-xs rounded-circle profile-initials" id="profileInitials"></div>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="UserDropdown">
|
||||||
|
<a class="dropdown-item"><i class="dropdown-item-icon mdi mdi-power text-primary me-2"></i>Sign Out</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-bs-toggle="offcanvas">
|
||||||
|
<span class="mdi mdi-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="container-fluid page-body-wrapper">
|
||||||
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="dashboard.php">
|
||||||
|
<i class="mdi mdi-grid-large menu-icon"></i>
|
||||||
|
<span class="menu-title">Dashboard</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Pengguna</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#ui-basic" aria-expanded="false" aria-controls="ui-basic">
|
||||||
|
<i class="menu-icon mdi mdi-floor-plan"></i>
|
||||||
|
<span class="menu-title">Pengguna</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="ui-basic">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="pelanggan.php">Pelanggan</a></li>
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="driver.php">Sopir</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Semua Data</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#form-elements" aria-expanded="false" aria-controls="form-elements">
|
||||||
|
<i class="menu-icon mdi mdi-card-text-outline"></i>
|
||||||
|
<span class="menu-title">Pemesanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="form-elements">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="pemesanan.php">Data Pemesanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#charts" aria-expanded="false" aria-controls="charts">
|
||||||
|
<i class="menu-icon mdi mdi-chart-line"></i>
|
||||||
|
<span class="menu-title">Data Perjalanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="charts">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="jurusan.php">Daftar Perjalanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="mobil.php">
|
||||||
|
<i class="menu-icon mdi mdi-table"></i>
|
||||||
|
<span class="menu-title">Mobil</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="main-panel">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 grid-margin stretch-card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Data Sopir</h4>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-Hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nama Lengkap</th>
|
||||||
|
<th>Username</th>
|
||||||
|
<th>No. SIM</th>
|
||||||
|
<th>No. Telp</th>
|
||||||
|
<th>Alamat</th>
|
||||||
|
<th>Status</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
// Ambil data sopir dari database dan tampilkan
|
||||||
|
// Gantilah ini dengan kueri sesuai struktur tabel dan database Anda
|
||||||
|
$sql = "SELECT * FROM sopir";
|
||||||
|
$result = $conn->query($sql);
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
echo "<tr>";
|
||||||
|
echo "<td>" . $row["nama_lengkap"] . "</td>";
|
||||||
|
echo "<td>" . $row["username"] . "</td>";
|
||||||
|
echo "<td>" . $row["no_SIM"] . "</td>";
|
||||||
|
echo "<td>" . $row["notelp"] . "</td>";
|
||||||
|
echo "<td>" . $row["alamat"] . "</td>";
|
||||||
|
echo "<td>" . $row["status"] . "</td>";
|
||||||
|
echo "<td>";
|
||||||
|
// echo "<button onclick=\"window.location.href='edit-sopir.php?id_sopir=" . $row["id_sopir"] . "'\" class='btn btn-primary'>Edit</button>" . " ";
|
||||||
|
echo "<button class='btn btn-danger' data-bs-toggle='modal' data-bs-target='#hapusModal" . $row['id_sopir'] . "'>Hapus</button>" . " ";
|
||||||
|
// Tombol Konfirmasi Aktifkan
|
||||||
|
if (
|
||||||
|
$row["status"] == "non_active"
|
||||||
|
) {
|
||||||
|
echo "<button onclick=\"tampilkanModalAktifkan('" . $row["id_sopir"] . "')\" class='btn btn-success'>Konfirmasi Aktifkan</button>";
|
||||||
|
} else {
|
||||||
|
echo "<button class='btn btn-success' hidden>Aktif</button>";
|
||||||
|
}
|
||||||
|
echo "</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
|
||||||
|
// Modal Konfirmasi Hapus
|
||||||
|
echo "<div class='modal fade' id='hapusModal" . $row['id_sopir'] . "' tabindex='-1' role='dialog' aria-labelledby='hapusModalLabel' aria-hidden='true'>";
|
||||||
|
echo "<div class='modal-dialog' role='document'>";
|
||||||
|
echo "<div class='modal-content'>";
|
||||||
|
echo "<div class='modal-header'>";
|
||||||
|
echo "<h5 class='modal-title' id='hapusModalLabel'>Konfirmasi Hapus</h5>";
|
||||||
|
echo "<button type='button' class='close' data-bs-dismiss='modal' aria-label='Close'>";
|
||||||
|
echo "<span aria-hidden='true'>×</span>";
|
||||||
|
echo "</button>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "<div class='modal-body'>";
|
||||||
|
echo "Apakah Anda yakin ingin menghapus sopir dengan ID " . $row['id_sopir'] . "?";
|
||||||
|
echo "</div>";
|
||||||
|
echo "<div class='modal-footer'>";
|
||||||
|
echo "<form method='post' action='driver.php'>";
|
||||||
|
echo "<input type='hidden' name='id_sopir' value='" . $row['id_sopir'] . "'>";
|
||||||
|
echo "<button type='button' class='btn btn-secondary' data-bs-dismiss='modal'>Tutup</button>";
|
||||||
|
echo "<button type='submit' class='btn btn-danger' name='action' value='delete'>Hapus</button>";
|
||||||
|
echo "</form>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
//modal aktiv
|
||||||
|
|
||||||
|
echo "<div class='modal fade' id='modalAktifkan" . $row['id_sopir'] . "' tabindex='-1' role='dialog' aria-labelledby='modalAktifkanLabel' aria-hidden='true'>";
|
||||||
|
echo "<div class='modal-dialog' role='document'>";
|
||||||
|
echo "<div class='modal-content'>";
|
||||||
|
echo "<div class='modal-header'>";
|
||||||
|
echo "<h5 class='modal-title' id='modalAktifkanLabel'>Konfirmasi Aktifkan</h5>";
|
||||||
|
echo "<button type='button' class='close' data-dismiss='modal' aria-label='Close'>";
|
||||||
|
echo "<span aria-hidden='true'>×</span>";
|
||||||
|
echo "</button>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "<div class='modal-body'>";
|
||||||
|
echo "Apakah Anda yakin ingin mengaktifkan sopir dengan ID " . $row['id_sopir'] . "?";
|
||||||
|
echo "</div>";
|
||||||
|
echo "<div class='modal-footer'>";
|
||||||
|
echo "<button type='button' class='btn btn-secondary' data-dismiss='modal'>Tutup</button>";
|
||||||
|
echo "<button type='button' class='btn btn-success' onclick='aktifkanSopir(" . $row["id_sopir"] . ")'>Aktifkan</button>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
echo "</div>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "<tr><td colspan='5'>Tidak ada data sopir.</td></tr>";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<!-- Modal konfirmasi hapus -->
|
||||||
|
<div id="modalHapus" class="modal">
|
||||||
|
<div class="modal-content">
|
||||||
|
<span class="close" onclick="tutupModalHapus()">×</span>
|
||||||
|
<p>Apakah Anda yakin ingin menghapus sopir dengan ID <span id="idSopirHapus"></span>?</p>
|
||||||
|
<button onclick="konfirmasiHapus()">Hapus</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal Logout -->
|
||||||
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Apakah Anda yakin ingin logout?
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
||||||
|
<a href="logout.php" class="btn btn-danger">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- content-wrapper ends -->
|
||||||
|
<!-- partial:partials/_footer.html -->
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="d-sm-flex justify-content-center justify-content-sm-between">
|
||||||
|
<span class="float-none float-sm-right d-block mt-1 mt-sm-0 text-center">Copyright © 2021. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- partial -->
|
||||||
|
</div>
|
||||||
|
<!-- main-panel ends -->
|
||||||
|
</div>
|
||||||
|
<!-- page-body-wrapper ends -->
|
||||||
|
</div>
|
||||||
|
<!-- container-scroller -->
|
||||||
|
|
||||||
|
<!-- plugins:js -->
|
||||||
|
<script src="vendors/js/vendor.bundle.base.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin js for this page -->
|
||||||
|
<script src="vendors/chart.js/Chart.min.js"></script>
|
||||||
|
<script src="vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="vendors/progressbar.js/progressbar.min.js"></script>
|
||||||
|
|
||||||
|
<!-- End plugin js for this page -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Mengambil nama pengguna dari sesi PHP
|
||||||
|
fetch('get_username.php')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
var name = data.username; // Sesuaikan dengan struktur data yang diambil dari sesi
|
||||||
|
var initials = getInitials(name);
|
||||||
|
document.getElementById('profileInitials').innerText = initials;
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function getInitials(name) {
|
||||||
|
var names = name.split(' ');
|
||||||
|
var initials = names[0].charAt(0).toUpperCase();
|
||||||
|
if (names.length > 1) {
|
||||||
|
initials += names[names.length - 1].charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
|
return initials;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Fungsi untuk menampilkan modal konfirmasi aktivasi sopir
|
||||||
|
function tampilkanModalAktifkan(idSopir) {
|
||||||
|
$('#modalAktifkan' + idSopir).modal('show');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fungsi untuk mengaktifkan sopir melalui AJAX
|
||||||
|
function aktifkanSopir(idSopir) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: 'proses_aktivasi_sopir.php', // Ganti dengan file PHP yang menangani aktivasi sopir
|
||||||
|
data: {
|
||||||
|
id_sopir: idSopir
|
||||||
|
},
|
||||||
|
success: function(response) {
|
||||||
|
// Tambahkan logika di sini untuk menangani respons dari server setelah aktivasi sopir berhasil
|
||||||
|
console.log(response);
|
||||||
|
// Refresh halaman setelah berhasil mengaktifkan sopir (opsional)
|
||||||
|
location.reload();
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
// Tambahkan logika di sini untuk menangani kesalahan saat melakukan permintaan AJAX
|
||||||
|
console.error(xhr.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Inisialisasi modal
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('logoutModal'), {
|
||||||
|
keyboard: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- inject:js -->
|
||||||
|
<script src="js/off-canvas.js"></script>
|
||||||
|
<script src="js/hoverable-collapse.js"></script>
|
||||||
|
<script src="js/template.js"></script>
|
||||||
|
<script src="js/settings.js"></script>
|
||||||
|
<script src="js/todolist.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Custom js for this page-->
|
||||||
|
<script src="js/jquery.cookie.js" type="text/javascript"></script>
|
||||||
|
<script src="js/dashboard.js"></script>
|
||||||
|
<script src="js/Chart.roundedBarCharts.js"></script>
|
||||||
|
<!-- End custom js for this page-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,340 @@
|
||||||
|
<?php
|
||||||
|
include "koneksi.php";
|
||||||
|
|
||||||
|
// Cek apakah ID sopir disediakan
|
||||||
|
if (isset($_GET['id_mobil'])) {
|
||||||
|
$id_mobil = $_GET['id_mobil'];
|
||||||
|
|
||||||
|
// Query untuk mendapatkan data sopir berdasarkan ID
|
||||||
|
$query = "SELECT * FROM mobil WHERE id_mobil = '$id_mobil'";
|
||||||
|
$result = $conn->query($query);
|
||||||
|
|
||||||
|
// Periksa apakah data ditemukan
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
$nama_mobil = $row['nama_mobil'];
|
||||||
|
$plat = $row['plat'];
|
||||||
|
} else {
|
||||||
|
// Redirect jika data tidak ditemukan
|
||||||
|
header("Location: mobil.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Proses pengeditan data sopir
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$nama_mobil = $_POST["nama_mobil"];
|
||||||
|
$plat = $_POST["plat"];
|
||||||
|
$id_mobil = $_POST["id_mobil"];
|
||||||
|
// Jika tidak ada password baru, gunakan query UPDATE tanpa memperbarui password
|
||||||
|
$sql = "UPDATE mobil SET plat='$plat', nama_mobil='$nama_mobil' WHERE id_mobil='$id_mobil'";
|
||||||
|
// Eksekusi query
|
||||||
|
if ($conn->query($sql) === TRUE) {
|
||||||
|
$isSuccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pastikan koneksi terbuka
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("Connection failed: " . $conn->connect_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Periksa apakah pengguna telah login
|
||||||
|
if (!isset($_SESSION["username"])) {
|
||||||
|
header("Location: login.php"); // Jika tidak ada sesi username, redirect ke halaman login
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil username dari sesi
|
||||||
|
$username = $_SESSION["username"];
|
||||||
|
|
||||||
|
// Redirect to driver.php when click cancel
|
||||||
|
if (isset($_POST['cancel'])) {
|
||||||
|
header('Location: mobil.php');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Star Admin2 </title>
|
||||||
|
<!-- plugins:css -->
|
||||||
|
<link rel="stylesheet" href="vendors/feather/feather.css">
|
||||||
|
<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">
|
||||||
|
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/typicons/typicons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/simple-line-icons/css/simple-line-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin css for this page -->
|
||||||
|
<link rel="stylesheet" href="vendors/datatables.net-bs4/dataTables.bootstrap4.css">
|
||||||
|
<link rel="stylesheet" href="js/select.dataTables.min.css">
|
||||||
|
<!-- End plugin css for this page -->
|
||||||
|
<!-- inject:css -->
|
||||||
|
<link rel="stylesheet" href="css/vertical-layout-light/style.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:partials/_navbar.html -->
|
||||||
|
<nav class="navbar default-layout col-lg-12 col-12 p-0 fixed-top d-flex align-items-top flex-row">
|
||||||
|
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-start">
|
||||||
|
<div class="me-3">
|
||||||
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-bs-toggle="minimize">
|
||||||
|
<span class="icon-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="navbar-brand brand-logo" href="#">
|
||||||
|
<strong>PettaExpress</strong>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-brand brand-logo-mini" href="index.html">
|
||||||
|
<img src="img/logo-mini.svg" alt="logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu-wrapper d-flex align-items-top">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item font-weight-semibold d-none d-lg-block ms-0">
|
||||||
|
<h1 class="welcome-text">Semangat Kerja, <span class="text-black fw-bold"><?php echo $username ?></span></h1>
|
||||||
|
<h3 class="welcome-sub-text">PETTA TOUR & TRAVEL EXPRESS BANYUWANGI </h3>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item d-none d-lg-block">
|
||||||
|
<div id="datepicker-popup" class="input-group date datepicker navbar-date-picker">
|
||||||
|
<span class="input-group-addon input-group-prepend border-right">
|
||||||
|
<span class="icon-calendar input-group-text calendar-icon"></span>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<form class="search-form" action="#">
|
||||||
|
<i class="icon-search"></i>
|
||||||
|
<input type="search" class="form-control" placeholder="Search Here" title="Search here">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown d-none d-lg-block user-dropdown">
|
||||||
|
<a class="nav-link" id="UserDropdown" href="#" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="img-xs rounded-circle profile-initials" id="profileInitials"></div>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="UserDropdown">
|
||||||
|
<a class="dropdown-item"><i class="dropdown-item-icon mdi mdi-power text-primary me-2"></i>Sign Out</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-bs-toggle="offcanvas">
|
||||||
|
<span class="mdi mdi-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="container-fluid page-body-wrapper">
|
||||||
|
<!-- partial -->
|
||||||
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="dashboard.php">
|
||||||
|
<i class="mdi mdi-grid-large menu-icon"></i>
|
||||||
|
<span class="menu-title">Dashboard</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Pengguna</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#ui-basic" aria-expanded="false" aria-controls="ui-basic">
|
||||||
|
<i class="menu-icon mdi mdi-floor-plan"></i>
|
||||||
|
<span class="menu-title">Pengguna</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="ui-basic">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="pelanggan.php">Pelanggan</a></li>
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="driver.php">Sopir</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Semua Data</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#form-elements" aria-expanded="false" aria-controls="form-elements">
|
||||||
|
<i class="menu-icon mdi mdi-card-text-outline"></i>
|
||||||
|
<span class="menu-title">Pemesanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="form-elements">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="pemesanan.php">Data Pemesanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#charts" aria-expanded="false" aria-controls="charts">
|
||||||
|
<i class="menu-icon mdi mdi-chart-line"></i>
|
||||||
|
<span class="menu-title">Data Perjalanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="charts">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="jurusan.php">Daftar Perjalanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="mobil.php">
|
||||||
|
<i class="menu-icon mdi mdi-table"></i>
|
||||||
|
<span class="menu-title">Mobil</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="main-panel">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 grid-margin stretch-card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Edit Mobil</h4>
|
||||||
|
<form method="post" action="edit-mobil.php">
|
||||||
|
<input type="hidden" name="id_mobil" value="<?php echo $id_mobil; ?>">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputUsername1">Nama Mobil</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputUsername1" name="nama_mobil" value="<?php echo $nama_mobil; ?>" placeholder="Nama Mobil">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputusername">Plat</label>
|
||||||
|
<input type="text" class="form-control" id="exampleusername" name="plat" value="<?php echo $plat; ?>" placeholder="Plat">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary me-2" name="action" value="edit">Submit</button>
|
||||||
|
<button type="button" class="btn btn-light" name="cancel" onclick="window.location.href='mobil.php'">Cancel</button>
|
||||||
|
</form>
|
||||||
|
<!-- Modal Sukses -->
|
||||||
|
<div class="modal fade" id="successModal" tabindex="-1" role="dialog" aria-labelledby="successModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="successModalLabel">Sukses!</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Data berhasil di Edit!
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="window.location.href='edit-sopir.php'">Tutup</button>
|
||||||
|
<a class="btn btn-primary" href="mobil.php">Lihat Data</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal Logout -->
|
||||||
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Apakah Anda yakin ingin logout?
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
||||||
|
<a href="logout.php" class="btn btn-danger">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- content-wrapper ends -->
|
||||||
|
<!-- partial:../../partials/_footer.html -->
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="d-sm-flex justify-content-center justify-content-sm-between">
|
||||||
|
<span class="float-none float-sm-right d-block mt-1 mt-sm-0 text-center">Copyright © 2021. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- partial -->
|
||||||
|
</div>
|
||||||
|
<!-- main-panel ends -->
|
||||||
|
</div>
|
||||||
|
<!-- page-body-wrapper ends -->
|
||||||
|
</div>
|
||||||
|
<!-- container-scroller -->
|
||||||
|
|
||||||
|
<!-- plugins:js -->
|
||||||
|
<script src="vendors/js/vendor.bundle.base.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin js for this page -->
|
||||||
|
<script src="vendors/chart.js/Chart.min.js"></script>
|
||||||
|
<script src="vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="vendors/progressbar.js/progressbar.min.js"></script>
|
||||||
|
|
||||||
|
<!-- End plugin js for this page -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Mengambil nama pengguna dari sesi PHP
|
||||||
|
fetch('get_username.php')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
var name = data.username; // Sesuaikan dengan struktur data yang diambil dari sesi
|
||||||
|
var initials = getInitials(name);
|
||||||
|
document.getElementById('profileInitials').innerText = initials;
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function getInitials(name) {
|
||||||
|
var names = name.split(' ');
|
||||||
|
var initials = names[0].charAt(0).toUpperCase();
|
||||||
|
if (names.length > 1) {
|
||||||
|
initials += names[names.length - 1].charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
|
return initials;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Pastikan variabel isSuccess diatur oleh PHP setelah operasi penambahan data berhasil
|
||||||
|
var isSuccess = <?php echo json_encode($isSuccess); ?>;
|
||||||
|
|
||||||
|
if (isSuccess) {
|
||||||
|
$('#successModal').modal('show');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Inisialisasi modal
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('logoutModal'), {
|
||||||
|
keyboard: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- inject:js -->
|
||||||
|
<script src="js/off-canvas.js"></script>
|
||||||
|
<script src="js/hoverable-collapse.js"></script>
|
||||||
|
<script src="js/template.js"></script>
|
||||||
|
<script src="js/settings.js"></script>
|
||||||
|
<script src="js/todolist.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Custom js for this page-->
|
||||||
|
<script src="js/jquery.cookie.js" type="text/javascript"></script>
|
||||||
|
<script src="js/dashboard.js"></script>
|
||||||
|
<script src="js/Chart.roundedBarCharts.js"></script>
|
||||||
|
<!-- End custom js for this page-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,472 @@
|
||||||
|
<?php
|
||||||
|
include "koneksi.php";
|
||||||
|
|
||||||
|
// Cek apakah ID sopir disediakan
|
||||||
|
if (isset($_GET['id_perjalanan'])) {
|
||||||
|
$id_perjalanan = $_GET['id_perjalanan'];
|
||||||
|
|
||||||
|
$failedMessage = '';
|
||||||
|
|
||||||
|
// Query untuk mendapatkan data sopir berdasarkan ID
|
||||||
|
$query = "SELECT dp.*, s.nama_lengkap AS nama_sopir, s.id_sopir AS idSopir
|
||||||
|
FROM daftar_perjalanan dp
|
||||||
|
LEFT JOIN sopir s ON dp.id_sopir = s.id_sopir
|
||||||
|
WHERE dp.id_perjalanan = '$id_perjalanan'";
|
||||||
|
$result = $conn->query($query);
|
||||||
|
|
||||||
|
// Periksa apakah data ditemukan
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
$kotaasal = $row['kota_asal'];
|
||||||
|
$kotatujuan = $row['kota_tujuan'];
|
||||||
|
$waktu_keberangkatan = $row['waktu_keberangkatan'];
|
||||||
|
$harga = $row["harga"];
|
||||||
|
$tanggal = $row["tanggal"];
|
||||||
|
$status = $row["status"];
|
||||||
|
$jumlah_penumpang = $row["jumlah_penumpang"];
|
||||||
|
$nama_sopir = $row["nama_sopir"];
|
||||||
|
$idSopir = $row["idSopir"];
|
||||||
|
} else {
|
||||||
|
// Redirect jika data tidak ditemukan
|
||||||
|
header("Location: jurusan.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Proses pengeditan data sopir
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$id_perjalanan = $_POST["id_perjalanan"];
|
||||||
|
$kotaasal = $_POST['kota_asal'];
|
||||||
|
$kotatujuan = $_POST['kota_tujuan'];
|
||||||
|
$waktu_keberangkatan = $_POST['waktu_keberangkatan'];
|
||||||
|
$harga = $_POST["harga"];
|
||||||
|
$tanggal = $_POST["tanggal"];
|
||||||
|
$status = $_POST["status"];
|
||||||
|
$jumlah_penumpang = $_POST["jumlah_penumpang"];
|
||||||
|
$id_sopir = $_POST["id_sopir"];
|
||||||
|
$mobil_id = $_POST["mobil_id"];
|
||||||
|
|
||||||
|
$validasiSopir = "SELECT * FROM daftar_perjalanan
|
||||||
|
WHERE id_sopir = '$id_sopir' AND tanggal = '$tanggal' AND waktu_keberangkatan = '$waktu_keberangkatan' AND id_perjalanan != '$id_perjalanan'";
|
||||||
|
|
||||||
|
$validasiKendaraan = "SELECT * FROM daftar_perjalanan
|
||||||
|
WHERE mobil_id = '$mobil_id' AND tanggal = '$tanggal' AND waktu_keberangkatan = '$waktu_keberangkatan' AND id_perjalanan != '$id_perjalanan'";
|
||||||
|
|
||||||
|
$isSuccess = true;
|
||||||
|
if ($conn->query($validasiSopir)->num_rows > 0) {
|
||||||
|
$failedMessage = "Sopir telah ditugaskan pada tanggal $tanggal jam $waktu_keberangkatan";
|
||||||
|
$isSuccess = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($conn->query($validasiKendaraan)->num_rows > 0) {
|
||||||
|
$failedMessage = "Mobil telah digunakan pada tanggal $tanggal jam $waktu_keberangkatan";
|
||||||
|
$isSuccess = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Query UPDATE
|
||||||
|
$sql = "UPDATE daftar_perjalanan SET kota_asal='$kotaasal', kota_tujuan='$kotatujuan', waktu_keberangkatan='$waktu_keberangkatan', tanggal = '$tanggal', harga='$harga', status='$status',id_sopir='$id_sopir', mobil_id='$mobil_id', jumlah_penumpang='$jumlah_penumpang' WHERE id_perjalanan='$id_perjalanan'";
|
||||||
|
|
||||||
|
if ($isSuccess) {
|
||||||
|
// Eksekusi query
|
||||||
|
if ($conn->query($sql) === TRUE) {
|
||||||
|
$isSuccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pastikan koneksi terbuka
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("Connection failed: " . $conn->connect_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Periksa apakah pengguna telah login
|
||||||
|
if (!isset($_SESSION["username"])) {
|
||||||
|
header("Location: login.php"); // Jika tidak ada sesi username, redirect ke halaman login
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil username dari sesi
|
||||||
|
$username = $_SESSION["username"];
|
||||||
|
|
||||||
|
// Redirect to driver.php when click cancel
|
||||||
|
if (isset($_POST['cancel'])) {
|
||||||
|
header('Location: driver.php');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Star Admin2 </title>
|
||||||
|
<!-- plugins:css -->
|
||||||
|
<link rel="stylesheet" href="vendors/feather/feather.css">
|
||||||
|
<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">
|
||||||
|
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/typicons/typicons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/simple-line-icons/css/simple-line-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin css for this page -->
|
||||||
|
<link rel="stylesheet" href="vendors/datatables.net-bs4/dataTables.bootstrap4.css">
|
||||||
|
<link rel="stylesheet" href="js/select.dataTables.min.css">
|
||||||
|
<!-- End plugin css for this page -->
|
||||||
|
<!-- inject:css -->
|
||||||
|
<link rel="stylesheet" href="css/vertical-layout-light/style.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:partials/_navbar.html -->
|
||||||
|
<nav class="navbar default-layout col-lg-12 col-12 p-0 fixed-top d-flex align-items-top flex-row">
|
||||||
|
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-start">
|
||||||
|
<div class="me-3">
|
||||||
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-bs-toggle="minimize">
|
||||||
|
<span class="icon-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="navbar-brand brand-logo" href="#">
|
||||||
|
<strong>PettaExpress</strong>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-brand brand-logo-mini" href="index.html">
|
||||||
|
<img src="img/logo-mini.svg" alt="logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu-wrapper d-flex align-items-top">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item font-weight-semibold d-none d-lg-block ms-0">
|
||||||
|
<h1 class="welcome-text">Semangat Kerja, <span class="text-black fw-bold"><?php echo $username ?></span></h1>
|
||||||
|
<h3 class="welcome-sub-text">PETTA TOUR & TRAVEL EXPRESS BANYUWANGI </h3>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item d-none d-lg-block">
|
||||||
|
<div id="datepicker-popup" class="input-group date datepicker navbar-date-picker">
|
||||||
|
<span class="input-group-addon input-group-prepend border-right">
|
||||||
|
<span class="icon-calendar input-group-text calendar-icon"></span>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<form class="search-form" action="#">
|
||||||
|
<i class="icon-search"></i>
|
||||||
|
<input type="search" class="form-control" placeholder="Search Here" title="Search here">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown d-none d-lg-block user-dropdown">
|
||||||
|
<a class="nav-link" id="UserDropdown" href="#" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="img-xs rounded-circle profile-initials" id="profileInitials"></div>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="UserDropdown">
|
||||||
|
<a class="dropdown-item"><i class="dropdown-item-icon mdi mdi-power text-primary me-2"></i>Sign Out</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-bs-toggle="offcanvas">
|
||||||
|
<span class="mdi mdi-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="container-fluid page-body-wrapper">
|
||||||
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="dashboard.php">
|
||||||
|
<i class="mdi mdi-grid-large menu-icon"></i>
|
||||||
|
<span class="menu-title">Dashboard</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Pengguna</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#ui-basic" aria-expanded="false" aria-controls="ui-basic">
|
||||||
|
<i class="menu-icon mdi mdi-floor-plan"></i>
|
||||||
|
<span class="menu-title">Pengguna</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="ui-basic">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="pelanggan.php">Pelanggan</a></li>
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="driver.php">Sopir</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Semua Data</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#form-elements" aria-expanded="false" aria-controls="form-elements">
|
||||||
|
<i class="menu-icon mdi mdi-card-text-outline"></i>
|
||||||
|
<span class="menu-title">Pemesanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="form-elements">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="pemesanan.php">Data Pemesanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#charts" aria-expanded="false" aria-controls="charts">
|
||||||
|
<i class="menu-icon mdi mdi-chart-line"></i>
|
||||||
|
<span class="menu-title">Data Perjalanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="charts">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="jurusan.php">Daftar Perjalanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="mobil.php">
|
||||||
|
<i class="menu-icon mdi mdi-table"></i>
|
||||||
|
<span class="menu-title">Mobil</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="main-panel">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 grid-margin stretch-card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Edit Daftar perjalanan</h4>
|
||||||
|
<form method="post" action="edit-perjalanan.php">
|
||||||
|
<input type="hidden" name="id_perjalanan" value="<?php echo $id_perjalanan; ?>">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputKotaAsal">Kota Asal</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputKotaAsal" name="kota_asal" value="<?php echo $kotaasal; ?>" placeholder="Kota Asal">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputKotaTujuan">Kota Tujuan</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputKotaTujuan" name="kota_tujuan" value="<?php echo $kotatujuan; ?>" placeholder="Kota Tujuan">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputWaktuKeberangkatan">Waktu Keberangkatan</label>
|
||||||
|
<input type="time" class="form-control" id="exampleInputWaktuKeberangkatan" name="waktu_keberangkatan" value="<?php echo $waktu_keberangkatan; ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputWaktuKeberangkatan">Tanggal Keberangkatan</label>
|
||||||
|
<input type="date" class="form-control" id="exampleInputWaktuKeberangkatan" name="tanggal" value="<?php echo $tanggal; ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputHarga">Harga</label>
|
||||||
|
<input type="number" class="form-control" id="exampleInputHarga" name="harga" value="<?php echo $harga; ?>" placeholder="Harga">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputHarga">Jumlah Penumpang</label>
|
||||||
|
<input type="number" class="form-control" id="exampleInputHarga" name="jumlah_penumpang" value="<?php echo $jumlah_penumpang; ?>" placeholder="Jumlah">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputStatus">Sopir</label>
|
||||||
|
<select class="form-control" id="exampleInputStatus" name="id_sopir">
|
||||||
|
<?php
|
||||||
|
$sql_sopir = "SELECT id_sopir, nama_lengkap FROM sopir";
|
||||||
|
$result_sopir = $conn->query($sql_sopir);
|
||||||
|
if ($result_sopir->num_rows > 0) {
|
||||||
|
while ($row_sopir = $result_sopir->fetch_assoc()) {
|
||||||
|
$selected = ($row_sopir['id_sopir'] == $idSopir) ? "selected" : ""; // Periksa apakah ini harus menjadi nilai awal yang dipilih
|
||||||
|
echo "<option value='" . $row_sopir["id_sopir"] . "' $selected>" . $row_sopir["nama_lengkap"] . "</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputStatus">Mobil</label>
|
||||||
|
<select class="form-control" id="exampleInputStatus" name="mobil_id">
|
||||||
|
<?php
|
||||||
|
$sql_sopir = "SELECT id_mobil, nama_mobil FROM mobil";
|
||||||
|
$result_sopir = $conn->query($sql_sopir);
|
||||||
|
if ($result_sopir->num_rows > 0) {
|
||||||
|
while ($row_sopir = $result_sopir->fetch_assoc()) {
|
||||||
|
$selected = ($row_sopir['id_mobil'] == $idSopir) ? "selected" : ""; // Periksa apakah ini harus menjadi nilai awal yang dipilih
|
||||||
|
echo "<option value='" . $row_sopir["id_mobil"] . "' $selected>" . $row_sopir["nama_mobil"] . "</option>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputStatus">Status</label>
|
||||||
|
<select class="form-control" id="exampleInputStatus" name="status">
|
||||||
|
<option value="tersedia" <?php echo ($status == 'tersedia') ? 'selected' : ''; ?>>Tersedia</option>
|
||||||
|
<option value="kosong" <?php echo ($status == 'kosong') ? 'selected' : ''; ?>>Kosong</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary me-2" name="action" value="edit">Submit</button>
|
||||||
|
<button type="button" class="btn btn-light" name="cancel" onclick="window.location.href='jurusan.php'">Cancel</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<!-- Modal Sukses -->
|
||||||
|
<div class="modal fade" id="successModal" tabindex="-1" role="dialog" aria-labelledby="successModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="successModalLabel">Sukses!</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Data berhasil di Edit!
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="window.location.href='edit-perjalanan.php?id_perjalanan=<?= $id_perjalanan ?>'">Tutup</button>
|
||||||
|
<a class="btn btn-primary" href="jurusan.php">Lihat Data</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Modal Gagal -->
|
||||||
|
<div class="modal fade" id="failedModal" tabindex="-1" role="dialog" aria-labelledby="failedModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="failedModalLabel">Gagal!</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Gagal mengedit data! <br>
|
||||||
|
<span class="failed--message"></span>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="window.location.href='edit-perjalanan.php?id_perjalanan=<?= $id_perjalanan ?>'">Tutup</button>
|
||||||
|
<a class="btn btn-danger" href="jurusan.php">Lihat Data</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal Logout -->
|
||||||
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Apakah Anda yakin ingin logout?
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
||||||
|
<a href="logout.php" class="btn btn-danger">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- content-wrapper ends -->
|
||||||
|
<!-- partial:../../partials/_footer.html -->
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="d-sm-flex justify-content-center justify-content-sm-between">
|
||||||
|
<span class="float-none float-sm-right d-block mt-1 mt-sm-0 text-center">Copyright © 2021. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- partial -->
|
||||||
|
</div>
|
||||||
|
<!-- main-panel ends -->
|
||||||
|
</div>
|
||||||
|
<!-- page-body-wrapper ends -->
|
||||||
|
</div>
|
||||||
|
<!-- container-scroller -->
|
||||||
|
|
||||||
|
<!-- plugins:js -->
|
||||||
|
<script src="vendors/js/vendor.bundle.base.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin js for this page -->
|
||||||
|
<script src="vendors/chart.js/Chart.min.js"></script>
|
||||||
|
<script src="vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="vendors/progressbar.js/progressbar.min.js"></script>
|
||||||
|
|
||||||
|
<!-- End plugin js for this page -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Mengambil nama pengguna dari sesi PHP
|
||||||
|
fetch('get_username.php')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
var name = data.username; // Sesuaikan dengan struktur data yang diambil dari sesi
|
||||||
|
var initials = getInitials(name);
|
||||||
|
document.getElementById('profileInitials').innerText = initials;
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function getInitials(name) {
|
||||||
|
var names = name.split(' ');
|
||||||
|
var initials = names[0].charAt(0).toUpperCase();
|
||||||
|
if (names.length > 1) {
|
||||||
|
initials += names[names.length - 1].charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
|
return initials;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Pastikan variabel isSuccess diatur oleh PHP setelah operasi penambahan data berhasil
|
||||||
|
var isSuccess = <?php echo json_encode($isSuccess); ?>;
|
||||||
|
var message = `<?php echo json_encode($failedMessage); ?>`;
|
||||||
|
|
||||||
|
if (isSuccess) {
|
||||||
|
$('#successModal').modal('show');
|
||||||
|
} else {
|
||||||
|
$('#failedModal').modal('show');
|
||||||
|
$('.failed--message').html(message)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Inisialisasi modal
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('logoutModal'), {
|
||||||
|
keyboard: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- inject:js -->
|
||||||
|
<script src="js/off-canvas.js"></script>
|
||||||
|
<script src="js/hoverable-collapse.js"></script>
|
||||||
|
<script src="js/template.js"></script>
|
||||||
|
<script src="js/settings.js"></script>
|
||||||
|
<script src="js/todolist.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Custom js for this page-->
|
||||||
|
<script src="js/jquery.cookie.js" type="text/javascript"></script>
|
||||||
|
<script src="js/dashboard.js"></script>
|
||||||
|
<script src="js/Chart.roundedBarCharts.js"></script>
|
||||||
|
<!-- End custom js for this page-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -0,0 +1,372 @@
|
||||||
|
<?php
|
||||||
|
include "koneksi.php";
|
||||||
|
|
||||||
|
// Cek apakah ID sopir disediakan
|
||||||
|
if (isset($_GET['id_sopir'])) {
|
||||||
|
$id_sopir = $_GET['id_sopir'];
|
||||||
|
|
||||||
|
// Query untuk mendapatkan data sopir berdasarkan ID
|
||||||
|
$query = "SELECT * FROM sopir WHERE id_sopir = '$id_sopir'";
|
||||||
|
$result = $conn->query($query);
|
||||||
|
|
||||||
|
// Periksa apakah data ditemukan
|
||||||
|
if ($result->num_rows > 0) {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
$nama_lengkap = $row['nama_lengkap'];
|
||||||
|
$username_sopir = $row['username'];
|
||||||
|
$password = $row['password'];
|
||||||
|
$no_SIM = $row['no_SIM'];
|
||||||
|
$notelp = $row['notelp'];
|
||||||
|
$alamat = $row['alamat'];
|
||||||
|
} else {
|
||||||
|
// Redirect jika data tidak ditemukan
|
||||||
|
header("Location: driver.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Proses pengeditan data sopir
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] == "POST") {
|
||||||
|
$id_sopir = $_POST["id_sopir"];
|
||||||
|
$nama_lengkap = $_POST["nama_lengkap"];
|
||||||
|
$username_sopir = $_POST["username_sopir"];
|
||||||
|
$password = $_POST["password"];
|
||||||
|
$no_SIM = $_POST["no_SIM"];
|
||||||
|
$notelp = $_POST["notelp"];
|
||||||
|
$alamat = $_POST["alamat"];
|
||||||
|
|
||||||
|
if (!empty($_POST["password"])) {
|
||||||
|
// Hash password baru sebelum menyimpannya
|
||||||
|
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
|
||||||
|
// Query UPDATE dengan kata sandi baru
|
||||||
|
$sql = "UPDATE sopir SET nama_lengkap='$nama_lengkap', username='$username_sopir', password='$password', no_SIM='$no_SIM', notelp='$notelp', alamat='$alamat' WHERE id_sopir='$id_sopir'";
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada password baru, gunakan query UPDATE tanpa memperbarui password
|
||||||
|
$sql = "UPDATE sopir SET nama_lengkap='$nama_lengkap', username='$username_sopir', no_SIM='$no_SIM', notelp='$notelp', alamat='$alamat' WHERE id_sopir='$id_sopir'";
|
||||||
|
}
|
||||||
|
// Eksekusi query
|
||||||
|
if ($conn->query($sql) === TRUE) {
|
||||||
|
$isSuccess = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pastikan koneksi terbuka
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("Connection failed: " . $conn->connect_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
session_start();
|
||||||
|
|
||||||
|
// Periksa apakah pengguna telah login
|
||||||
|
if (!isset($_SESSION["username"])) {
|
||||||
|
header("Location: login.php"); // Jika tidak ada sesi username, redirect ke halaman login
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mengambil username dari sesi
|
||||||
|
$username = $_SESSION["username"];
|
||||||
|
|
||||||
|
// Redirect to driver.php when click cancel
|
||||||
|
if (isset($_POST['cancel'])) {
|
||||||
|
header('Location: driver.php');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<title>Star Admin2 </title>
|
||||||
|
<!-- plugins:css -->
|
||||||
|
<link rel="stylesheet" href="vendors/feather/feather.css">
|
||||||
|
<link rel="stylesheet" href="vendors/mdi/css/materialdesignicons.min.css">
|
||||||
|
<link rel="stylesheet" href="vendors/ti-icons/css/themify-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/typicons/typicons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/simple-line-icons/css/simple-line-icons.css">
|
||||||
|
<link rel="stylesheet" href="vendors/css/vendor.bundle.base.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin css for this page -->
|
||||||
|
<link rel="stylesheet" href="vendors/datatables.net-bs4/dataTables.bootstrap4.css">
|
||||||
|
<link rel="stylesheet" href="js/select.dataTables.min.css">
|
||||||
|
<!-- End plugin css for this page -->
|
||||||
|
<!-- inject:css -->
|
||||||
|
<link rel="stylesheet" href="css/vertical-layout-light/style.css">
|
||||||
|
<!-- endinject -->
|
||||||
|
<link rel="shortcut icon" href="images/favicon.png" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- partial:partials/_navbar.html -->
|
||||||
|
<nav class="navbar default-layout col-lg-12 col-12 p-0 fixed-top d-flex align-items-top flex-row">
|
||||||
|
<div class="text-center navbar-brand-wrapper d-flex align-items-center justify-content-start">
|
||||||
|
<div class="me-3">
|
||||||
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-bs-toggle="minimize">
|
||||||
|
<span class="icon-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a class="navbar-brand brand-logo" href="#">
|
||||||
|
<strong>PettaExpress</strong>
|
||||||
|
</a>
|
||||||
|
<a class="navbar-brand brand-logo-mini" href="index.html">
|
||||||
|
<img src="img/logo-mini.svg" alt="logo" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-menu-wrapper d-flex align-items-top">
|
||||||
|
<ul class="navbar-nav">
|
||||||
|
<li class="nav-item font-weight-semibold d-none d-lg-block ms-0">
|
||||||
|
<h1 class="welcome-text">Semangat Kerja, <span class="text-black fw-bold"><?php echo $username ?></span></h1>
|
||||||
|
<h3 class="welcome-sub-text">PETTA TOUR & TRAVEL EXPRESS BANYUWANGI </h3>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="navbar-nav ms-auto">
|
||||||
|
<li class="nav-item d-none d-lg-block">
|
||||||
|
<div id="datepicker-popup" class="input-group date datepicker navbar-date-picker">
|
||||||
|
<span class="input-group-addon input-group-prepend border-right">
|
||||||
|
<span class="icon-calendar input-group-text calendar-icon"></span>
|
||||||
|
</span>
|
||||||
|
<input type="text" class="form-control">
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<form class="search-form" action="#">
|
||||||
|
<i class="icon-search"></i>
|
||||||
|
<input type="search" class="form-control" placeholder="Search Here" title="Search here">
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item dropdown d-none d-lg-block user-dropdown">
|
||||||
|
<a class="nav-link" id="UserDropdown" href="#" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
<div class="img-xs rounded-circle profile-initials" id="profileInitials"></div>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right navbar-dropdown" aria-labelledby="UserDropdown">
|
||||||
|
<a class="dropdown-item"><i class="dropdown-item-icon mdi mdi-power text-primary me-2"></i>Sign Out</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<button class="navbar-toggler navbar-toggler-right d-lg-none align-self-center" type="button" data-bs-toggle="offcanvas">
|
||||||
|
<span class="mdi mdi-menu"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="container-fluid page-body-wrapper">
|
||||||
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="dashboard.php">
|
||||||
|
<i class="mdi mdi-grid-large menu-icon"></i>
|
||||||
|
<span class="menu-title">Dashboard</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Pengguna</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#ui-basic" aria-expanded="false" aria-controls="ui-basic">
|
||||||
|
<i class="menu-icon mdi mdi-floor-plan"></i>
|
||||||
|
<span class="menu-title">Pengguna</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="ui-basic">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="pelanggan.php">Pelanggan</a></li>
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="driver.php">Sopir</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item nav-category">Semua Data</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#form-elements" aria-expanded="false" aria-controls="form-elements">
|
||||||
|
<i class="menu-icon mdi mdi-card-text-outline"></i>
|
||||||
|
<span class="menu-title">Pemesanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="form-elements">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="pemesanan.php">Data Pemesanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-bs-toggle="collapse" href="#charts" aria-expanded="false" aria-controls="charts">
|
||||||
|
<i class="menu-icon mdi mdi-chart-line"></i>
|
||||||
|
<span class="menu-title">Data Perjalanan</span>
|
||||||
|
<i class="menu-arrow"></i>
|
||||||
|
</a>
|
||||||
|
<div class="collapse" id="charts">
|
||||||
|
<ul class="nav flex-column sub-menu">
|
||||||
|
<li class="nav-item"> <a class="nav-link" href="jurusan.php">Daftar Perjalanan</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="mobil.php">
|
||||||
|
<i class="menu-icon mdi mdi-table"></i>
|
||||||
|
<span class="menu-title">Mobil</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
<!-- partial -->
|
||||||
|
<div class="main-panel">
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 grid-margin stretch-card">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="card-title">Tambah Sopir</h4>
|
||||||
|
<form method="post" action="edit-sopir.php">
|
||||||
|
<input type="hidden" name="id_sopir" value="<?php echo $id_sopir; ?>">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputUsername1">Nama</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputUsername1" name="nama_lengkap" value="<?php echo $nama_lengkap; ?>" placeholder="Nama Lengkap">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputusername">Username</label>
|
||||||
|
<input type="text" class="form-control" id="exampleusername" name="username_sopir" value="<?php echo $username_sopir; ?>" placeholder="Username">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputPassword1">Password</label>
|
||||||
|
<input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputEmail1">Nomor SIM</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputSIM" name="no_SIM" value="<?php echo $no_SIM; ?>" placeholder="Nomor SIM">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputPassword1">Nomor Telepon</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputTelp" name="notelp" value="<?php echo $notelp; ?>" placeholder="Nomor Telepon">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="exampleInputConfirmPassword1">Alamat</label>
|
||||||
|
<input type="text" class="form-control" id="exampleInputConfirmAlamat" name="alamat" value="<?php echo $alamat; ?>" placeholder="Alamat">
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary me-2" name="action" value="edit">Submit</button>
|
||||||
|
<button type="button" class="btn btn-light" name="cancel" onclick="window.location.href='driver.php'">Cancel</button>
|
||||||
|
</form>
|
||||||
|
<!-- Modal Sukses -->
|
||||||
|
<div class="modal fade" id="successModal" tabindex="-1" role="dialog" aria-labelledby="successModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="successModalLabel">Sukses!</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Data berhasil di Edit!
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal" onclick="window.location.href='edit-sopir.php'">Tutup</button>
|
||||||
|
<a class="btn btn-primary" href="driver.php">Lihat Data</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Modal Logout -->
|
||||||
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
Apakah Anda yakin ingin logout?
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
||||||
|
<a href="logout.php" class="btn btn-danger">Logout</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- content-wrapper ends -->
|
||||||
|
<!-- partial:../../partials/_footer.html -->
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="d-sm-flex justify-content-center justify-content-sm-between">
|
||||||
|
<span class="text-muted text-center text-sm-left d-block d-sm-inline-block">Premium <a href="https://www.bootstrapdash.com/" target="_blank">Bootstrap admin template</a> from BootstrapDash.</span>
|
||||||
|
<span class="float-none float-sm-right d-block mt-1 mt-sm-0 text-center">Copyright © 2021. All rights reserved.</span>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<!-- partial -->
|
||||||
|
</div>
|
||||||
|
<!-- main-panel ends -->
|
||||||
|
</div>
|
||||||
|
<!-- page-body-wrapper ends -->
|
||||||
|
</div>
|
||||||
|
<!-- container-scroller -->
|
||||||
|
|
||||||
|
<!-- plugins:js -->
|
||||||
|
<script src="vendors/js/vendor.bundle.base.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Plugin js for this page -->
|
||||||
|
<script src="vendors/chart.js/Chart.min.js"></script>
|
||||||
|
<script src="vendors/bootstrap-datepicker/bootstrap-datepicker.min.js"></script>
|
||||||
|
<script src="vendors/progressbar.js/progressbar.min.js"></script>
|
||||||
|
|
||||||
|
<!-- End plugin js for this page -->
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Mengambil nama pengguna dari sesi PHP
|
||||||
|
fetch('get_username.php')
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
var name = data.username; // Sesuaikan dengan struktur data yang diambil dari sesi
|
||||||
|
var initials = getInitials(name);
|
||||||
|
document.getElementById('profileInitials').innerText = initials;
|
||||||
|
})
|
||||||
|
.catch(error => console.error('Error:', error));
|
||||||
|
});
|
||||||
|
|
||||||
|
function getInitials(name) {
|
||||||
|
var names = name.split(' ');
|
||||||
|
var initials = names[0].charAt(0).toUpperCase();
|
||||||
|
if (names.length > 1) {
|
||||||
|
initials += names[names.length - 1].charAt(0).toUpperCase();
|
||||||
|
}
|
||||||
|
return initials;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
// Pastikan variabel isSuccess diatur oleh PHP setelah operasi penambahan data berhasil
|
||||||
|
var isSuccess = <?php echo json_encode($isSuccess); ?>;
|
||||||
|
|
||||||
|
if (isSuccess) {
|
||||||
|
$('#successModal').modal('show');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
// Inisialisasi modal
|
||||||
|
var myModal = new bootstrap.Modal(document.getElementById('logoutModal'), {
|
||||||
|
keyboard: false
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- inject:js -->
|
||||||
|
<script src="js/off-canvas.js"></script>
|
||||||
|
<script src="js/hoverable-collapse.js"></script>
|
||||||
|
<script src="js/template.js"></script>
|
||||||
|
<script src="js/settings.js"></script>
|
||||||
|
<script src="js/todolist.js"></script>
|
||||||
|
<!-- endinject -->
|
||||||
|
<!-- Custom js for this page-->
|
||||||
|
<script src="js/jquery.cookie.js" type="text/javascript"></script>
|
||||||
|
<script src="js/dashboard.js"></script>
|
||||||
|
<script src="js/Chart.roundedBarCharts.js"></script>
|
||||||
|
<!-- End custom js for this page-->
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue