TIF_E41211041/app/Repositories/Api/JadwalApiRepository.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;
}
}