133 lines
4.5 KiB
PHP
133 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories\Api;
|
|
|
|
use App\Models\Absensi;
|
|
use App\Models\Jadwal;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Support\Str;
|
|
|
|
/**
|
|
* Class JadwalApiRepository.
|
|
*/
|
|
class JadwalApiRepository
|
|
{
|
|
protected $model;
|
|
|
|
public function __construct(Jadwal $jadwal)
|
|
{
|
|
$this->model = $jadwal;
|
|
}
|
|
|
|
public function getAll($gol, $smst, $kdProdi)
|
|
{
|
|
$jadwal = $this->model
|
|
->where(function ($query) use ($gol, $smst, $kdProdi) {
|
|
$query->where("kode_prodi", $kdProdi)
|
|
->where('semester', $smst)
|
|
->where('golongan', $gol);
|
|
})
|
|
->with('matkul.dosen')
|
|
->with('ruangan.jurusan')
|
|
->orderByRaw("FIELD(hari, 'senin','selasa','rabu','kamis','jumat','sabtu')")
|
|
->get()
|
|
->makeHidden(['created_at', 'updated_at'])
|
|
->each(function ($item) {
|
|
$item->matkul->makeHidden(['created_at', 'updated_at']);
|
|
$item->matkul->dosen->makeHidden(['created_at', 'updated_at']);
|
|
$item->ruangan->makeHidden(['created_at', 'updated_at']);
|
|
$item->ruangan->jurusan->makeHidden(['created_at', 'updated_at']);
|
|
});
|
|
|
|
return $jadwal;
|
|
}
|
|
|
|
public function getAllDay($gol, $smst, $kdProdi)
|
|
{
|
|
Carbon::setLocale('id');
|
|
$hariIni = Str::lower(Carbon::now()->translatedFormat('l'));
|
|
$tanggalSekarang = Carbon::now()->toDateString();
|
|
|
|
$jadwal = $this->model
|
|
->where(function ($query) use ($gol, $smst, $kdProdi, $hariIni) {
|
|
$query->where("kode_prodi", $kdProdi)
|
|
->where('semester', $smst)
|
|
->where('golongan', $gol)
|
|
->where('hari', $hariIni);
|
|
})
|
|
->with([
|
|
'matkul.dosen',
|
|
'ruangan.jurusan',
|
|
'absensi',
|
|
])
|
|
->orderBy('jam_masuk', 'asc')
|
|
->get()
|
|
->makeHidden(['created_at', 'updated_at'])
|
|
->each(function ($item) use ($tanggalSekarang) {
|
|
$item->matkul->makeHidden(['created_at', 'updated_at']);
|
|
$item->matkul->dosen->makeHidden(['created_at', 'updated_at']);
|
|
$item->ruangan->makeHidden(['created_at', 'updated_at']);
|
|
$item->ruangan->jurusan->makeHidden(['created_at', 'updated_at']);
|
|
if ($item->absensi) {
|
|
$item->absensi->makeHidden(['created_at', 'updated_at']);
|
|
if ($item->absensi->tanggal != $tanggalSekarang) {
|
|
$item->setRelation('absensi', null);
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
return $jadwal;
|
|
}
|
|
|
|
public function getNow($gol, $smst, $kdProdi)
|
|
{
|
|
Carbon::setLocale('id');
|
|
$hariIni = Str::lower(Carbon::now()->translatedFormat('l'));
|
|
$waktuSekarang = Carbon::now()->format('H:i');
|
|
$tanggalSekarang = Carbon::now()->toDateString();
|
|
$jadwal = $this->model
|
|
->where(function ($query) use ($gol, $smst, $kdProdi, $hariIni, $waktuSekarang) {
|
|
$query->where("kode_prodi", $kdProdi)
|
|
->where('semester', $smst)
|
|
->where('golongan', $gol)
|
|
->where('hari', $hariIni)
|
|
->whereTime('jam_masuk', '<=', $waktuSekarang)
|
|
->whereTime('jam_selesai', '>=', $waktuSekarang);
|
|
})
|
|
->with('matkul.dosen')
|
|
->with('ruangan.jurusan')
|
|
->with('absensi')
|
|
->first();
|
|
|
|
if ($jadwal) {
|
|
$jadwal->makeHidden(['created_at', 'updated_at']);
|
|
if ($jadwal->matkul) {
|
|
$jadwal->matkul->makeHidden(['created_at', 'updated_at']);
|
|
|
|
if ($jadwal->matkul->dosen) {
|
|
$jadwal->matkul->dosen->makeHidden(['created_at', 'updated_at']);
|
|
}
|
|
}
|
|
if ($jadwal->ruangan) {
|
|
$jadwal->ruangan->makeHidden(['created_at', 'updated_at']);
|
|
|
|
if ($jadwal->ruangan->jurusan) {
|
|
$jadwal->ruangan->jurusan->makeHidden(['created_at', 'updated_at']);
|
|
}
|
|
}
|
|
|
|
if ($jadwal->absensi) {
|
|
$jadwal->absensi->makeHidden(['created_at', 'updated_at']);
|
|
if ($jadwal->absensi->tanggal != $tanggalSekarang) {
|
|
$jadwal->setRelation('absensi', null);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return $jadwal;
|
|
}
|
|
}
|