belongsTo('App\Model\TemplateProgram', 'id_template_program'); } public function templateProgramDetail(){ return $this->belongsTo('App\Model\TemplateProgramDetail', 'id_template_program_detail'); } public function tahunProgram(){ return $this->belongsTo('App\Model\TahunProgram', 'id_tahun_program'); } public function tahunProgramDetailUpt(){ return $this->hasMany('App\Model\TahunProgramDetailUpt', 'id_tahun_program_detail'); } public function metadataProgram(){ return $this->hasMany('App\Model\MetadataProgram', 'id_tb_tahun_program_detail'); } /** * @return mixed */ public function getTotalActiveUptAttribute() { $total = 0; if(!empty($this->metadataProgram)){ $total = $this->metadataProgram->unique('id_upt')->count(); } return $total; } /** * @return mixed */ public function getTotalPeriodeActiveAttribute() { $total_periode = 0; if(!empty($this->tahunProgram)){ $total_periode = MetadataProgram::where('id_tb_tahun_program_detail',$this->id)->where('id_upt',Auth::user()->upt); $total_periode = $total_periode->count(); } return $total_periode; } /** * @return mixed */ public function getTotalPeriodeAttribute() { $total_periode = 0; if(!empty($this->tahunProgram)){ $total_periode = TahunProgramDetail::where('id_template_program',$this->id_template_program) ->where('id_tahun_program',$this->id_tahun_program); $total_periode = $total_periode->count(); } return $total_periode; } /** * @return mixed */ public function getTotalTargetAttribute() { $target = 0; if(!empty($this->tahunProgramDetailUpt)){ $getAkses = !empty(Auth::user())?Role::where('id',Auth::user()->role_id)->value('akses'):[]; if(!empty($getAkses) && $getAkses=='administrator'){ $target = $this->tahunProgramDetailUpt->sum('target'); $jml_upt = $this->tahunProgramDetailUpt->unique('id_upt')->count(); $target = !empty($jml_upt)?($target/$jml_upt):$target; }else{ $target = $this->tahunProgramDetailUpt->where('id_upt',Auth::user()->upt)->sum('target'); } } return $target; } /** * @return mixed */ public function getTargetNextPeriodeAttribute() { $target = 0; $active_periode = $this->getTotalPeriodeActiveAttribute(); $next_periode = ($active_periode+1); $tahunProgramDetailUpt = $this->tahunProgramDetailUpt->where('id_upt',Auth::user()->upt)->where('periode',$next_periode)->first(); if(!empty($tahunProgramDetailUpt)){ $target = $tahunProgramDetailUpt->target; } return $target; } }