<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\LazyCollection;
class ProkerKegiatan extends Model
{
use HasFactory;
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
use \Znck\Eloquent\Traits\BelongsToThrough;
protected $guarded = [];
public function ProkerProgram(){
return $this->belongsTo(ProkerProgram::class,'proker_program_id');
}
public function Kegiatan(){
return $this->belongsTo(Kegiatan::class);
}
public function ProkerSubKegiatan(){
return $this->hasMany(ProkerSubKegiatan::class);
}
public function RincianKegiatan()
{
return $this->hasManyThrough(RincianKegiatan::class, ProkerSubKegiatan::class);
}
public function RealisasiRincianKegiatan(){
return $this->hasManyDeep(RealisasiRincianKegiatan::class, [ProkerSubKegiatan::class, RincianKegiatan::class]);
}
public function RealisasiFisik(){
return $this->hasManyDeep(RealisasiFisik::class, [ProkerSubKegiatan::class, RincianKegiatan::class, RealisasiRincianKegiatan::class]);
}
public function RealisasiKeuangan(){
return $this->hasManyDeep(RealisasiKeuangan::class, [ProkerSubKegiatan::class, RincianKegiatan::class, RealisasiRincianKegiatan::class]);
}
public function Opd(){
return $this->belongsToThrough(Opd::class, [Proker::class, ProkerProgram::class]);
}
public function getPersentaseFisikAttribute(){
return ($this->ProkerSubKegiatan->map(function($item,$key){
return ($item->PersentaseFisik);
})->sum());
}
public function getAnggaranAttribute(){
$result = 0;
foreach ($this->ProkerSubKegiatan as $data) {
$result += $data->anggaran;
}
return $result;
}
public function getFisikAttribute(){
$result = 0;
foreach ($this->ProkerSubKegiatan as $data) {
$result += $data->fisik;
}
return $result;
}
public function getKeuanganAttribute(){
$result = 0;
foreach ($this->ProkerSubKegiatan as $data) {
$result += $data->keuangan;
}
return $result;
}
public function getKontrakAttribute(){
$result = 0;
foreach ($this->ProkerSubKegiatan as $data) {
$result += $data->kontrak;
}
return $result;
}
public function getPercentFisikAttribute(){
return ($this->ProkerSubKegiatan->map(function($item,$key){
return ($item->percentfisik);
})->sum());
}
public function getPaguBerjalanAttribute(){
return $this->ProkerSubKegiatan->map(function($item,$key){
return $item->paguberjalan;
})->filter()->sum();
}
public function getCustomNilaiKontrakAttribute(){
return $this->ProkerSubKegiatan->map(function($item,$key){
return $item->customnilaikontrak;
})->filter()->sum();
}
public function getPaguBelumBerjalanAttribute(){
return $this->ProkerSubKegiatan->map(function($item,$key){
return $item->pagubelumberjalan;
})->filter()->sum();
}
public function getVolumeAttribute(){
return $this->ProkerSubKegiatan->sum('volume');
}
public function getTkdnAkumulasiAttribute()
{
return $this->ProkerSubKegiatan->sum('TkdnAkumulasi');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]