<?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 ProkerProgram extends Model
{
use HasFactory;
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
use \Znck\Eloquent\Traits\BelongsToThrough;
protected $guarded = [];
protected $table = 'proker_programs';
protected $fillable = ['proker_id','program_id'];
public function Proker(){
return $this->belongsTo(Proker::class);
}
public function Program(){
return $this->belongsTo(Program::class);
}
public function ProkerKegiatan(){
return $this->hasMany(ProkerKegiatan::class);
}
public function ProkerSubKegiatan(){
return $this->hasManyThrough(ProkerSubKegiatan::class, ProkerKegiatan::class);
}
public function RincianKegiatan(){
return $this->hasManyDeep(RincianKegiatan::class, [ProkerKegiatan::class, ProkerSubKegiatan::class]);
}
public function RealisasiRincianKegiatan(){
return $this->hasManyDeep(RealisasiRincianKegiatan::class, [ProkerKegiatan::class, ProkerSubKegiatan::class, RincianKegiatan::class]);
}
public function RealisasiFisik(){
return $this->hasManyDeep(RealisasiFisik::class, [ProkerKegiatan::class, ProkerSubKegiatan::class, RincianKegiatan::class, RealisasiRincianKegiatan::class]);
}
public function RealisasiKeuangan(){
return $this->hasManyDeep(RealisasiKeuangan::class, [ProkerKegiatan::class, ProkerSubKegiatan::class, RincianKegiatan::class, RealisasiRincianKegiatan::class]);
}
public function Opd(){
return $this->belongsToThrough(Opd::class, [Proker::class]);
}
public function getPersentaseFisikAttribute(){
return ($this->ProkerKegiatan->map(function($item,$key){
return ($item->PersentaseFisik);
})->sum());
}
public function getAnggaranAttribute(){
$result = 0;
foreach ($this->ProkerKegiatan as $data) {
$result += $data->anggaran;
}
return $result;
}
public function getFisikAttribute(){
$result = 0;
foreach ($this->ProkerKegiatan as $data) {
$result += $data->fisik;
}
return $result;
}
public function getKeuanganAttribute(){
$result = 0;
foreach ($this->ProkerKegiatan as $data) {
$result += $data->keuangan;
}
return $result;
}
public function getKontrakAttribute(){
$result = 0;
foreach ($this->ProkerKegiatan as $data) {
$result += $data->kontrak;
}
return $result;
}
public function prokersKegiatan(){
return $this->belongsToMany(ProkerKegiatan::class,'proker_kegiatans','proker_program_id','kegiatan_id');
}
public function getPercentFisikAttribute(){
return ($this->ProkerKegiatan->map(function($item,$key){
return ($item->percentfisik);
})->sum());
}
public function getPaguBerjalanAttribute(){
return $this->ProkerKegiatan->map(function($item,$key){
return $item->paguberjalan;
})->filter()->sum();
}
public function getCustomNilaiKontrakAttribute(){
return $this->ProkerKegiatan->map(function($item,$key){
return $item->customnilaikontrak;
})->filter()->sum();
}
public function getPaguBelumBerjalanAttribute(){
return $this->ProkerKegiatan->map(function($item,$key){
return $item->pagubelumberjalan;
})->filter()->sum();
}
public function getVolumeAttribute(){
return $this->ProkerKegiatan->sum('volume');
}
public function getTkdnAkumulasiAttribute()
{
return $this->ProkerKegiatan->sum('TkdnAkumulasi');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]