@extends('layouts.app')
@section('content')
<h4 class="fw-bold py-3 mb-4"><span class="text-muted fw-light">Master Data /</span> Data Kalender Jadwal</h4>
<div class="card">
<h5 class="card-header">
<div class="row">
<div class="col-md-4">
Data Kalender Jadwal
</div>
<div class="col text-end">
@if ($akses['tambah'])
<div class="btn-group float-md-right" role="group" aria-label="Button group with nested dropdown">
<a href="{{ route('kalender-jadwal.create') }}" class="btn btn-primary"><i
class="bx bx-import"></i>
Import</a>
</div>
@endif
</div>
</div>
</h5>
<div class="card-body">
<form class="form row mb-4" action="">
<div class="col-md-12">
<div class="row mb-2">
<div class="col-md-3">
<div class="form-group">
<label for="">Cari</label>
<input type="text" class="form-control" placeholder="Search..." aria-label="Search"
name="search" value="{{ request()->search }}">
</div>
</div>
<div class="col-md-3">
<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-3">
<div class="form-group">
<label for="departemen_id">Departemen</label>
<select class="form-control" id="departemen_id" name="departemen_id">
<option value="0">Semua Departemen</option>
@foreach ($departemens as $departemen)
<option value="{{ $departemen->id }}"
@if (request()->departemen_id == $departemen->id) selected @endif>
{{ $departemen->nama_departemen }}</option>
@endforeach
</select>
</div>
</div>
<div class="col-md-3">
<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 mb-2">
<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') }}">
</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', strtotime('+1 month')) }}">
</div>
</div>
</div>
<div class="row">
<div class="col">
<button class="btn btn-secondary" name="filter" value="true">Search</button>
</div>
<div class="col">
<button class="btn btn-success" name="export" value="true">Export</button>
</div>
</div>
</div>
</form>
<form action="{{ route('kalender-jadwal.update-jadwal', request()->all()) }}" class="form" method="POST">
@csrf
<div class="table-responsive text-nowrap">
<table class="table table-striped">
<thead>
<tr>
<th>No</th>
<th>NIK</th>
<th class="karyawan">Nama</th>
<th>Departemen</th>
@foreach ($periods as $period)
<th>
{{ $period->format('Y/m/d') }}
</th>
@endforeach
</tr>
</thead>
<tbody>
@foreach ($karyawans as $no => $karyawan)
@php
// $kalenderTanggals = $karyawan->getKalenderJadwalPeriode([$periode_awal,$periode_akhir]);
$periode = [$periode_awal, $periode_akhir];
$kalenderTanggals = [];
$periode_awal = $periode[0] ?? date('Y-m-d', strtotime('-1 week'));
$periode_akhir = $periode[1] ?? date('Y-m-d');
$begin = new DateTime($periode_awal);
$end = new DateTime($periode_akhir);
$end = $end->modify('+1 day');
$periods = new DatePeriod($begin, new DateInterval('P1D'), $end);
// $kalenders = $karyawan->kalender_jadwal()->whereBetween('tanggal', [$periode_awal, $periode_akhir])->orderBy('created_at','desc')->pluck('status', 'tanggal');
// $kArr = $karyawan->kalender_jadwal->pluck('status','tanggal')->sortBy('updated_at')->reverse()->toArray();
$kArr = array_reduce(
$karyawans->kalender_jadwal->sortBy('updated_at')->reverse()->toArray(),
function ($carry, $item) {
return $carry + [$item['tanggal'] => $item['status']];
},
[],
);
//sort by ['created_at' => 'desc']
// usort($kArr, function ($a, $b) {
// return strtotime($a['updated_at']) - strtotime($b['updated_at']);
// });
// $kalenders = array_reduce($kArr, function ($carry, $item) {
// $carry[$item['tanggal']] = $item['status'];
// return $carry;
// }, []);
// $kalenders = array_map(function($carry) {
// return [
// $carry['tanggal'] => $carry['status'],
// ];
// },$kArr);
$datas = [];
$haris = Helper::checkJadwal($karyawan, $periode_awal, $periode_akhir);
$jadwalkerja = $karyawan->jadwal_kerja;
foreach ($periods as $key => $periode) {
if (isset($kArr[$periode->format('Y-m-d')])) {
$kalenderTanggals[$periode->format('Y-m-d')] =
@$kArr[$periode->format('Y-m-d')] ?? 'na';
} else {
foreach ($jadwalkerja as $jadwal) {
$s = $haris[$jadwal->id][$key] ?? null;
if ($s) {
if ($s->status_kerja == 'work-day') {
$kalenderTanggals[$periode->format('Y-m-d')] = 'work';
break;
} else {
$kalenderTanggals[$periode->format('Y-m-d')] = 'off';
}
}
}
}
}
@endphp
<tr>
<td>{{ $karyawans->firstItem() + $no }}</td>
<td>{{ $karyawan->nik }}</td>
<td class="karyawan">{{ $karyawan->nama }}</td>
<td>{{ @$karyawan->departemen->nama_departemen }}</td>
@foreach ($periods as $period)
<td data-value="{{ @$kalenderTanggals[$period->format('Y-m-d')] ?? '-' }}"
data-k="{{ @$kArr[$periode->format('Y-m-d')] ?? 'na' }}">
<select name="status[{{ $karyawan->id }}][{{ $period->format('Y-m-d') }}]"
id="status-{{ $karyawan->id }}-{{ $period->format('Y-m-d') }}">
<option value="na" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'na') selected @endif>NA
</option>
<option value="work" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'work') selected @endif>
Work</option>
<option value="off" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'off') selected @endif>Off
</option>
<option value="cuti" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'cuti') selected @endif>
Cuti Tahunan</option>
<option value="fb" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'fb') selected @endif>
Cuti (FB)</option>
<option value="sakit" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'sakit') selected @endif>
Sakit</option>
<option value="izin" @if (@$kalenderTanggals[$period->format('Y-m-d')] == 'izin') selected @endif>
Izin</option>
</select>
</td>
@endforeach
</tr>
@endforeach
</tbody>
<tfoot>
<tr>
<td colspan="{{ 4 + iterator_count($periods) }}">
{{ $karyawans->appends(request()->query())->links() }}
</td>
</tr>
</tfoot>
</table>
</div>
<button type="submit" class="btn btn-success"><i class='bx bx-save'></i> Simpan</button>
</form>
</div>
</div>
@endsection
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]