@extends('layouts.app')
@push('styles')
<style>
.modal-backdrop {
z-index: -1;
}
/* make first child max-width:200px */
.table.table-bordered td:first-child {
width: 50%;
}
</style>
@endpush
@push('scripts')
<script>
// var acceptButtons = document.querySelectorAll('.accept-button');
// var rejectButtons = document.querySelectorAll('.reject-button');
// for (var i = 0; i < acceptButtons.length; i++) {
// acceptButtons[i].addEventListener('click', function(e) {
// e.preventDefault();
// var dataId = e.currentTarget.dataset.id;
// var parent = e.target.parentElement.parentElement.parentElement;
// var statusLabel = parent.querySelector('.status-label');
// var url = "{{ url('permintaan-absensi') }}/"+dataId+"/accept";
// let xhr = new XMLHttpRequest();
// xhr.open("POST", url);
// xhr.setRequestHeader('X-CSRF-TOKEN', '{{ csrf_token() }}');
// xhr.onload = function() {
// if (xhr.status === 200) {
// let response = JSON.parse(xhr.responseText);
// if (response.error == undefined) {
// showToast('Berhasil', response.success, 'bg-success');
// statusLabel.innerHTML = 'accept';
// } else {
// showToast('Gagal', response.error, 'bg-danger');
// }
// } else {
// showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
// }
// };
// xhr.send({
// '_token': "{{ csrf_token() }}"
// });
// });
// }
// for (var i = 0; i < rejectButtons.length; i++) {
// rejectButtons[i].addEventListener('click', function(e) {
// e.preventDefault();
// var dataId = e.currentTarget.dataset.id;
// var parent = e.target.parentElement.parentElement.parentElement;
// var statusLabel = parent.querySelector('.status-label');
// var url = "{{ url('permintaan-absensi') }}/"+dataId+"/reject";
// let xhr = new XMLHttpRequest();
// xhr.open("POST", url);
// xhr.setRequestHeader('X-CSRF-TOKEN', '{{ csrf_token() }}');
// xhr.onload = function() {
// if (xhr.status === 200) {
// let response = JSON.parse(xhr.responseText);
// if (response.error == undefined) {
// showToast('Berhasil', response.success, 'bg-success');
// statusLabel.innerHTML = 'reject';
// } else {
// showToast('Gagal', response.error, 'bg-danger');
// }
// } else {
// showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
// }
// };
// xhr.send({
// '_token': "{{ csrf_token() }}"
// });
// });
// }
let row;
var myModal = new bootstrap.Modal(document.getElementById('modalAbsen'));
document.getElementById('reject-button').addEventListener('click', function(e) {
var loadingToast = showToast('Loading...',
'Memproses Data <div class="spinner-border text-primary float-right right float-end" role="status"><span class="visually-hidden">Loading...</span></div>',
'bg-deafult', false);
let form = document.querySelector('#modalAbsenForm');
document.getElementById("status").value = "reject";
let data = new FormData(form);
let url = form.getAttribute('action') + '/permintaan-absensi/' + form.dataset.id + "/status";
let method = form.getAttribute('method');
let xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function() {
if (xhr.status === 200) {
let response = JSON.parse(xhr.responseText);
if (response.status === 'success') {
row.remove();
myModal.hide();
showToast('Berhasil', response.message, 'bg-success');
} else {
showToast('Gagal', response.message, 'bg-danger');
}
} else {
showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
}
loadingToast.hide();
};
xhr.send(data);
e.preventDefault();
});
document.getElementById('accept-button').addEventListener('click', function(e) {
var loadingToast = showToast('Loading...',
'Memproses Data <div class="spinner-border text-primary float-right right float-end" role="status"><span class="visually-hidden">Loading...</span></div>',
'bg-deafult', false);
let form = document.querySelector('#modalAbsenForm');
document.getElementById("status").value = "accept";
let data = new FormData(form);
let url = form.getAttribute('action') + '/permintaan-absensi/' + form.dataset.id + "/status";
let method = form.getAttribute('method');
let xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function() {
if (xhr.status === 200) {
let response = JSON.parse(xhr.responseText);
if (response.status === 'success') {
row.remove();
myModal.hide();
showToast('Berhasil', response.message, 'bg-success');
} else {
showToast('Gagal', response.message, 'bg-danger');
}
} else {
showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
}
loadingToast.hide();
};
xhr.send(data);
e.preventDefault();
});
let tombolModalAbsen = document.querySelectorAll('.tombol-modalAbsen')
tombolModalAbsen.forEach((el) => {
el.addEventListener('click', function() {
row = el.parentElement.parentElement;
let lokasi = JSON.parse(this.dataset.lokasi);
let lokasi_absen_id = this.dataset.lokasi_absen_id;
let selectLokasi = document.getElementById("lokasi_absen_id");
selectLokasi.value = lokasi_absen_id;
let optionLokasi = `<option value="">Tidak Ada Lokasi</option>`;
lokasi.forEach((el) => {
optionLokasi +=
`<option value="${el.id}" ${(el.id == lokasi_absen_id)?"selected":""}>${el.nama_lokasi}</option>`;
});
selectLokasi.innerHTML = optionLokasi;
let jenis_absen = this.dataset.jenisAbsen;
let waktu_absen = this.dataset.waktu;
let status_waktu = this.dataset.statusWaktu;
let status_gps = this.dataset.statusGps;
let keterangan = this.dataset.keterangan;
document.getElementById("waktu_absen").value = waktu_absen;
document.getElementById("status_waktu").value = status_waktu;
document.getElementById("status_gps").value = status_gps;
document.getElementById("keterangan").innerHTML = keterangan;
document.getElementById("link-gambar").href = this.dataset.gambar;
document.getElementById("gambar").src = this.dataset.gambar;
document.getElementById("device-info").innerHTML = document.getElementById("device-info-" +
this.dataset.id).innerHTML;
//hide pilihan lembur dan disable input jika jenis absen bukan check-out
if (jenis_absen != "check-out") {
document.getElementById("pilihan-lembur").style.display = "none";
document.getElementById("lembur").disabled = true;
} else {
document.getElementById("pilihan-lembur").style.display = "block";
document.getElementById("lembur").disabled = false;
}
let form = document.querySelector('#modalAbsenForm');
form.dataset.id = this.dataset.id;
});
});
</script>
@if (request()->clear)
<script>
localStorage.clear();
//remove query params
window.location.href = window.location.href.split('?')[0];
</script>
@endif
<script>
var pilihIds = [];
var local = localStorage.getItem('pilihIds');
if (local) {
pilihIds = JSON.parse(localStorage.getItem('pilihIds'));
}
function updateForm(){
if(pilihIds.length > 0){
document.getElementById("form-multi-update").style.display = "block";
} else {
document.getElementById("form-multi-update").style.display = "none";
}
document.getElementById("jumlah-pilihan").innerHTML = pilihIds.length;
document.getElementById("ids").value = JSON.stringify(pilihIds);
}
updateForm();
function tambahPilihIds(e) {
if (e.checked) {
if(pilihIds.indexOf(e.value) == -1){
pilihIds.push(e.value);
}
} else {
//remove from pilihIds
pilihIds = pilihIds.filter(function(item) {
return item != e.value;
});
}
localStorage.setItem('pilihIds', JSON.stringify(pilihIds));
updateForm();
}
function checkPilihIds() {
for (let i = 0; i < pilihIds.length; i++) {
document.getElementById("pilih-id-" + pilihIds[i]).checked = true;
}
}
checkPilihIds();
function checkAll(cb) {
let inputs = document.querySelectorAll("input[type='checkbox'].check-pilih");
for (let i = 0; i < inputs.length; i++) {
inputs[i].checked = cb.checked;
//change event
var event = document.createEvent("HTMLEvents");
event.initEvent('change', false, true);
inputs[i].dispatchEvent(event);
}
updateForm();
}
</script>
@endpush
@section('content')
<h4 class="fw-bold py-3 mb-4"><span class="text-muted fw-light">Absen /</span> Data Permintaan Absensi</h4>
<div class="card">
<h5 class="card-header">Data Permintaan Absensi</h5>
<div class="card-body">
<div class="row mb-4">
<div class="col-md-6">
<form class="form row" action="">
<div class="col">
<input type="text" class="form-control" placeholder="Search..." aria-label="Search"
name="search" value="{{ request()->search }}">
</div>
<div class="col">
<button class="btn btn-secondary">Search</button>
</div>
</form>
</div>
<div class="col-md-6 text-end">
{{-- @if ($akses['tambah'])
<div class="btn-group float-md-right" role="group" aria-label="Button group with nested dropdown">
<a href="{{ route('permintaan-absensi.create') }}" class="btn btn-primary"><i
class="bx bx-plus"></i> Tambah</a>
</div>
@endif --}}
</div>
</div>
<div class="table-responsive text-nowrap">
@php
function extractInfo($array, $items = null)
{
$_str = '<ul>';
if (is_array($array) || is_object($array)) {
foreach ($array as $key => $value) {
if (
is_string($key) &&
is_string($value) &&
($items == null || ($items != null && in_array($key, $items)))
) {
$_str .= "<li><b>$key : </b>$value</li>";
} elseif (is_array($value) || is_object($value)) {
$_str .= '<li>' . $key . ': ' . extractInfo($value, $items) . '</li>';
} elseif (is_int($key) && is_string($value) && $items == null) {
$_str .= "<li><b>$value : </b></li>";
}
}
}
$_str .= '</ul>';
return $_str;
}
@endphp
<table class="table table-striped">
<thead>
<tr>
<th>
<input type="checkbox" onchange="checkAll(this)">
</th>
<th>NIK</th>
<th class="karyawan">Nama</th>
<th>Tanggal</th>
<th>Waktu</th>
<th>Absen</th>
<th>Keterangan</th>
{{-- <th>Foto</th> --}}
<th>Status</th>
<th>GPS</th>
<th>Keterlambatan</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach ($datas as $data)
<tr>
<td>
{{-- {{ $datas->firstItem() + $loop->index }} --}}
<input type="checkbox" class="check-pilih" id="pilih-id-{{ $data->id }}" onchange="tambahPilihIds(this)"
value="{{ $data->id }}">
</td>
<td>{{ @$data->absensi->karyawan->nik }}</td>
<td class="karyawan">{{ @$data->absensi->karyawan->nama }}</td>
<td>{{ $data->tanggal_absen }}</td>
<td>{{ $data->waktu_absen }}</td>
<td><span class="badge bg-primary">{{ $data->jenis_absen }}</span></td>
<td>{{ $data->keterangan }}</td>
{{-- <td><a href="{{ route('permintaan-absensi.foto-absen', $data->id) }}" target="_blank"><i
class="tf-icons bx bx-image"></i></a></td> --}}
<td class="status-label">{{ $data->status }}</td>
<td>
@if ($data->status_gps == 'out-of-range')
<span class="badge bg-warning">Out Of Range</span>
@endif
@if ($data->status_gps == 'not-detected')
<span class="badge bg-danger text-white">Not Detected</span>
@endif
@if ($data->status_gps == 'on-spot')
<span class="badge bg-success text-white">On Spot</span>
@endif
</td>
<td>
@if ($data->status_waktu == 'on-time')
<span class="badge bg-success">On Time</span>
@endif
@if ($data->status_waktu == 'too-early')
<span class="badge bg-warning">Too Early</span>
@endif
@if ($data->status_waktu == 'late')
<span class="badge bg-danger text-white">Late</span>
@endif
</td>
<td>
<button type="button" class="btn btn-sm btn-primary d-inline tombol-modalAbsen"
id="tombol-modalAbsen-{{ $data->id }}" data-id="{{ $data->id }}"
data-jenis-absen="{{ $data->jenis_absen }}"
data-gambar="{{ route('permintaan-absensi.foto-absen', $data->id) }}"
data-jadwal_id="{{ $data->jadwal_id }}" data-bs-toggle="modal"
data-bs-target="#modalAbsen" data-waktu="{{ @$data->waktu_absen }}"
data-status-waktu="{{ @$data->status_waktu }}"
data-status-gps="{{ @$data->status_gps }}" data-lokasi='{!! json_encode($data->absensi->karyawan->lokasi_absen) !!}'
data-lokasi_absen_id='{!! @$data->lokasi_absen_id !!}'
data-keterangan="{{ @$data->keterangan }}">
<i class="bx bx-detail"></i>
</button>
{{-- <button type="button" class="btn btn-warning btn-sm reject-button" data-id="{{ $data->id }}"><i class="bx bx-x"></i></button>
<button type="button" class="btn btn-success btn-sm accept-button" data-id="{{ $data->id }}"><i class="bx bx-check"></i></button> --}}
@if ($akses['hapus'])
<form action="{{ route('permintaan-absensi.destroy', $data->id) }}" method="POST"
class="d-inline">
@csrf
@method('DELETE')
<button class="btn btn-danger btn-sm"><i class="bx bx-trash"></i></button>
</form>
@endif
<div id="device-info-{{ $data->id }}" style="display: none;">
@php
$device_info = json_decode($data->device_info);
$network_info = json_decode($data->network_info);
@endphp
<h4>Presensi <span class="badge bg-primary">{{ $data->jenis_absen }}</span>
@if ($data->status_waktu == 'on-time')
<span class="badge bg-success">On Time</span>
@endif
@if ($data->status_waktu == 'too-early')
<span class="badge bg-warning">Too Early</span>
@endif
@if ($data->status_waktu == 'late')
<span class="badge bg-danger text-white">Late</span>
@endif
</h4>
@php
$karyawan = $data->absensi->karyawan;
$tanggal = $data->absensi->tanggal_absen;
$hariIni = new DateTime(date('Y-m-d', strtotime($tanggal)));
$input = date('H:i:00');
$jadwal_kerja_id = $data->id;
$j = $data->jadwal_kerja;
//$jadwalKerjaDetail = Helper::checkJadwalTanggal($data->absensi->karyawan_id,$tanggal);
$jadwals = $j->jadwal_kerja_detail->toArray();
//sort array by timediff and make object again
usort($jadwals, function ($a, $b) use ($input) {
$timeDiff = strtotime($a['jam_masuk']) - strtotime($input);
return $timeDiff - (strtotime($b['jam_masuk']) - strtotime($input));
});
//array to array object
$jadwals = array_map(function ($item) use ($j) {
$item['jadwal_kerja'] = (object) [
'jumlah_hari' => $j->jumlah_hari,
];
return (object) $item;
}, $jadwals);
$last_absensi = null;
if ($data->last_absensi_id) {
$last_absensi = (object) ['id' => $data->last_absensi_id];
}
$last_ci = null;
if ($data->last_ci_id) {
$last_ci = (object) [
'id' => $data->last_ci_id,
'tanggal_absen' => $data->last_ci_tanggal_absen,
'jadwal_kerja_id' => $data->last_ci_jadwal_kerja_id,
];
}
$last_co = null;
if ($data->last_co_id) {
$last_co = (object) [
'id' => $data->last_co_id,
'tanggal_absen' => $data->last_co_tanggal_absen,
'jadwal_kerja_id' => $data->last_co_jadwal_kerja_id,
];
}
$jadwalKerjaDetail = Helper::checkJadwalTanggalRaw(
$data->absensi->karyawan->tanggal_mulai_kerja,
$jadwals,
$tanggal,
$last_absensi,
$last_ci,
$last_co,
);
// dd($jadwalDetail);
// $last_absen = $karyawan->absensi()->whereDate('tanggal_absen', $tanggal)->orderBy('created_at', 'DESC')->orderBy('tanggal_absen', 'DESC')->first();
// $ci = null;
// if ($last_absen) {
// $ci = $last_absen->getRiwayat('check-in', 'reject');
// $co = $last_absen->getRiwayat('check-out', 'reject');
// if ($ci && $co == null) {
// $jadwal_kerja_id = $ci->jadwal_kerja_id;
// $hariIni = new DateTime($ci->tanggal_absen);
// } else if ($ci && $co) {
// $jadwal_kerja_id = $co->jadwal_kerja_id;
// $hariIni = new DateTime($co->tanggal_absen);
// }
// }
// $awal = new DateTime($karyawan->tanggal_mulai_kerja);
// // $jadwals = $data->jadwal_kerja->jadwal_kerja_detail()
// // ->selectRaw("*,TIMEDIFF(jam_masuk, '" . $input . "') as _diff")
// // ->orderBy('_diff', 'ASC')
// // ->get();
// $jadwals = $data->jadwal_kerja->jadwal_kerja_detail->toArray();
// //sort array by timediff and make object again
// usort($jadwals, function ($a, $b) use ($input) {
// $timeDiff = strtotime($a['jam_masuk']) - strtotime($input);
// return $timeDiff - (strtotime($b['jam_masuk']) - strtotime($input));
// });
// $day = 1;
// $jadwalKerjaDetail = null;
// foreach ($jadwals as $key => $detail) {
// $detail = (object) $detail;
// while ($awal < $hariIni) {
// if ($day < $data->jumlah_hari) {
// $day++;
// } else {
// $day = 1;
// }
// $awal->modify('+1 day');
// }
// $jam_masuk = strtotime($detail->jam_masuk);
// $jam_pulang = strtotime($detail->jam_pulang);
// $_input = strtotime($input);
// if ($detail->hari == "Day $day") {
// $f = DateTime::createFromFormat('H:i:s', $detail->jam_masuk);
// $t = DateTime::createFromFormat('H:i:s', $detail->jam_pulang);
// $i = DateTime::createFromFormat('H:i:s', $input);
// if ($f > $t) {
// $t->modify('+1 day');
// }
// if (($f <= $i && $i <= $t) || ($f <= $i->modify('+1 day') && $i <= $t)) {
// $jadwalKerjaDetail = $detail;
// break;
// } elseif ($_input < $jam_masuk || ($_input >= $jam_masuk && $_input <= $jam_pulang)) {
// $jadwalKerjaDetail = $detail;
// break;
// } elseif ($jadwal_kerja_id == $detail->jadwal_kerja_id) {
// $jadwalKerjaDetail = $detail;
// break;
// } else {
// $jadwalKerjaDetail = $detail;
// break;
// }
// }
// }
@endphp
<table class="table table-bordered">
<tr>
<td class="align-top">
Jadwal Kerja
</td>
<td>
<b><a
href="{{ route('jadwal-kerja.edit', $data->jadwal_kerja_id) }}">{{ $data->jadwal_kerja->nama_jadwal }}</a></b>
</td>
</tr>
<tr>
<td class="align-top">
Jadwal Ke
</td>
<td>
{{ @$jadwalKerjaDetail->hari }}
</td>
</tr>
<tr>
<td class="align-top">
Jam Masuk
</td>
<td>
<span class="badge bg-success">
JAM MASUK : {{ @$jadwalKerjaDetail->jam_masuk }}
</span>
</td>
</tr>
<tr>
<td class="align-top">
Jam Pulang
</td>
<td>
<span class="badge bg-success">
JAM PULANG : {{ @$jadwalKerjaDetail->jam_pulang }}
</span>
</td>
</tr>
<tr>
<td class="align-top">
Absen Untuk Tanggal
</td>
<td>
<span
class="badge bg-warning">{{ $data->absensi->tanggal_absen }}</span>
</td>
</tr>
@if ($data->jenis_absen == 'check-out')
<tr>
<td class="align-top">
Tanggal/Waktu Mengajukan check-in
</td>
<td>
{{ @$data->tanggal_absen_ci ?? '-' }}/{{ @$data->waktu_absen_ci ?? '-' }}
</td>
</tr>
@endif
<tr>
<td class="align-top">
Tanggal/Waktu Mengajukan {{ $data->jenis_absen }}
</td>
<td>
{{ $data->tanggal_absen }}/{{ $data->waktu_absen }}
</td>
</tr>
</table>
<h4>Biodata Karyawan</h4>
<table class="table table-bordered">
<tr>
<td class="align-top">
Nama
</td>
<td>
<a
href="{{ route('karyawan.edit', $data->absensi->karyawan_id) }}">{{ $data->absensi->karyawan->nama }}</a>
</td>
</tr>
<tr>
<td class="align-top">
NIK
</td>
<td>
{{ $data->absensi->karyawan->nik }}
</td>
</tr>
<tr>
<td class="align-top">
Perusahaan
</td>
{{-- <td>
{{ $data->absensi->karyawan->perusahaan->nama_perusahaan }}
</td> --}}
<td>
{{ $data->absensi->karyawan->perusahaans->count() > 0 ? implode(', ', $data->absensi->karyawan->perusahaans->pluck('nama_perusahaan')->toArray()) : '' }}
</td>
</tr>
<tr>
<td class="align-top">
Departemen
</td>
<td>
{{ $data->absensi->karyawan->departemen->nama_departemen }}
</td>
</tr>
</table>
<h4>GPS Info</h4>
<table class="table table-bordered">
<tr>
<td class="align-top">
Lokasi Absen
</td>
<td>
<a href="https://www.google.com/maps/search/?api=1&query={{ @$data->lokasi_absen->latitude }},{{ @$data->lokasi_absen->longitude }}"
target="_blank">{{ @$data->lokasi_absen->nama_lokasi }} (Radius :
{{ @$data->lokasi_absen->radius }} meter)</a>
</td>
</tr>
<tr>
<td class="align-top">
Koordinat (Lat,Long)
</td>
<td>
<a href="https://www.google.com/maps/search/?api=1&query={{ $data->latitude }},{{ $data->longitude }}"
target="_blank">{{ @$data->latitude }} ,
{{ @$data->longitude }}</a>
</td>
</tr>
<tr>
<td class="align-top">
GPS Status
</td>
<td>
@if ($data->status_gps == 'out-of-range')
<span class="badge bg-warning">Out Of Range</span>
@endif
@if ($data->status_gps == 'not-detected')
<span class="badge bg-danger text-white">Not Detected</span>
@endif
@if ($data->status_gps == 'on-spot')
<span class="badge bg-success text-white">On Spot</span>
@endif
</td>
</tr>
<tr>
<td class="align-top">
Akurasi GPS (meter)
</td>
<td>
{{ @$data->akurasi_gps }}
</td>
</tr>
<tr>
<td class="align-top">
Jarak Absen (meter)
</td>
<td>
{{ @$data->jarak_absen }}
</td>
</tr>
</table>
<h4>Device Info</h4>
<table class="table table-bordered">
<tr>
<td class="align-top">
Brand
</td>
<td>
{{ @$device_info->brand }}
</td>
</tr>
<tr>
<td class="align-top">
Model
</td>
<td>
{{ @$device_info->model }}
</td>
</tr>
<tr>
<td class="align-top">
Device
</td>
<td>
{{ @$device_info->device }}
</td>
</tr>
<tr>
<td class="align-top">
OS Version
</td>
<td>
{{ @$device_info->version->sdkInt }}
</td>
</tr>
</table>
<h4>Network Info</h4>
<p>Wifi : </p>
<table class="table table-bordered">
<tr>
<td class="align-top">
Wifi Name
</td>
<td>
{{ @$network_info->wifi_name }}
</td>
</tr>
<tr>
<td class="align-top">
Wifi IPv4
</td>
<td>
{{ @$network_info->wifi_ip }}
</td>
</tr>
<tr>
<td class="align-top">
Wifi IPv6
</td>
<td>
{{ @$network_info->wifi_ipv6 }}
</td>
</tr>
<tr>
<td class="align-top">
Wifi Mac
</td>
<td>
{{ @$network_info->wifi_mac }}
</td>
</tr>
</table>
<p>Public : </p>
<table class="table table-bordered">
<tr>
<td class="align-top">
Provider Name
</td>
<td>
{{ @$network_info->provider }}
</td>
</tr>
<tr>
<td class="align-top">
Network IPv4
</td>
<td>
{{ @$network_info->public_ipv4 }}
</td>
</tr>
<tr>
<td class="align-top">
Network IPv6
</td>
<td>
{{ @$network_info->public_ipv6 }}
</td>
</tr>
<tr>
<td class="align-top">
City
</td>
<td>
{{ @$network_info->city_name }}
</td>
</tr>
</table>
</div>
</td>
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<td colspan="11">
{{ $datas->appends(request()->query())->links() }}
</td>
</tr>
</tfoot>
</table>
</div>
<div class="py-4">
<form action="{{route('permintaan-absensi.multi-update-status')}}" id="form-multi-update" method="POST">
@csrf
<p>Update status <span id="jumlah-pilihan" style="font-weight: bold;">0</span> permintaan absensi karyawan</p>
<input type="hidden" name="ids" id="ids">
<button type="submit" class="btn btn-warning "name="status" value="reject"><i
class="bx bx-x"></i> Tolak</button>
<button type="submit" class="btn btn-success" name="status" value="accept"><i
class="bx bx-check"></i> Setujui</button>
</form>
</div>
</div>
</div>
<div class="modal fade" id="modalAbsen" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-fullscreen" role="document">
<form class="modal-content" method="POST" id="modalAbsenForm" action="{{ url('/') }}">
<input type="hidden" name="status" id="status">
<div class="modal-header">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="detail-tab" data-bs-toggle="tab"
data-bs-target="#detail" type="button" role="tab" aria-controls="detail"
aria-selected="true">Detail
Presensi</button>
</li>
</ul>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body ">
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="detail" role="tabpanel"
aria-labelledby="detail-tab">
<div class="row">
<div class="col-md-6">
<div class="row mb-1">
<div class="col-md-12">
<center>
<a href="" id="link-gambar" target="_blank">
<img src="" alt="" id="gambar"
style="max-height: 500px;max-width:100%;">
</a>
</center>
</div>
</div>
<div class="row mb-1">
<div class="col-md-12">
<div class="form-group">
<label for="keterangan">Keterangan</label>
<textarea name="keterangan" id="keterangan" readonly class="form-control"></textarea>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="waktu_absen" class="form-label">Waktu Absen</label>
<input type="time" class="form-control " name="waktu_absen"
id="waktu_absen">
</div>
<div class="form-group">
<label for="status_waktu" class="form-label">Status Waktu</label>
<select name="status_waktu" id="status_waktu" class="form-control">
@foreach (['on-time', 'late', 'too-early'] as $item)
<option value="{{ $item }}">{{ $item }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="lokasi_absen_id" class="form-label">Lokasi</label>
<select name="lokasi_absen_id" class="form-control" id="lokasi_absen_id">
<option value="">Tidak Ada Lokasi</option>
</select>
</div>
<div class="form-group">
<label for="status_gps" class="form-label">Status GPS</label>
<select name="status_gps" id="status_gps" class="form-control">
@foreach (['on-spot', 'out-of-range', 'not-detected'] as $item)
<option value="{{ $item }}">{{ $item }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
<div class="col-md-6" id="device-info">
</div>
</div>
</div>
</div>
@csrf
</div>
<div class="modal-footer">
<div class="form-check form-switch mx-4" id="pilihan-lembur">
<label class="form-check-label m-2" for="lembur">Checkout Lembur?</label>
<input class="form-check-input" style="width: 4rem;height: 2rem;" type="checkbox" name="lembur"
value="true" id="lembur">
</div>
<button type="submit" class="btn btn-warning " id="reject-button" name="status" value="reject"><i
class="bx bx-x"></i></button>
<button type="submit" class="btn btn-success" id="accept-button" name="status" value="accept"><i
class="bx bx-check"></i></button>
<button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">
Close
</button>
</div>
</form>
</div>
</div>
@endsection
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]