Anons79 Mini Shell

Directory : /home/aplikasiposinfo/.trash/resources/views/absensi/
Upload File :
Current File : /home/aplikasiposinfo/.trash/resources/views/absensi/index.blade.php

@extends('layouts.app')

@push('styles')
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/public/assets/styles/choices.min.css">
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/public/assets/styles/choices.min.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
    <link rel="stylesheet"
        href="https://cdn.jsdelivr.net/npm/[email protected]/dist/select2-bootstrap-5-theme.min.css" />
    <!-- Or for RTL support -->
    <link rel="stylesheet"
        href="https://cdn.jsdelivr.net/npm/[email protected]/dist/select2-bootstrap-5-theme.rtl.min.css" />

    <style>
        @media (max-width: 767px) {
            .carousel-inner .carousel-item>div {
                display: none;
            }

            .carousel-inner .carousel-item>div:first-child {
                display: block;
            }
        }

        .carousel-inner .carousel-item.active,
        .carousel-inner .carousel-item-next,
        .carousel-inner .carousel-item-prev {
            display: flex;
        }

        /* medium and up screens */
        @media (min-width: 768px) {

            .carousel-inner .carousel-item-end.active,
            .carousel-inner .carousel-item-next {
                transform: translateX(calc(100% / 7));
            }

            .carousel-inner .carousel-item-start.active,
            .carousel-inner .carousel-item-prev {
                transform: translateX(calc(-100% / 7));
            }
        }

        .carousel-inner .carousel-item-end,
        .carousel-inner .carousel-item-start {
            transform: translateX(0);
        }

        .carousel-control-prev {
            transform: translateX(-100px);
            width: 100px;
        }

        .carousel-control-next {
            transform: translateX(100px);
            width: 100px;
        }

        .carousel-item .hari-ini {
            background-color: #71dd37 !important;
        }

        .table {
            font-size: 12px !important;
        }

        .input-number {
            width: 50px;
        }
    </style>
@endpush


@push('scripts')
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/public/assets/scripts/choices.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" crossorigin="anonymous"
        referrerpolicy="no-referrer"></script>
    <script>
        //const flatpickr = require("flatpickr");
        var checkInPicker = flatpickr("#check_in", {
            enableTime: true,
            noCalendar: true,
            dateFormat: "H:i",
            time_24hr: true,
            // allowInput: true,
            // altInput: true,
            // onClose(dates, currentdatestring, picker){
            //     picker.setDate(picker.altInput.value, true, picker.config.dateFormat)
            // }
        });

        var checkOutPicker = flatpickr("#check_out", {
            enableTime: true,
            dateFormat: "Y-m-d H:i",
            time_24hr: true,
            // allowInput: true,
            // altInput: true,
            // onClose(dates, currentdatestring, picker){
            //     picker.setDate(picker.altInput.value, true, picker.config.dateFormat)
            // }
        });
        document.addEventListener('focusin', (e) => {
            if (e.target.closest(".flatpickr-calendar") !== null) {
                e.stopImmediatePropagation();
            }
        });
        // const karyawan = document.getElementById('pilih_karyawan_id');
        // const karyawanChoices = new Choices(karyawan);
        const perusahaan = document.getElementById('perusahaan_id');
        const perusahaanChoices = new Choices(perusahaan);
        const lokasiKerja = document.getElementById('lokasi_kerja_id');
        const lokasiKerjaChoices = new Choices(lokasiKerja);

        $(document).ready(function() {
            var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
            $.noConflict();
            $("#pilih_karyawan_id").select2({
                theme: 'bootstrap-5',
                ajax: {
                    url: "/ajax/pilih-karyawan",
                    type: 'POST',
                    dataType: 'json',
                    delay: 250,
                    data: function(params) {
                        return {
                            _token: CSRF_TOKEN,
                            q: params.term, // search term
                            page: params.current_page,
                            perusahaan_id: $('#perusahaan_id').val(),
                            departemen_id: $('#departemen_id').val(),
                            lokasi_kerja_id: $('#lokasi_kerja_id').val(),
                        };
                    },
                    processResults: function(data, params) {
                        params.current_page = params.current_page || 1;

                        return {
                            results: data.data,
                            pagination: {
                                more: (params.current_page * 30) < data.total
                            }
                        };
                    },
                    autoWidth: true,
                    cache: true
                },
                // placeholder: 'Search for a karyawan',
                // minimumInputLength: 1,
                templateResult: formatProduct,
                templateSelection: formatProductSelection
            })

            function formatProduct(product) {
                if (product.loading) {
                    return product.text;
                }

                var $container = $(
                    "<div class='select2-result-product clearfix'>" +
                    "<div class='select2-result-product__title'></div>" +
                    "<div class='select2-result-product__description'></div>" +
                    "</div>" +
                    "</div>" +
                    "</div>"
                );

                $container.find(".select2-result-product__title").text(product.nama);
                $container.find(".select2-result-product__description").text(product.email);

                return $container;
            }

            function formatProductSelection(product) {
                return product.nama || product.text;
            }
        });

        let items = document.querySelectorAll('.carousel .carousel-item');
        

        items.forEach((el) => {
            const minPerSlide = 7
            let next = el.nextElementSibling
            for (var i = 1; i < minPerSlide; i++) {
                if (!next) {
                    // wrap carousel by using first child
                    next = items[0]
                }
                let cloneChild = next.cloneNode(true)
                el.appendChild(cloneChild.children[0])
                next = next.nextElementSibling
            }
        });

        var form = document.querySelector('#filter-form ');
        var inputs = form.querySelectorAll('input,select');
        inputs.forEach((el) => {
            el.addEventListener('change', function() {
                form.submit();
            });
        });

        document.getElementById('simpan-absen').addEventListener('click', function() {
            let form = document.querySelector('#form-absen');
            let data = new FormData(form);
            let url = form.getAttribute('action');
            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') {
                        showToast('Berhasil', response.message, 'bg-success');

                    } else {
                        showToast('Gagal', response.message, 'bg-danger');
                    }
                } else {
                    showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
                }
            };
            xhr.send(data);
        });



        const formAbsen = document.getElementById("modalAbsenForm");
        const karaywanId = document.getElementById("karyawan_id");
        const tanggal = document.getElementById("tanggal");
        const checkIn = document.getElementById("check_in");
        const checkOut = document.getElementById("check_out");
        const keteranganCi = document.getElementById("keterangan_check_in");
        const keteranganCo = document.getElementById("keterangan_check_out");
        const statusCi = document.getElementById("status_absen_check_in");
        const statusCo = document.getElementById("status_absen_check_out");
        const selectLokasiCi = document.getElementById("lokasi_absen_id_check_in");
        const selectLokasiCo = document.getElementById("lokasi_absen_id_check_out");
        const selectUnit = document.getElementById("unit_id");
        const lembur = document.getElementById("lembur");

        var tombolHapus = document.getElementById("hapus");
        tombolHapus.addEventListener('click', function() {
            var ok = confirm(`Ingin menghapus absensi untuk tanggal ${tanggal.value} ?`);
            if (ok) {
                let form = document.querySelector('#hapusAbsen');
                if (this.dataset.id) {
                    form.setAttribute('action', "{{ url('absensi') }}/" + this.dataset.id);
                    form.submit();
                }
            }
        });


        formAbsen.addEventListener('submit', function(e) {
            e.preventDefault();

            if (document.getElementById("jadwal_kerja_id").value == "") {
                alert("Silahkan pilih jadwal kerja");
                return;
            }

            let data = new FormData(formAbsen);
            let url = formAbsen.getAttribute('action');
            let method = formAbsen.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') {
                        showToast('Berhasil', response.message, 'bg-success');
                        var tombol = document.getElementById("tombol-modalAbsen-" + response.data
                            .tanggal_absen + "-" + response.data.karyawan_id);
                        tombol.classList.remove("btn-warning");
                        tombol.classList.add("btn-primary");

                        let riwayat = response.data.riwayat_absensi;

                        let riwayatAbsensi = document.getElementById("riwayat-absensi");
                        let rowRiwayat = ``;
                        var no = 1;
                        if (riwayat) {
                            riwayat.forEach((el) => {
                                rowRiwayat += `<tr>
                                        <td>${no++}</td>
                                        <td>${el.jadwal_kerja.nama_jadwal}</td>
                                        <td>${el.jenis_absen}</td>
                                        <td>${el.waktu_absen}</td>
                                        <td>${el.lokasi_absen.nama_lokasi}</td>
                                        <td>${el.keterangan}</td>
                            </tr>`;

                            });
                            riwayatAbsensi.innerHTML = rowRiwayat;
                        }

                    } else {
                        showToast('Gagal', response.message, 'bg-danger');
                    }
                } else {
                    showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
                }
            };
            xhr.send(data);

        });

        const chekIn = document.getElementById("check_in");
        chekIn.addEventListener('change', function() {
            if (this.value != "") {
                document.getElementById("status_absen").value = "h";
                checkOutPicker.set("minDate", `${tanggal.value} ${this.value}`);
            } else {
                document.getElementById("status_absen").value = "";
                checkOutPicker.set("minDate", null);
            }


        });

        let riwayatAbsensi = document.getElementById("riwayat-absensi");

        let selectJadwal = document.getElementById("jadwal_kerja_id");

        selectJadwal.addEventListener("change", function() {
            // formAbsen.reset();
            defaultValue(this.value);
        });

        function defaultValue(jadwal_kerja_id) {
            checkIn.value = null;
            keteranganCi.value = null;
            selectLokasiCi.value = null;
            checkOut.value = null;
            keteranganCo.value = null;
            selectLokasiCo.value = null;
            var json = JSON.parse(riwayatAbsensi.dataset.riwayat);
            if (json) {
                for (let i = 0; i < json.length; i++) {
                    const j = json[i];
                    if (j.jadwal_kerja_id == jadwal_kerja_id) {
                        if (j.jenis_absen == "check-in") {
                            // checkInPicker.set("defaultHour",moment(j.waktu_absen, "hh:mm:ss").format("HH"));
                            // checkInPicker.set("defaultMinute",moment(j.waktu_absen, "hh:mm:ss").format("mm"));
                            //checkIn.disabled = true;
                            checkIn.readOnly = true;
                            checkIn.value = moment(j.waktu_absen, "hh:mm:ss").format("HH:mm");
                            keteranganCi.value = j.keterangan;
                            selectLokasiCi.value = j.lokasi_absen_id;
                            statusCi.value = j.status_waktu;
                            if (j.unit_id != null) {
                                selectUnit.value = j.unit_id;
                            }


                        } else if (j.jenis_absen == "check-out") {
                            // checkOutPicker.set("defaultDate",moment(j.waktu_absen, "hh:mm:ss").format("mm"));
                            // checkOutPicker.set("defaultHour",moment(j.waktu_absen, "hh:mm:ss").format("HH"));
                            // checkOutPicker.set("defaultMinute",j.tanggal_absen);
                            //checkOut.disabled = true;
                            checkOut.readOnly = true;
                            checkOut.value = j.tanggal_absen + " " + moment(j.waktu_absen, "hh:mm:ss").format("HH:mm");
                            keteranganCo.value = j.keterangan;
                            statusCo.value = j.status_waktu;
                            selectLokasiCo.value = j.lokasi_absen_id;
                            console.log(j.lembur);
                            lembur.checked = j.lembur;
                        }
                    }

                }
            }
        }

        const tombolModalAbsen = document.querySelectorAll('.tombol-modalAbsen');
        var absensiJson;

        tombolModalAbsen.forEach((el) => {
            el.addEventListener('click', function() {
                //ajax to get data absensi.ajax.get-detail-absen
                let karyawan_id = this.dataset.karyawan_id;
                let tgl = this.dataset.tanggal;
                let url = "{{ url('ajax/absensi') }}/" + karyawan_id + "/" + tgl;
                console.log(url);
                let xhr = new XMLHttpRequest();
                xhr.open('GET', url);
                xhr.onload = function() {
                    if (xhr.status === 200) {
                        let response = JSON.parse(xhr.responseText);

                        if (response.status === 'success') {
                            absensiJson = response.data;
                            let lokasi = absensiJson.lokasi;
                            let absen_id = absensiJson.absen_id;
                            let absensi = absensiJson.absensi;
                            let riwayat = absensiJson.riwayat_absensi;
                            let unit = absensiJson.unit;
                            let jadwal = absensiJson.jadwal;

                            formAbsen.reset();
                            karaywanId.value = karyawan_id;
                            tanggal.value = tgl;


                            riwayatAbsensi.dataset.riwayat = JSON.stringify(riwayat);

                            if (absensi) {
                                tombolHapus.dataset.id = absensi.id;
                                document.getElementById("status_absen").value = absensi.status_absen;
                            }

                            document.getElementById("modalAbsenTitle").innerHTML = "Absen " + tanggal
                                .value;
                            document.getElementById("detail").setAttribute("href",
                                `{{ url('absensi/show') }}/${karyawan_id}/${absen_id}?tanggal=${tanggal.value}`
                            );



                            let optionLokasi = `<option value="" selected>Tidak Ada Lokasi</option>`;
                            lokasi.forEach((el) => {
                                optionLokasi +=
                                    `<option value="${el.id}" >${el.nama_lokasi}</option>`;
                            });
                            selectLokasiCi.innerHTML = optionLokasi;
                            selectLokasiCo.innerHTML = optionLokasi;


                            let optionUnit = `<option value="" selected>Tidak Ada Unit</option>`;
                            unit.forEach((el) => {
                                optionUnit +=
                                    `<option value="${el.id}">${el.kode_unit}</option>`;
                            });
                            selectUnit.innerHTML = optionUnit;
                            if (jadwal.length > 0) {
                                defaultValue(jadwal[0].id);
                            }
                            let optionJadwal = ``;
                            jadwal.forEach((el) => {
                                optionJadwal +=
                                    `<option value="${el.id}" >${el.nama_jadwal}</option>`;
                            });
                            selectJadwal.innerHTML = optionJadwal;


                            riwayatAbsensi.innerHTML = "";
                            let rowRiwayat = ``;
                            var no = 1;
                            if (riwayat) {
                                riwayat.forEach((el) => {
                                    rowRiwayat += `<tr>
                                            <td>${no++}</td>
                                            <td>${el.jadwal_kerja.nama_jadwal}</td>
                                            <td>${el.jenis_absen}</td>
                                            <td>${el.waktu_absen}</td>
                                            <td>${el.lokasi_absen.nama_lokasi}</td>
                                            <td>${el.keterangan}</td>
                                        
                                        </tr>`;

                                });
                                riwayatAbsensi.innerHTML = rowRiwayat;
                            }

                            // let rowRiwayat = ``;
                            // var no = 1;
                            // if (riwayat) {
                            //     riwayat.forEach((el) => {
                            //         rowRiwayat += `<tr>
                        //                 <td>${no++}</td>
                        //                 <td>${el.jenis_absen}</td>
                        //                 <td>${el.waktu_absen}</td>
                        //                 <td>${el.lokasi_absen.nama_lokasi}</td>
                        //                 <td>${el.keterangan}</td>
                        //         </tr>`;

                            //     });
                            //     riwayatAbsensi.innerHTML = rowRiwayat;
                            // }

                            // if (absensi) {
                            //     document.getElementById("karyawan_id").value = absensi.karyawan_id;
                            //     document.getElementById("tanggal_absen").value = absensi.tanggal_absen;
                            //     document.getElementById("status_absen").value = absensi.status_absen;
                            //     document.getElementById("jadwal_kerja_id").value = absensi.jadwal_kerja_id;
                            //     document.getElementById("keterangan").value = absensi.keterangan;
                            //     document.getElementById("id").value = absensi.id;
                            //     document.getElementById("hapus").dataset.id = absensi.id;
                            //     defaultValue(absensi.jadwal_kerja_id);
                            // }
                        } else {
                            showToast('Gagal', response.message, 'bg-danger');
                        }
                    } else {
                        showToast('Gagal', 'Terjadi kesalahan', 'bg-danger');
                    }
                };
                xhr.send();



            });
        });
    </script>
@endpush

@section('content')
    <h4 class="fw-bold py-3 mb-4"><span class="text-muted fw-light">Absen /</span> Data Absensi</h4>

    <div class="card mb-3">
        {{-- <h5 class="card-header">Tanggal Absensi</h5> --}}
        <div class="card-body">
            <form action="" class="form" id="filter-form">
                <div class="row mb-4">
                    <div class="col-md-4">
                        <div class="form-group">
                            <label for="perusahaan_id">Perusahaan</label>
                            <select class="form-control" id="perusahaan_id" name="perusahaan_id">
                                <option value="0">Semua Perusahaan</option>
                                @foreach ($perusahaans as $item)
                                    <option value="{{ $item->id }}" @if (request()->perusahaan_id == $item->id) selected @endif>
                                        {{ $item->nama_perusahaan }}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label for="pilih_karyawan_id">Karyawan</label>
                            <select class="form-control" id="pilih_karyawan_id" name="karyawan_id">
                                <option value="0">Semua Karyawan</option>
                                
                            </select>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label for="lokasi_kerja_id">Lokasi Kerja</label>
                            <select class="form-control" id="lokasi_kerja_id" name="lokasi_kerja_id">
                                <option value="0">Semua Lokasi</option>
                                @foreach ($lokasiKerjas as $item)
                                    <option value="{{ $item->id }}" @if (request()->lokasi_kerja_id == $item->id) selected @endif>
                                        {{ $item->nama_lokasi }}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col">
                        <div class="form-group">
                            <label for="periode_awal">Periode Awal</label>
                            <input type="date" class="form-control" placeholder="Periode Awal..."
                                aria-label="Periode Awal" name="periode_awal" id="periode_awal"
                                value="{{ request()->periode_awal ?? date('Y-m-20', strtotime('-1 month')) }}">
                        </div>
                    </div>
                    <div class="col">
                        <div class="form-group">
                            <label for="periode_akhir">Periode Akhir</label>
                            <input type="date" class="form-control" placeholder="Periode Akhir..."
                                aria-label="Periode Akhir" name="periode_akhir" id="periode_akhir"
                                value="{{ request()->periode_akhir ?? date('Y-m-20') }}">
                        </div>
                    </div>
                    {{-- <div class="col-md-4">
                        <div class="form-group">
                            <label for="tanggal">Tanggal</label>
                            <input type="date" name="tanggal" class="form-control" id="tanggal"
                                value="{{ $tanggal }}">
                        </div>
                    </div> --}}
                </div>
                <div class="row">
                    <div class="col-md-10 mx-auto">
                        <div id="recipeCarousel" class="carousel slide" data-interval="false">
                            <div class="carousel-inner" role="listbox">
                                @php
                                    $hari = cal_days_in_month(CAL_GREGORIAN, date('m', strtotime($tanggal)), date('Y', strtotime($tanggal)));
                                    $active = false;
                                @endphp
                                @for ($i = 0; $i < $hari; $i++)
                                    <div class="carousel-item bg-primary @if (in_array((string) ($i + 1), $haris) && !$active) active @endif">
                                        <div style="width:calc(100% / 7);">
                                            <a class="card bg-transparent @if (in_array((string) ($i + 1), $haris) && !$active) active @endif @if (in_array((string) ($i + 1), $haris)) hari-ini @endif text-white text-center"
                                                style="height:70px;border-radius:0;"
                                                href="?tanggal={{ date('Y', strtotime($tanggal)) . '-' . date('m', strtotime($tanggal)) . '-' . sprintf('%02d', $i + 1) }}&perusahaan_id={{ request()->perusahaan_id }}&karyawan_id={{ request()->karyawan_id }}">

                                                <div class="card-img-overlay">
                                                    {{ date('Y', strtotime($tanggal)) . '-' . date('m', strtotime($tanggal)) . '-' . sprintf('%02d', $i + 1) }}
                                                </div>
                                            </a>
                                        </div>
                                    </div>

                                    @php
                                        if (in_array((string) ($i + 1), $haris)) {
                                            $active = true;
                                        }
                                    @endphp
                                @endfor

                            </div>
                            <a class="carousel-control-prev bg-secondary" href="#recipeCarousel" role="button"
                                data-bs-slide="prev">
                                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                            </a>
                            <a class="carousel-control-next bg-secondary" href="#recipeCarousel" role="button"
                                data-bs-slide="next">
                                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                            </a>
                        </div>
                    </div>
                </div>
            </form>

        </div>
    </div>

    <div class="card">
        @csrf
        <h5 class="card-header">Data Absensi Karyawan</h5>
        <div class="card-body">
            <div class="row mb-4">
                <div class="col-md-6">
                    <form class="form row"
                        action="?perusahaan_id=0&search_terms=&departemen_id=0&search_terms=&lokasi_kerja_id=0&search_terms=&periode_awal=2022-08-20&periode_akhir=2022-09-26">
                        @foreach (request()->all() as $name => $req)
                            <input type="hidden" name="{{ $name }}" value="{{ $req }}">
                        @endforeach
                        <div class="col">
                            <input type="text" class="form-control" placeholder="Search..." aria-label="Search"
                                name="search" value="{{ request()->search }}">
                        </div>
                        <div class="col-md-2">
                            <select name="jumlah_baris" id="jumlah_baris" class="form-control">
                                <option value="10">10</option>
                                <option value="50">50</option>
                                <option value="50">100</option>
                            </select>
                        </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" karyawan="group"
                            aria-label="Button group with nested dropdown">
                            {{-- <a href="{{ route('karyawan.create') }}" class="btn btn-primary"><i class="bx bx-plus"></i>
                            Tambah</a> --}}
                            <button type="button" id="simpan-absen" class="btn btn-success"><i class="bx bx-save"></i>
                                Simpan</button>
                        </div>
                    @endif

                </div>
            </div>
            <form action="{{ route('absensi.update-absen') }}" method="POST" id="form-absen">
                @csrf
                {{-- <input type="hidden" name="tanggal" value="{{ $tanggal }}"> --}}
                <div class="table-responsive text-nowrap">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th rowspan="2">
                                    No
                                </th>
                                <th rowspan="2">
                                    NIK
                                </th>
                                <th rowspan="2" class="karyawan">
                                    Nama
                                </th>
                                @foreach ($periods as $period)
                                    <th colspan="3">
                                        <center>{{ $period->format('Y/m/d') }}</center>
                                    </th>
                                @endforeach
                            </tr>
                            <tr>
                                @foreach ($periods as $period)
                                    <th>
                                        RIT
                                    </th>
                                    <th>
                                        HM
                                    </th>
                                    <th>
                                        Absen
                                    </th>
                                @endforeach

                            </tr>
                        </thead>
                        <tbody>
                            @foreach ($karyawans as $karyawan)
                                @php
                                    $jadwalkerja = $karyawan->jadwal_kerja;
                                    $haris = Helper::checkJadwal($karyawan, $periode_awal, $periode_akhir);

                                @endphp
                                <tr>
                                    <td>{{ $karyawans->firstItem() + $loop->index }}</td>
                                    <td>
                                        {{ $karyawan->nik }}
                                    </td>
                                    <td class="karyawan">
                                        {{ $karyawan->nama }}
                                    </td>
                                    @foreach ($periods as $key => $period)
                                        @php
                                            $absensi = $karyawan->absensi->where('tanggal_absen',$period->format('Y-m-d'))->first();
                                            // $absensi = array_reduce($absensis, function ($carry, $item) use ($period) {
                                            //     if ($item['tanggal_absen'] == $period->format('Y-m-d')) {
                                            //         $carry = $item;
                                            //     }
                                            //     return $carry;
                                            // });
                                        @endphp
                                        <td>
                                            <input type="number"
                                                name="rit[{{ $period->format('Y-m-d') }}][{{ $karyawan->id }}]"
                                                class="input-number" value="{{ @$absensi->rit ?? 0 }}">
                                        </td>
                                        <td>
                                            <input type="number"
                                                name="hm[{{ $period->format('Y-m-d') }}][{{ $karyawan->id }}]"
                                                class="input-number" value="{{ @$absensi->hm ?? 0 }}">
                                        </td>
                                        <td>
                                            @php
                                                $day_of_week = (int) $period->format('N');
                                                $day_of_month = (int) $period->format('d');
                                                $punyaJadwal = false;
                                                $izins = $karyawan->izins->toArray();
                                                $adaIzin = array_reduce($izins, function ($carry, $item) use ($period) {
                                                    if ($item['tanggal_izin'] == $period->format('Y-m-d') && $item['status'] == 'accept') {
                                                        $carry = $item;
                                                    }
                                                    return $carry;
                                                });
                                                $adaIzin = $adaIzin ? (object) $adaIzin : null;
                                                //filter array with tanggal_izin and status=accept
                                                // $adaIzin =  Helper::checkIzin($karyawan->id, $period->format('Y-m-d'));
                                                foreach ($jadwalkerja as $jadwal) {
                                                    $s = $haris[$jadwal->id][$key] ?? null;
                                                    if ($s && $s->status_kerja == 'work-day') {
                                                        $punyaJadwal = true;
                                                        break;
                                                    }
                                                    // if ($jadwal->jumlah_hari > 7) {
                                                    //     $jadwal_detail = $jadwal
                                                    //         ->jadwal_kerja_detail()
                                                    //         ->where('hari', 'Day ' . $day_of_month)
                                                    //         ->where('status_kerja', 'work-day')
                                                    //         ->count();

                                                    //     if ($jadwal_detail > 0) {
                                                    //         $punyaJadwal = true;
                                                    //     }
                                                    // } else {
                                                    //     $jadwal_detail = $jadwal
                                                    //         ->jadwal_kerja_detail()
                                                    //         ->where('hari', 'Day ' . $day_of_week)
                                                    //         ->where('status_kerja', 'work-day')
                                                    //         ->count();

                                                    //     if ($jadwal_detail > 0) {
                                                    //         $punyaJadwal = true;
                                                    //     }
                                                    // }
                                                }
                                            @endphp
                                            @if ($punyaJadwal)
                                                <button type="button"
                                                    class="btn btn-sm @if (isset($absensi)) btn-primary @else btn-warning @endif d-inline tombol-modalAbsen"
                                                    id="tombol-modalAbsen-{{ $period->format('Y-m-d') }}-{{ $karyawan->id }}"
                                                    {{-- data-absensi='{!! json_encode($absensi) !!}'
                                                    data-absen_id="{{ @$absensi->id ?? 0 }}" --}} data-karyawan_id="{{ $karyawan->id }}"
                                                    data-bs-toggle="modal" data-bs-target="#modalAbsen"
                                                    data-unit='{!! json_encode($karyawan->unit) !!}' {{-- data-lokasi='{!! json_encode($karyawan->lokasi_absen) !!}'
                                                    data-jadwal='{!! json_encode($jadwalkerja) !!}'
                                                    data-riwayat='{!! json_encode(@$absensi->riwayat_absensi) !!}' --}}
                                                    data-tanggal="{{ $period->format('Y-m-d') }}">
                                                    <i class="bx bx-time" style="font-size: 12px;"></i>
                                                </button>
                                            @elseif($adaIzin != null)
                                                <a href="{{ route('izin.edit', $adaIzin->id) }}" class="text-info"
                                                    target="_blank">{{ @$adaIzin->jenis_izin_label }}</a>
                                            @else
                                                <span class="text-danger">-</span>
                                            @endif
                                        </td>
                                    @endforeach
                                </tr>
                            @endforeach
                        </tbody>
                    </table>
                </div>
                <div class="row mt-2">
                    <div class="col">
                        {{ $karyawans->appends(request()->query())->links() }}
                    </div>
                    {{-- <div class="col-md-12">
                        <ul>
                            <li>
                                <div class="badge bg-warning" style="width:10px;height:10px;">
                                    <p></p>
                                </div> Belum Di Setujui
                            </li>
                            <li>
                                <div class="badge bg-danger" style="width:10px;height:10px;">
                                    <p></p>
                                </div> Tidak Ada Jadwal
                            </li>
                        </ul>
                    </div> --}}
                </div>


            </form>
        </div>
    </div>

    <div class="modal fade" id="modalAbsen" tabindex="-1" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
            <form method="POST" id="hapusAbsen" action="{{ url('absensi') }}">
                @csrf
                @method('DELETE')
            </form>
            <form class="modal-content" method="POST" id="modalAbsenForm" action="{{ route('absensi.store') }}">
                <input type="hidden" name="tanggal" id="tanggal">
                <input type="hidden" name="karyawan_id" id="karyawan_id">
                @csrf
                <div class="modal-header">
                    <h5 class="modal-title" id="modalAbsenTitle">Absen</h5>
                    <a href="" title="detail" id="detail" class="btn btn-sm btn-warning mx-3"><i
                            class="tf-icon bx bxs-detail "></i> Detail</a>
                    <button href="" title="hapus" type="button" id="hapus"
                        class="btn btn-sm btn-danger mx-3"><i class="tf-icon bx bxs-trash "></i> Hapus</button>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <div class="row">
                        <div class="col">
                            <div class="form-group">
                                <label for="status_absen" class="form-label">Status</label>
                                <select name="status_absen" class="form-control" id="status_absen">
                                    <option value="">Tidak Ada Status</option>
                                    @foreach ($status as $key => $item)
                                        <option value="{{ $key }}">{{ $item }}</option>
                                    @endforeach
                                </select>
                            </div>
                        </div>
                        <div class="col">
                            <div class="form-group">
                                <label for="unit_id" class="form-label">Unit</label>
                                <select name="unit_id" class="form-control" id="unit_id">
                                    <option value="">Tidak Ada Unit</option>

                                </select>
                            </div>
                        </div>
                        <div class="col">
                            <div class="form-group">
                                <label for="jadwal_kerja_id" class="form-label">Jadwal Kerja</label>
                                <select name="jadwal_kerja_id" class="form-control" id="jadwal_kerja_id">

                                </select>
                            </div>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col-md-6">
                            <h5>Check In</h5>
                        </div>
                        <div class="col-md-6">
                            <h5>Check Out</h5>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col-md-6">

                            <div class="row mb-3">
                                <div class="col-md-6">
                                    <label for="check_in" class="form-label">Check In</label>
                                    <input type="text" class="form-control" name="check_in" id="check_in">
                                </div>

                                <div class="col-md-6">
                                    <label for="status_absen_check_in" class="form-label">Status Waktu</label>
                                    <select name="status_absen_check_in" class="form-control" id="status_absen_check_in">
                                        @foreach (['on-time', 'late', 'too-early'] as $item)
                                            <option value="{{ $item }}">{{ $item }}</option>
                                        @endforeach

                                    </select>
                                </div>

                            </div>


                        </div>
                        <div class="col-md-6">

                            <div class="row mb-3">
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <label for="check_out" class="form-label">Check Out</label>
                                        <input type="text" class="form-control" name="check_out" id="check_out">
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <label for="status_absen_check_out" class="form-label">Status Waktu</label>
                                    <select name="status_absen_check_out" class="form-control"
                                        id="status_absen_check_out">
                                        @foreach (['on-time', 'late', 'too-early'] as $item)
                                            <option value="{{ $item }}">{{ $item }}</option>
                                        @endforeach

                                    </select>
                                </div>

                            </div>


                        </div>
                    </div>
                    <div class="row">

                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="keterangan_check_in" class="form-label">Keterangan</label>
                                <input type="text" id="keterangan_check_in" class="form-control"
                                    name="keterangan_check_in" placeholder="Keterangan Check In..." />
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-check form-switch" id="pilihan-lembur">
                                <br>
                                <label class="form-check-label mx-2" for="lembur">Checkout Lembur?</label>
                                <input class="form-check-input" style="width: 3rem;height: 1.5rem;" type="checkbox"
                                    name="lembur" value="true" id="lembur">
                                <br>

                            </div>
                        </div>
                    </div>
                    <div class="row">

                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="lokasi_absen_id_check_in" class="form-label">Lokasi</label>
                                <select name="lokasi_absen_id_check_in" class="form-control"
                                    id="lokasi_absen_id_check_in">
                                    <option value="">Tidak Ada Lokasi</option>

                                </select>

                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="lokasi_absen_id_check_out" class="form-label">Lokasi</label>
                                <select name="lokasi_absen_id_check_out" class="form-control"
                                    id="lokasi_absen_id_check_out">
                                    <option value="">Tidak Ada Lokasi</option>

                                </select>
                            </div>

                        </div>

                    </div>

                    <div class="row">
                        <div class="col-md-6">

                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <label for="keterangan_check_out" class="form-label">Keterangan</label>
                                <input type="text" id="keterangan_check_out" class="form-control"
                                    name="keterangan_check_out" placeholder="Keterangan Check Out..." />
                            </div>
                        </div>
                    </div>
                    <div class="row mt-3">
                        <div class="col">
                            <h5>Riwayat Absen</h5>
                        </div>
                    </div>
                    <div class="row ">
                        <div class="col">
                            <table class="table">

                                <thead>
                                    <tr>
                                        <th>
                                            No
                                        </th>
                                        <th>
                                            Jadwal Kerja
                                        </th>
                                        <th>
                                            Jenis Absen
                                        </th>
                                        <th>
                                            Waktu Absen
                                        </th>
                                        <th>
                                            Lokasi
                                        </th>
                                        <th>
                                            Keterangan
                                        </th>
                                    </tr>
                                </thead>
                                <tbody id="riwayat-absensi">

                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">
                        Close
                    </button>
                    <button type="submit" class="btn btn-primary">Save changes</button>
                </div>
            </form>
        </div>
    </div>
@endsection

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]