Commit f6f6f8da authored by FARDA ALAN MA'RUF's avatar FARDA ALAN MA'RUF

create rekap siswa

parent 10ec1c4d
File added
<?php
namespace App\Http\Controllers\Admin\Rekap;
use App\Http\Controllers\Controller;
use App\Models\Perpus\KelasKodeModel;
use App\Models\Akademik\AbsensiModel;
use App\Models\Layanan\MutasiKonselingModel;
use App\Models\Layanan\MutasiPembinaanModel;
use App\Models\Siswa\SiswaModel;
class RekapSiswaController extends Controller
{
private $views = 'admin/rekap/siswa';
private $url = 'admin/rekap/siswa';
private $title = 'Halaman Rekap Siswa';
public function __construct()
{
createLogActivity();
// Di isi Construct
$this->mPerpusKelasKode = new KelasKodeModel();
$this->mAkAbsensi = new AbsensiModel();
$this->mSiswa = new SiswaModel();
$this->mMutasiKonseling = new MutasiKonselingModel();
$this->mMutasiPembinaan = new MutasiPembinaanModel();
}
public function index()
{
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Rekap Absensi Siswa',
];
return view($this->views . "/index", $data);
}
public function getAbsensi($tanggal_awal, $tanggal_akhir)
{
$data = \DB::table('perpus_kelasKode')
->where('perpus_kelasKode.idPSekolah', session()->get('idPSekolah'))
->leftJoin('akademik_absensi', function ($join) use ($tanggal_awal, $tanggal_akhir) {
$join->on('perpus_kelasKode.id', '=', 'akademik_absensi.idPKKode')
->whereBetween('akademik_absensi.date', [$tanggal_awal, $tanggal_akhir]);
})
->join('perpus_kelas', 'perpus_kelasKode.idPKelas', '=', 'perpus_kelas.id')
->join('perpus_jurusan', 'perpus_kelasKode.idPJurusan', '=', 'perpus_jurusan.id')
->select(
'perpus_kelasKode.id as kelas_id',
\DB::raw('COALESCE(MIN(akademik_absensi.date), "' . $tanggal_awal . '") as tanggal'),
\DB::raw('CONCAT(perpus_kelas.nama, " ", perpus_jurusan.nama, " ", perpus_kelasKode.nama) as nama_kelas'),
\DB::raw('count(akademik_absensi.id) as jumlah_kehadiran'),
\DB::raw('SUM(CASE WHEN akademik_absensi.idStatus = 1 THEN 1 ELSE 0 END) as jumlah_hadir'),
\DB::raw('SUM(CASE WHEN akademik_absensi.idStatus = 2 THEN 1 ELSE 0 END) as jumlah_tidak_hadir')
)
->groupBy('perpus_kelasKode.id', 'perpus_kelasKode.nama')
->get()
->map(function ($item) use ($tanggal_awal, $tanggal_akhir) {
// Menyimpan kelas_id
$kelas_id = $item->kelas_id;
// Membuat tombol HTML
$buttonHtml = "<a href='" . url("{$this->url}/create/{$kelas_id}/{$tanggal_awal}/{$tanggal_akhir}") . "'><button type='button' class='btn btn-primary btn-sm' title='Detail Data'>Detail</button></a>";
if ($item->jumlah_kehadiran > 0) {
$status = '<span class="text-primary">Ada</span>';
} else {
$status = '<span class="text-warning">Tidak Ada</span>';
}
// Mengembalikan array numerik tanpa kelas_id
return [
$tanggal_awal . " - " . $tanggal_akhir,
$item->nama_kelas,
$item->jumlah_hadir,
$item->jumlah_tidak_hadir,
$status,
$buttonHtml
];
});
$response = ['data' => $data];
echo json_encode($response);
}
public function create($idPKKode = null, $tanggal_awal = null, $tanggal_akhir = null)
{
// $kelas = $this->mPerpusKelasKode->where('id', $idPKKode)->first();
// $tanggal = date("d-m-Y", strtotime($tanggal));
$data = [
'title' => $this->title,
'url' => $this->url,
'page' => 'Absensi Kelas',
'idKelas' => $idPKKode,
// 'kelas' => $kelas,
'tanggal_awal' => $tanggal_awal,
'tanggal_akhir' => $tanggal_akhir,
];
return view($this->views . "/show", $data);
}
public function getAbsensiForm($idPKKode = null, $tanggal_awal = null, $tanggal_akhir = null)
{
// Mengambil data absensi untuk rentang tanggal tertentu.
$absensi = $this->mAkAbsensi
->where('idPKKode', $idPKKode)
->whereBetween('date', [$tanggal_awal, $tanggal_akhir])
->get();
// Menentukan kondisi awal berdasarkan peran pengguna.
if (session()->get('role') == 1) {
// Untuk peran 1, ambil semua siswa dalam kelas tertentu dengan status aktif.
$where = [
'idPKKode' => $idPKKode,
'idMStatus' => 1, // Status siswa aktif
];
} else {
// Untuk peran lainnya, batasi siswa sesuai sekolah dan kondisi tertentu.
$where = [
'idPSekolah' => session()->get('idPSekolah'),
'idPPeriode' => session()->get('idPPeriode'),
'idPKKode' => $idPKKode,
'idMStatus' => 1,
'idPPkelas' => 1,
'idPPStatus' => 1,
];
}
// Mengambil semua siswa berdasarkan kondisi yang sudah ditentukan.
$siswa = $this->mSiswa->where($where)->get();
// Jika ada data absensi dalam rentang tanggal, hitung jumlah masing-masing status kehadiran.
if ($absensi->isNotEmpty()) {
// Mengambil semua catatan absensi untuk kelas tertentu dalam rentang tanggal.
$absensiSiswa = $this->mAkAbsensi
->where('idPKKode', $idPKKode)
->whereBetween('date', [$tanggal_awal, $tanggal_akhir])
->get(['idSiswa', 'idStatus'])
->groupBy('idSiswa');
// Mengambil data konseling dalam rentang tanggal.
$konselingSiswa = $this->mMutasiKonseling
->where('idPKKode', $idPKKode)
->whereBetween('created_at', [$tanggal_awal, $tanggal_akhir])
->get(['idSiswa'])
->groupBy('idSiswa');
// Mengambil data pembinaan dalam rentang tanggal.
$pembinaanSiswa = $this->mMutasiPembinaan
->where('idPKKode', $idPKKode)
->whereBetween('created_at', [$tanggal_awal, $tanggal_akhir])
->get(['idSiswa'])
->groupBy('idSiswa');
// Hitung status kehadiran dan sesi konseling/pembinaan untuk masing-masing siswa.
$data = $siswa->map(function ($item) use ($absensiSiswa, $konselingSiswa, $pembinaanSiswa) {
$hadir = $absensiSiswa->get($item->id)->where('idStatus', 1)->count();
$tidak_hadir = $absensiSiswa->get($item->id)->where('idStatus', 2)->count();
$terlambat = $absensiSiswa->get($item->id)->where('idStatus', 3)->count();
$ijin = $absensiSiswa->get($item->id)->where('idStatus', 4)->count();
$sakit = $absensiSiswa->get($item->id)->where('idStatus', 5)->count();
$jumlah_konseling = isset($konselingSiswa[$item->id]) ? $konselingSiswa[$item->id]->count() : 0;
$jumlah_pembinaan = isset($pembinaanSiswa[$item->id]) ? $pembinaanSiswa[$item->id]->count() : 0;
return [
'i' => '',
'id' => $item->id,
'nisn' => $item->nisn,
'nama' => $item->nama,
'hadir' => $hadir,
'tidak_hadir' => $tidak_hadir,
'terlambat' => $terlambat,
'ijin' => $ijin,
'sakit' => $sakit,
'jumlah_konseling' => $jumlah_konseling,
'jumlah_pembinaan' => $jumlah_pembinaan,
];
});
} else {
// Jika tidak ada data absensi dalam rentang tanggal, setel semua status kehadiran dan jumlah sesi ke 0.
$data = $siswa->map(function ($item) {
return [
'i' => '',
'id' => $item->id,
'nisn' => $item->nisn,
'nama' => $item->nama,
'hadir' => 0,
'tidak_hadir' => 0,
'terlambat' => 0,
'ijin' => 0,
'sakit' => 0,
'jumlah_konseling' => 0,
'jumlah_pembinaan' => 0,
];
});
}
// Mengembalikan data dalam format JSON.
return response()->json(['data' => $data, 'status' => $absensi->isNotEmpty() ? 1 : 0]);
}
public function store(Request $request)
{
$kodekelas = $this->mPerpusKelasKode->where('id', $request->valKelas)->first();
$absensi = $this->mAkAbsensi->where('idPKKode', $request->valKelas)->where('date', $request->valTanggal)->first();
$cekId = $request->input('cekId', []);
$cekVal = $request->input('cekVal', []);
// status absensi
// 0: belum ada absensi
// 1: hadir
// 2: tidak hadir
// 3: terlambat
// 4: ijin
// 5: sakit
foreach ($cekId as $idSiswa => $value) {
// Dapatkan status siswa; 'on' berarti hadir (1), '2' berarti tidak hadir
// $status = isset($cekVal[$idSiswa]) && $cekVal[$idSiswa] == 'on' ? 1 : 2;
$status = $cekVal[$idSiswa];
// Simpan atau update data absensi siswa
$dataAbsensi = [
'idPSekolah' => session()->get('idPSekolah'),
'idPJurusan' => $kodekelas->jurusan->id,
'idPKelas' => $kodekelas->kelas->id,
'idPKKode' => $kodekelas->id,
'idPPeriode' => session()->get('idPPeriode'),
'idSiswa' => $idSiswa,
'idStatus' => $status,
'date' => $request->valTanggal,
];
$absensi = $this->mAkAbsensi
->where('idPKKode', $kodekelas->id)
->where('date', $request->valTanggal)
->where('idSiswa', $idSiswa)
->first();
if ($absensi) {
$absensi->update($dataAbsensi);
} else {
$this->mAkAbsensi->create($dataAbsensi);
}
}
if (isset($absensi)) {
return redirect("$this->url")->with('sukses', 'Absensi berhasil di Perbarui');
} else {
return redirect("$this->url")->with('sukses', 'Absensi berhasil di Tambahkan');
}
}
}
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/datatables.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/date-picker.css') }}">
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Akademik</h3>
@endslot
<li class="breadcrumb-item">Absensi</li>
<li class="breadcrumb-item active">Siswa</li>
@endcomponent
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
{{-- Diberikan alert --}}
@if (session()->has('sukses'))
<div class="alert alert-success" role="alert">
{{ session('sukses') }}
</div>
@elseif (session()->has('gagal'))
<div class="alert alert-danger" role="alert">
{{ session('gagal') }}
</div>
@endif
<div class="card">
<div class="card-header p-3">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="mb-3">
<div class="row">
<div class="col-md-6">
<label class="col-sm-3 col-form-label">Tanggal Awal</label>
<input id="tanggal_awal" class="datepicker-here form-control digits col-sm-9"
type="text" data-language="en" placeholder="Isi Tanggal Absensi" />
</div>
<div class="col-md-6">
<label class="col-sm-3 col-form-label">Tanggal Akhir</label>
<input id="tanggal_akhir" class="datepicker-here form-control digits col-sm-9"
type="text" data-language="en" placeholder="Isi Tanggal Absensi" />
</div>
<div class="col-md-12 mt-1">
<button id="tanggal" class="btn btn-md btn-primary">Submit</button>
</div>
</div>
{{-- <a href="{{ url($url) }}/create" class="btn btn-sm btn-primary float-end m-4" id="linkTambahAbsensi">Tambah Absensi</a> --}}
</div>
</div>
<div class="row">
<div class="table-responsive" id="tabel-jquery">
<table id="isi-tabel"
class="table table-striped table-bordered dt-responsive nowrap dataTable no-footer dtr-inline collapsed">
<thead>
<tr>
<th>Tanggal</th>
<th>Kelas</th>
<th>Jumlah Hadir</th>
<th>Jumlah tidak Hadir</th>
<th>Absensi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
{{-- fitur di laravel --}}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script src="{{ asset('assets/js/datatable/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('assets/js/datatable/datatables/datatable.custom.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.en.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.custom.js') }}"></script>
<script>
let baseUrlUrl = '{{ url($url) }}';
$("#isi-tabel").DataTable();
$('#tabel-jquery').hide();
</script>
<script>
$(document).ready(function() {
// dikasih notif kalo tanggal ini tidak ada absensi
$('.datepicker-here').datepicker({
autoClose: true, // Pastikan date picker tertutup setelah tanggal dipilih
language: 'en', // Mengatur bahasa
// onSelect: function(formattedDate, date, inst) {
// var formattedForURL = date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0');
// updateDataTable(formattedForURL); // Update dengan format YYYY-MM-DD
// }
});
$('#tanggal').on('click', function() {
var tgl_awal = $('#tanggal_awal').val();
var tgl_akhir = $('#tanggal_akhir').val();
// Fungsi untuk mengubah format tanggal
function formatTanggal(tanggal) {
var parts = tanggal.split('/');
return parts[2] + '-' + parts[0] + '-' + parts[1];
}
// Mengubah format tanggal awal dan akhir
var tgl_awal_formatted = formatTanggal(tgl_awal);
var tgl_akhir_formatted = formatTanggal(tgl_akhir);
updateDataTable(tgl_awal_formatted, tgl_akhir_formatted);
});
function updateDataTable(tanggal_awal, tanggal_akhir) {
$("#isi-tabel").DataTable().clear().destroy();
$('#tabel-jquery').show();
$('#linkTambahAbsensi').attr('href', "{{ url($url) }}/create/" + tanggal_awal + "/" + tanggal_akhir);
$("#isi-tabel").DataTable({
language: {
emptyTable: "Tidak ada data Siswa",
info: "Total: _TOTAL_ Data Siswa",
infoEmpty: "Menampilkan 0 dari 0 Data Siswa",
},
responsive: true,
autoWidth: false,
processing: true,
ajax: {
url: baseUrlUrl + '/get-absensi/' + tanggal_awal + "/" + tanggal_akhir,
method: 'GET',
},
dom: 'Bfrtip',
buttons: [
'copy', 'excel', 'pdf', 'colvis'
]
});
}
});
</script>
@endpush
@endsection
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/datatables.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/select2.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/date-picker.css') }}">
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Master Indeks Kelas</h3>
@endslot
<li class="breadcrumb-item">Master</li>
<li class="breadcrumb-item">Indeks Kelas</li>
<li class="breadcrumb-item active">Detail</li>
@endcomponent
<div class="container-fluid pt-4">
<div class="row justify-content-center">
<div class="col-lg-10 col-sm-12">
<div class="card border-top border-0 border-4 border-info">
<div class="card-header p-3">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
<div class="col-lg-6 col-sm-12">
<a href="{{ url($url) }}" class="btn btn-sm btn-primary float-end">kembali</a>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="table-responsive" id="tabel-jquery">
<form action="{{ url($url) }}/store" method="POST">
@csrf
<input id="valKelas" type="hidden" name="valKelas">
<input id="valTanggal" type="hidden" name="valTanggal">
<table id="isi-tabel" class="table table-striped table-bordered dt-responsive nowrap dataTable no-footer dtr-inline collapsed">
<thead >
<tr>
<th data-priority="1" width="50px">No.</th>
<th>NISN</th>
<th>Nama</th>
<th>Konseling</th>
<th>Bimbingan</th>
<th>Hadir</th>
<th>Tidak Hadir</th>
<th>Terlambat</th>
<th>Izin</th>
<th>Sakit</th>
</tr>
</thead>
<tbody>
{{-- fitur di laravel --}}
</tbody>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script src="{{ asset('assets/js/datatable/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('assets/js/datatable/datatables/datatable.custom.js') }}"></script>
<script src="{{ asset('assets/js/select2/select2.full.min.js') }}"></script>
<script src="{{ asset('assets/js/select2/select2-custom.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.en.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.custom.js') }}"></script>
<script>
let baseUrl = '{{ url('') }}';
let url = '{{ $url }}';
$("#isi-tabel").DataTable();
$('#tabel-jquery').hide();
</script>
@include('admin.filter.kelaskomplit')
<script>
$(document).ready(function() {
setTimeout(function() {
if ('{{ $tanggal_awal }}' && '{{ $idKelas }}') {
// $('#select-kodekelas').trigger('change');
updateTable();
}
}, 500);
// Fungsi untuk memperbarui tabel
function updateTable() {
var idPKKode = '{{ $idKelas }}';
var selectedDate = '{{ $tanggal_awal }}'; // Mendapatkan tanggal yang dipilih
var selectedDateAkhir = '{{ $tanggal_akhir }}'; // Mendapatkan tanggal yang dipilih
$('#valKelas').val(idPKKode); // Set hidden input value
$('#valTanggal').val(selectedDate); // Set hidden input value
console.log('kelas: '+idPKKode)
console.log('tanggal: '+selectedDate)
if(idPKKode && selectedDate) {
$("#isi-tabel").DataTable().clear().destroy(); // Menghancurkan instance DataTable yang ada
$('#tabel-jquery').show(); // Menampilkan tabel jika tersembunyi
// Membuat instance baru dari DataTable
$("#isi-tabel").DataTable({
language: {
emptyTable: "Tidak ada data Siswa",
info: "Total: _TOTAL_ Data Siswa",
infoEmpty: "Menampilkan 0 dari 0 Data Siswa",
},
responsive: true,
autoWidth: false,
processing: true,
ajax: {
url: baseUrl + '/' + url + '/get-absensi-form/' + idPKKode + '/' + selectedDate + '/' + selectedDateAkhir,
method: 'GET',
// dataSrc: function(json) {
// var status = json.status == 1 ? "Absensi sudah dilakukan" : "Belum Absensi";
// var submit = json.status == 1 ? "Update" : "Simpan";
// if(json.status == 1) {
// alert("kelas di Tanggal ini sudah dilakukan absensi ! Klik Update untuk merubah kehadiran");
// }
// $('#status').val(status);
// $('#submit').val(submit);
// return json.data;
// }
},
columns: [
{ data: 'i', render: function (data, type, row, meta) { return meta.row + 1; } }, // Menghitung index
{ data: 'nisn' },
{ data: 'nama' },
{ data: 'jumlah_konseling' },
{ data: 'jumlah_pembinaan' },
{ data: 'hadir' },
{ data: 'tidak_hadir' },
{ data: 'terlambat' },
{ data: 'ijin' },
{ data: 'sakit' },
],
dom: 'Bfrtip',
buttons: [
'copy', 'excel', 'pdf', 'colvis'
]
});
}
}
});
</script>
@endpush
@endsection
@extends($admin)
@section('title')
{{ $title }}
@endsection
@push('css')
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/datatables.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/select2.css') }}">
<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/date-picker.css') }}">
@endpush
@section('content')
@component('components.breadcrumb')
@slot('breadcrumb_title')
<h3>Master Indeks Kelas</h3>
@endslot
<li class="breadcrumb-item">Master</li>
<li class="breadcrumb-item">Indeks Kelas</li>
<li class="breadcrumb-item active">Detail</li>
@endcomponent
<div class="container-fluid pt-4">
<div class="row justify-content-center">
<div class="col-lg-10 col-sm-12">
<div class="card border-top border-0 border-4 border-info">
<div class="card-header p-3">
<div class="row">
<div class="col-lg-6">
<h5 class="card-title">{{ $page }}</h5>
</div>
<div class="col-lg-6 col-sm-12">
<a href="{{ url($url) }}" class="btn btn-sm btn-primary float-end">kembali</a>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="mb-3">
<label class="col-sm-3 col-form-label">Pilih Kelas</label>
<select id="select-kodekelas" class="form-select select2" aria-label="Default select example" required>
<option value="">Pilih Kelas Terlebih Dahulu</option>
</select>
</div>
</div>
<div class="row">
<div class="mb-3">
<label class="col-sm-3 col-form-label">Pilih Tanggal</label>
<input id="tanggal" class="datepicker-here form-control digits col-sm-9" type="text" data-language="en" placeholder="Isi Tanggal Absensi" />
</div>
</div>
<div class="row">
<div class="mb-3">
<label class="col-sm-3 col-form-label">Status</label>
<input id="status" class="form-control block" type="text" disabled />
</div>
</div>
<div class="row">
<div class="table-responsive" id="tabel-jquery">
<form action="{{ url($url) }}/store" method="POST">
@csrf
<input id="valKelas" type="hidden" name="valKelas">
<input id="valTanggal" type="hidden" name="valTanggal">
<table id="isi-tabel" class="table table-striped table-bordered dt-responsive nowrap dataTable no-footer dtr-inline collapsed">
<thead >
<tr>
<th data-priority="1" width="50px">No.</th>
<th>NISN</th>
<th>Nama</th>
<th width="250">Kehadiran</th>
</tr>
</thead>
<tbody>
{{-- fitur di laravel --}}
</tbody>
<tfoot>
<input id="submit" type="submit" class="btn btn-primary" onclick="return confirm('Apakah anda yakin data sudah benar ?')">
<button class="btn btn-secondary"><a href="{{ url($url) }}" class="text-white">Cancel</a></button>
</tfoot>
</table>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@push('scripts')
<script src="{{ asset('assets/js/datatable/datatables/jquery.dataTables.min.js') }}"></script>
<script src="{{ asset('assets/js/datatable/datatables/datatable.custom.js') }}"></script>
<script src="{{ asset('assets/js/select2/select2.full.min.js') }}"></script>
<script src="{{ asset('assets/js/select2/select2-custom.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.en.js') }}"></script>
<script src="{{ asset('assets/js/datepicker/date-picker/datepicker.custom.js') }}"></script>
<script>
let baseUrl = '{{ url('') }}';
let url = '{{ $url }}';
$("#isi-tabel").DataTable();
$('#tabel-jquery').hide();
</script>
@include('admin.filter.kelaskomplit')
<script>
$(document).ready(function() {
let isInitialLoad = true;
// Inisialisasi Datepicker
$('#tanggal').datepicker({
autoClose: true,
language: 'en',
dateFormat: 'yyyy-mm-dd',
// onSelect: function(formattedDate, date, inst) {
// updateTable(); // Memanggil fungsi updateTable ketika tanggal dipilih
// }
onSelect: function(formattedDate, date, inst) {
if (!isInitialLoad) { // Hanya memanggil updateTable jika bukan load pertama
updateTable();
}
}
}).data('datepicker').selectDate(new Date('{{ $tanggal }}')); // Set tanggal dari server
isInitialLoad = false;
// Menangani perubahan pada dropdown kelas
$('#select-kodekelas').on('change', function() {
updateTable(); // Memanggil fungsi updateTable ketika kelas berubah
});
setTimeout(function() {
if ('{{ $tanggal }}' && '{{ $idKelas }}') {
$('#select-kodekelas').trigger('change');
}
}, 500);
// Fungsi untuk memperbarui tabel
function updateTable() {
var idPKKode = $('#select-kodekelas').val(); // Mendapatkan ID kelas yang dipilih
var selectedDate = $('#tanggal').val(); // Mendapatkan tanggal yang dipilih
$('#valKelas').val(idPKKode); // Set hidden input value
$('#valTanggal').val(selectedDate); // Set hidden input value
console.log('kelas: '+idPKKode)
console.log('tanggal: '+selectedDate)
if(idPKKode && selectedDate) {
$("#isi-tabel").DataTable().clear().destroy(); // Menghancurkan instance DataTable yang ada
$('#tabel-jquery').show(); // Menampilkan tabel jika tersembunyi
// Membuat instance baru dari DataTable
$("#isi-tabel").DataTable({
language: {
emptyTable: "Tidak ada data Siswa",
info: "Total: _TOTAL_ Data Siswa",
infoEmpty: "Menampilkan 0 dari 0 Data Siswa",
},
responsive: true,
autoWidth: false,
processing: true,
ajax: {
url: baseUrl + '/' + url + '/get-absensi-form/' + idPKKode + '/' + selectedDate,
method: 'GET',
dataSrc: function(json) {
var status = json.status == 1 ? "Absensi sudah dilakukan" : "Belum Absensi";
var submit = json.status == 1 ? "Update" : "Simpan";
if(json.status == 1) {
alert("kelas di Tanggal ini sudah dilakukan absensi ! Klik Update untuk merubah kehadiran");
}
$('#status').val(status);
$('#submit').val(submit);
return json.data;
}
},
columns: [
{ data: 'i', render: function (data, type, row, meta) { return meta.row + 1; } }, // Menghitung index
{ data: 'nisn' },
{ data: 'nama' },
{ data: 'id',
render: function(data, type, row, meta) {
// console.log("idSiswa: "+row.id+" | status: "+row.statusAbsensi)
if(row.statusAbsensi == 0 || row.statusAbsensi == 1){
var checkboxChecked = 'checked';
}else{
var checkboxChecked = '';
}
return `<input name="cekId[${data}]" value="${data}" type="hidden">
<input name="cekVal[${data}]" value="0" type="hidden">
<input type="checkbox" name="cekVal[${data}]" ${checkboxChecked}>`;
}
}
],
dom: 'Bfrtip',
buttons: [
'copy', 'excel', 'pdf', 'colvis'
]
});
}
}
});
</script>
@endpush
@endsection
......@@ -71,6 +71,13 @@
{{-- <li><a href="{{ route('import.kelas') }}" class="{{ routeActive('import.kelas') }}">Import Kelas</a></li> --}}
</ul>
</li>
<li class="dropdown">
<a class="nav-link menu-title {{ prefixActive('/admin/rekap') }}" href="javascript:void(0)"><i data-feather="database"></i><span>Rekap</span></a>
<ul class="nav-submenu menu-content" style="display: {{ prefixBlock('/admin/import') }}">
<li><a href="{{ route('rekap.siswa') }}" class="{{ routeActive('rekap.siswa') }}">Siswa</a></li>
{{-- <li><a href="{{ route('rekap.siswa') }}" class="{{ routeActive('rekap.siswa') }}">Siswa</a></li> --}}
</ul>
</li>
<li><a href="{{ route('event') }}" class="nav-link menu-title {{ routeActive('event') }}"><i data-feather="users"></i><span>Event</span></a></li>
<li><a href="{{ route('admin.saran') }}" class="nav-link menu-title {{ routeActive('admin.saran') }}"><i data-feather="users"></i><span>Saran</span></a></li>
<li><a href="{{ route('admin.akun') }}" class="nav-link menu-title {{ routeActive('admin.akun') }}"><i data-feather="users"></i><span>Akun</span></a></li>
\ No newline at end of file
......@@ -112,3 +112,22 @@ Route::prefix('/admin/import')->group(function () {
Route::get('/guru/create', 'Admin\Import\ImportGuruController@create');
Route::post('/guru/store', 'Admin\Import\ImportGuruController@store');
});
Route::prefix('/admin/rekap')->group(function () {
// Route::get('/siswa', 'Admin\Import\ImportSiswaController@index')->name('import.siswa');
// Route::get('/siswa/create', 'Admin\Import\ImportSiswaController@create');
// Route::post('/siswa/store', 'Admin\Import\ImportSiswaController@store');
// Route::get('/siswa', 'Admin\Rekap\RekapSiswaController@index')->name('rekap.siswa');
// Route::get('/siswa/create', 'Admin\Rekap\RekapSiswaController@create');
// Route::post('/siswa/store', 'Admin\Rekap\RekapSiswaController@store');
Route::get('/siswa', 'Admin\Rekap\RekapSiswaController@index')->name('rekap.siswa');
Route::get('/siswa/get-absensi/{tanggal_awal}/{tanggal_akhir}', 'Admin\Rekap\RekapSiswaController@getAbsensi');
Route::get('/siswa/create/{dataId}/{date_awal}/{date_akhir}', 'Admin\Rekap\RekapSiswaController@create');
Route::get('/siswa/get-absensi-form/{dataId}/{tanggal_awal}/{tanggal_akhir}', 'Admin\Rekap\RekapSiswaController@getAbsensiForm');
Route::post('/siswa/store', 'Admin\Rekap\RekapSiswaController@store');
Route::get('/siswa/{dataId?}/edit', 'Admin\Rekap\RekapSiswaController@edit');
Route::put('/siswa/update/{dataId?}', 'Admin\Rekap\RekapSiswaController@update');
});
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment