<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Opd;
use App\Models\Kpa;
use App\Models\User;
use App\Models\SumberDana;
use App\Models\Program;
use App\Models\Kegiatan;
use App\Models\SubKegiatan;
use App\Models\Proker;
use App\Models\ProkerProgram;
use App\Models\ProkerKegiatan;
use App\Models\ProkerSubKegiatan;
use App\Models\RincianKegiatan;
use PDF;
use DB,Str,File,Auth;
use App\Helpers\HelperString;
use \Carbon\Carbon;
class DidController extends Controller
{
public function __construct(){
$this->middleware('role:admin|admin-opd|monev');
}
public function index(Request $request)
{
if(Auth::user()->hasRole('admin-opd') or Auth::user()->hasRole('admin-PPTK|monev') and Auth::user()->opd_id !== null){
$opd = Opd::where('id',Auth::user()->opd_id)->orderBy('kode', "ASC")->get();
$prokers = Proker::select('id','opd_id','tahun')
->where('opd_id',Auth::user()->opd_id)
->whereHas('RincianKegiatan', function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}] ,'pagu')
->withSum(['RealisasiRincianKegiatan as nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}] , 'realisasi')
->withSum(['RealisasiKeuangan as realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->whereHas('opd')
->with('opd')
->with(['ProkerProgram' => function ($query) use($request) {
$query->select('id','program_id','proker_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as program_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as program_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as program_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as program_volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as program_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as program_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('program')
->with(['ProkerKegiatan' => function ($query) use($request) {
$query->select('id','proker_program_id','kegiatan_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as kegiatan_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as kegiatan_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as kegiatan_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as kegiatan_volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as kegiatan_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as kegiatan_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('kegiatan')
->with(['ProkerSubKegiatan' => function ($query) use($request) {
$query->select('id','proker_kegiatan_id','sub_kegiatan_id','kpa_id','user_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as sub_kegiatan_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as sub_kegiatan_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as sub_kegiatan_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as sub_kegiatan_volume_sum' => function($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}], 'volume')
->withSum(['RealisasiFisik as sub_kegiatan_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as sub_kegiatan_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('subKegiatan','Kpa','Pptk')
->with(['RincianKegiatan' => function ($query) use($request) {
$query->select('id','proker_sub_kegiatan_id','volume','pagu', 'uraian', 'kode_rekening')
->where('rincian_kegiatans.sumber_dana_id', 5)
->withSum(['RealisasiFisik as rincian_kegiatan_realisasi_fisik_sum' => function($query) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
}], 'realisasi')
->with([
'RealisasiRincianKegiatan.realisasiFisik' => function ($query) use ($request) {
$query->when($request->filled(['tanggal_awal', 'tanggal_akhir']), function ($qq) use ($request) {
$qq->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
});
},
'RealisasiRincianKegiatan.realisasiKeuangan' => function ($query) use ($request) {
$query->when($request->filled(['tanggal_awal', 'tanggal_akhir']), function ($qq) use ($request) {
$qq->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
});
},
'RealisasiRincianKegiatan.permasalahanTindakLanjut' => function ($q) {
$q->select('permasalahan','tindaklanjut');
},
]);
}]);
}]);
}]);
}])
->get()
->sortBy(function ($proker) {
return $proker->opd->kode;
});
}else{
$opd = Opd::orderBy('kode', "ASC")->get();
$prokers = Proker::select('id','opd_id','tahun')
->when($request->has('pd') and $request->pd != "" and $request->pd != null and $request->pd != 'all', function ($query) use ($request) {
$query->whereHas('Opd', fn($q) => $q->where('opd_id', $request->pd));
})
->whereHas('RincianKegiatan', function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}] ,'pagu')
->withSum(['RealisasiRincianKegiatan as nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}] , 'realisasi')
->withSum(['RealisasiKeuangan as realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->whereHas('opd')
->with('opd')
->with(['ProkerProgram' => function ($query) use($request) {
$query->select('id','program_id','proker_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as program_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as program_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as program_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as program_volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as program_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as program_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('program')
->with(['ProkerKegiatan' => function ($query) use($request) {
$query->select('id','proker_program_id','kegiatan_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as kegiatan_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as kegiatan_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as kegiatan_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as kegiatan_volume_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'volume')
->withSum(['RealisasiFisik as kegiatan_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as kegiatan_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('kegiatan')
->with(['ProkerSubKegiatan' => function ($query) use($request) {
$query->select('id','proker_kegiatan_id','sub_kegiatan_id','kpa_id','user_id')
->whereHas('RincianKegiatan', function ($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
})
->withSum(['RincianKegiatan as sub_kegiatan_pagu_sum' => function($query){
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}],'pagu')
->withSum(['RealisasiRincianKegiatan as sub_kegiatan_nilai_kontrak_sum' => function ($query) {
$query->whereHas('RincianKegiatan', function($q){
$q->where('rincian_kegiatans.sumber_dana_id', 5);
})->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}],'nilai_kontrak')
->withSum(['RincianKegiatan as sub_kegiatan_pagu_berjalan_sum' => function ($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5)->whereHas('RealisasiKeuangan')->orWhereHas('RealisasiFisik');
}], 'pagu')
->withSum(['RincianKegiatan as sub_kegiatan_volume_sum' => function($query) {
$query->where('rincian_kegiatans.sumber_dana_id', 5);
}], 'volume')
->withSum(['RealisasiFisik as sub_kegiatan_realisasi_fisik_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->withSum(['RealisasiKeuangan as sub_kegiatan_realisasi_keuangan_sum' => function($query) use($request) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) {
$query->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
}
}], 'realisasi')
->with('subKegiatan','Kpa','Pptk')
->with(['RincianKegiatan' => function ($query) use($request) {
$query->select('id','proker_sub_kegiatan_id','volume','pagu', 'uraian', 'kode_rekening')
->where('rincian_kegiatans.sumber_dana_id', 5)
->withSum(['RealisasiFisik as rincian_kegiatan_realisasi_fisik_sum' => function($query) {
$query->whereHas('RincianKegiatan', function($q) {
$q->where('rincian_kegiatans.sumber_dana_id', 5);
});
}], 'realisasi')
->with([
'RealisasiRincianKegiatan.realisasiFisik' => function ($query) use ($request) {
$query->when($request->filled(['tanggal_awal', 'tanggal_akhir']), function ($qq) use ($request) {
$qq->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
});
},
'RealisasiRincianKegiatan.realisasiKeuangan' => function ($query) use ($request) {
$query->when($request->filled(['tanggal_awal', 'tanggal_akhir']), function ($qq) use ($request) {
$qq->whereBetween('tanggal_realisasi', [$request->tanggal_awal, $request->tanggal_akhir]);
});
},
'RealisasiRincianKegiatan.permasalahanTindakLanjut' => function ($q) {
$q->select('permasalahan','tindaklanjut');
},
]);
}]);
}]);
}]);
}])
->get()
->sortBy(function ($proker) {
return $proker->opd->kode;
});
}
if ($request->has('printpdf')) {
$file_name = Str::replace(' ','_',Str::replace(':','_',"resume_did_pengunduhan_".Carbon::now()->format('Y-m-d H:i:s').".pdf"));
$pdf = PDF::loadview('resume.template_laporan_resume_did_pdf', compact('prokers', 'request'))
->setOptions(['defaultfont' => 'sans-serif']);
$pdf->setPaper('A4', 'landscape');
return $pdf->download($file_name);
}
// $getOpd = $request->get('pd', null);
// $getTahun = $request->get('tahun', '2022');
// $getBulan = $request->get('month');
$helper = new HelperString;
$list_year = (object) collect($helper->listYear())->reverse();
$list_month = (object) collect($helper->listMonth());
return view("resume.did", compact('prokers','opd','list_year','list_month', 'request'));
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]