<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class MatriksRkl extends Model
{
use HasFactory;
protected $guarded = [];
public static function boot() {
parent::boot();
static::deleting(function($model) {
$model->tahapan_matriks_rkl()->delete();
});
}
public function tahapan_matriks_rkl()
{
return $this->hasMany(TahapanMatriksRkl::class);
}
public function dokumen_izin()
{
return $this->belongsTo(DokumenIzin::class);
}
public function getStatusAttribute()
{
$status = "verifikasi";
foreach ($this->tahapan_matriks_rkl as $tmk) {
foreach ($tmk->kegiatan_matriks_rkl as $kmk) {
foreach ($kmk->detail_kegiatan_matriks_rkl as $dkm) {
if($dkm->status == "pending"){
$status = "pending";
}
}
}
}
return $status;
}
public function getSelesaiAttribute()
{
foreach ($this->tahapan_matriks_rkl as $tmk) {
foreach ($tmk->kegiatan_matriks_rkl as $kmk) {
foreach ($kmk->detail_kegiatan_matriks_rkl as $dkm) {
if(!$dkm->pelaksanaan){
return false;
} else {
$count_verifikator = [];
foreach ($dkm->pelaksanaans as $pelaksanaan) {
if($pelaksanaan->status == "terima dengan perbaikan"){
foreach ($pelaksanaan->verifikasis as $verifikasi) {
if($verifikasi->verifikatorable_id){
if(!isset($count_verifikator[$verifikasi->verifikatorable_id])){
$count_verifikator[$verifikasi->verifikatorable_id] = 1;
} else {
$count_verifikator[$verifikasi->verifikatorable_id] += 1;
}
}
}
}
}
foreach ($count_verifikator as $c) {
if($c < 3){
return false;
}
}
}
}
}
}
return true;
}
public function getStatusPelaksanaanAttribute()
{
foreach ($this->tahapan_matriks_rkl as $tmk) {
foreach ($tmk->kegiatan_matriks_rkl as $kmk) {
foreach ($kmk->detail_kegiatan_matriks_rkl as $dkm) {
if(!$dkm->pelaksanaan){
return "pending";
}
if($dkm->pelaksanaan->status == "pending"){
return "pending";
}
if($dkm->pelaksanaan->status == "terima dengan perbaikan"){
return "terima dengan perbaikan";
}
}
}
}
return "terima tanpa perbaikan";
}
public function pelaporan_matriks_rkls()
{
return $this->hasMany(PelaporanMatriksRkl::class);
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]