Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/e-tepian.aplikasipos.info/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/public_html/e-tepian.aplikasipos.info/app/Http/Controllers/PadController.php

<?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 App\Exports\ResumePad;

use PDF;
use DB,Str,File,Auth;
use App\Helpers\HelperString;
use Illuminate\Database\Eloquent\Builder;
use Livewire\WithPagination;
use \Carbon\Carbon;
use Illuminate\Support\Facades\File as FacadesFile;
use setasign\Fpdi\Fpdi;
use Maatwebsite\Excel\Facades\Excel;

class PadController extends Controller
{
    use WithPagination;

    public function __construct(){
        $this->middleware('role:admin|admin-opd|monev');
    }

    public function index(Request $request)
    {

        $proker_programs = collect(DB::select("
            SELECT 
                proker_programs.id,
                programs.kode,
                programs.nama_program,
                opds.nama_perangkat_daerah,
                SUM(rkgs.pagu) AS total_pagu,
                SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END) AS total_pagu_berjalan,
                SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100) AS total_realisasi,
                SUM(rks.realisasi) AS realisasi_keuangan,
                SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END) AS total_nilai_kontrak,
                SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END) AS total_pagu_tanpa_realisasi
            FROM proker_programs
            LEFT JOIN prokers ON prokers.id = proker_programs.proker_id AND prokers.deleted_at IS NULL
            LEFT JOIN opds ON opds.id = prokers.opd_id AND opds.deleted_at IS NULL
            LEFT JOIN programs ON programs.id = proker_programs.program_id AND proker_programs.deleted_at IS NULL
            LEFT JOIN proker_kegiatans AS pks ON pks.proker_program_id = proker_programs.id AND pks.deleted_at IS NULL
            LEFT JOIN proker_sub_kegiatans AS psks ON psks.proker_kegiatan_id = pks.id AND psks.deleted_at IS NULL
            LEFT JOIN rincian_kegiatans AS rkgs ON rkgs.proker_sub_kegiatan_id = psks.id AND rkgs.deleted_at IS NULL
            LEFT JOIN (
                SELECT rrks.rincian_kegiatan_id, SUM(rfs.realisasi) AS realisasi
                FROM realisasi_rincian_kegiatans AS rrks
                INNER JOIN realisasi_fisiks AS rfs ON rfs.realisasi_rincian_kegiatan_id = rrks.id
                WHERE rrks.deleted_at IS NULL AND rfs.deleted_at IS NULL
                GROUP BY rrks.rincian_kegiatan_id
            ) AS rfs ON rfs.rincian_kegiatan_id = rkgs.id
            LEFT JOIN (
                SELECT rrks.rincian_kegiatan_id, SUM(rks.realisasi) AS realisasi
                FROM realisasi_rincian_kegiatans AS rrks
                INNER JOIN realisasi_keuangans AS rks ON rks.realisasi_rincian_kegiatan_id = rrks.id
                WHERE rrks.deleted_at IS NULL AND rks.deleted_at IS NULL
                GROUP BY rrks.rincian_kegiatan_id
            ) AS rks ON rks.rincian_kegiatan_id = rkgs.id
            LEFT JOIN (
                SELECT rincian_kegiatan_id, SUM(nilai_kontrak) AS total_nilai_kontrak
                FROM realisasi_rincian_kegiatans
                WHERE deleted_at IS NULL
                GROUP BY rincian_kegiatan_id
            ) AS rrks ON rrks.rincian_kegiatan_id = rkgs.id
            " . (
                (Auth::user()->hasRole('admin-opd') || Auth::user()->hasRole('admin-PPTK') || Auth::user()->hasRole('monev')) && Auth::user()->opd_id !== null
                ? " AND opds.id = " . Auth::user()->opd_id
                : ""
            ) . "
            GROUP BY proker_programs.id
        "));
        
        foreach ($proker_programs as &$proker_program) {
            $proker_kegiatans = collect(DB::select("
                SELECT 
                    pks.id,
                    kegiatans.nama_kegiatan AS nama,
                    SUM(rfs.realisasi) AS total_realisasi_fisik_sub_kegiatans,
                    SUM(rks.realisasi) AS total_realisasi_keuangan_sub_kegiatans,
                    SUM(rkgs.pagu) AS total_pagu_sub_kegiatans,
                    SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END) AS total_pagu_berjalan_sub_kegiatans,
                    SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100) AS total_realisasi_sub_kegiatans,
                    SUM(rks.realisasi) AS realisasi_keuangan_sub_kegiatans,
                    SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END) AS total_nilai_kontrak_sub_kegiatans,
                    SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END) AS total_pagu_tanpa_realisasi_sub_kegiatans
                FROM proker_kegiatans AS pks
                LEFT JOIN kegiatans ON kegiatans.id = pks.kegiatan_id AND kegiatans.deleted_at IS NULL
                LEFT JOIN proker_sub_kegiatans ON proker_sub_kegiatans.proker_kegiatan_id = pks.id AND proker_sub_kegiatans.deleted_at IS NULL
                LEFT JOIN rincian_kegiatans AS rkgs ON rkgs.proker_sub_kegiatan_id = proker_sub_kegiatans.id AND rkgs.deleted_at IS NULL
                LEFT JOIN (
                    SELECT rrks.rincian_kegiatan_id, SUM(rfs.realisasi) AS realisasi
                    FROM realisasi_rincian_kegiatans AS rrks
                    INNER JOIN realisasi_fisiks AS rfs ON rfs.realisasi_rincian_kegiatan_id = rrks.id
                    WHERE rrks.deleted_at IS NULL AND rfs.deleted_at IS NULL
                    GROUP BY rrks.rincian_kegiatan_id
                ) AS rfs ON rfs.rincian_kegiatan_id = rkgs.id
                LEFT JOIN (
                    SELECT rrks.rincian_kegiatan_id, SUM(rks.realisasi) AS realisasi
                    FROM realisasi_rincian_kegiatans AS rrks
                    INNER JOIN realisasi_keuangans AS rks ON rks.realisasi_rincian_kegiatan_id = rrks.id
                    WHERE rrks.deleted_at IS NULL AND rks.deleted_at IS NULL
                    GROUP BY rrks.rincian_kegiatan_id
                ) AS rks ON rks.rincian_kegiatan_id = rkgs.id
                LEFT JOIN (
                    SELECT rincian_kegiatan_id, SUM(nilai_kontrak) AS total_nilai_kontrak
                    FROM realisasi_rincian_kegiatans
                    WHERE deleted_at IS NULL
                    GROUP BY rincian_kegiatan_id
                ) AS rrks ON rrks.rincian_kegiatan_id = rkgs.id
                WHERE pks.proker_program_id = ?
                GROUP BY pks.id
            ", [$proker_program->id]));

            foreach ($proker_kegiatans as &$proker_kegiatan) {
                $proker_sub_kegiatans = collect(DB::select("
                    SELECT 
                        psks.id,
                        sub_kegiatans.nama_sub_kegiatan AS nama,
                        SUM(rfs.realisasi) AS total_realisasi_fisik_sub_kegiatans,
                        SUM(rks.realisasi) AS total_realisasi_keuangan_sub_kegiatans,
                        SUM(rkgs.pagu) AS total_pagu_sub_kegiatans,
                        SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END) AS total_pagu_berjalan_sub_kegiatans,
                        SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100) AS total_realisasi_sub_kegiatans,
                        SUM(rks.realisasi) AS realisasi_keuangan_sub_kegiatans,
                        SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END) AS total_nilai_kontrak_sub_kegiatans,
                        SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END) AS total_pagu_tanpa_realisasi_sub_kegiatans
                    FROM proker_sub_kegiatans AS psks
                    LEFT JOIN sub_kegiatans ON sub_kegiatans.id = psks.sub_kegiatan_id AND sub_kegiatans.deleted_at IS NULL
                    LEFT JOIN rincian_kegiatans AS rkgs ON rkgs.proker_sub_kegiatan_id = psks.id AND rkgs.deleted_at IS NULL
                    LEFT JOIN (
                        SELECT rrks.rincian_kegiatan_id, SUM(rfs.realisasi) AS realisasi
                        FROM realisasi_rincian_kegiatans AS rrks
                        INNER JOIN realisasi_fisiks AS rfs ON rfs.realisasi_rincian_kegiatan_id = rrks.id
                        WHERE rrks.deleted_at IS NULL AND rfs.deleted_at IS NULL
                        GROUP BY rrks.rincian_kegiatan_id
                    ) AS rfs ON rfs.rincian_kegiatan_id = rkgs.id
                    LEFT JOIN (
                        SELECT rrks.rincian_kegiatan_id, SUM(rks.realisasi) AS realisasi
                        FROM realisasi_rincian_kegiatans AS rrks
                        INNER JOIN realisasi_keuangans AS rks ON rks.realisasi_rincian_kegiatan_id = rrks.id
                        WHERE rrks.deleted_at IS NULL AND rks.deleted_at IS NULL
                        GROUP BY rrks.rincian_kegiatan_id
                    ) AS rks ON rks.rincian_kegiatan_id = rkgs.id
                    LEFT JOIN (
                        SELECT rincian_kegiatan_id, SUM(nilai_kontrak) AS total_nilai_kontrak
                        FROM realisasi_rincian_kegiatans
                        WHERE deleted_at IS NULL
                        GROUP BY rincian_kegiatan_id
                    ) AS rrks ON rrks.rincian_kegiatan_id = rkgs.id
                    WHERE psks.proker_kegiatan_id = ?
                    GROUP BY psks.id
                ", [$proker_kegiatan->id]));

                foreach ($proker_sub_kegiatans as &$proker_sub_kegiatan) {
                    $rincian_kegiatans = collect(DB::select("
                        SELECT 
                            rkgs.id,
                            rkgs.uraian AS nama,
                            rkgs.pagu
                        FROM rincian_kegiatans AS rkgs
                        WHERE rkgs.proker_sub_kegiatan_id = ?
                        AND rkgs.deleted_at IS NULL
                    ", [$proker_sub_kegiatan->id]));

                    $proker_sub_kegiatan->rincian_kegiatans_collection = $rincian_kegiatans;
                }

                $proker_kegiatan->proker_sub_kegiatans_collection = $proker_sub_kegiatans;
            }
            $proker_program->proker_kegiatans = $proker_kegiatans;
        }

        return view("resume.pad", compact('proker_programs'));
    }

    // public function index(Request $request)
    // {
    //     $proker_programs = collect(DB::select("
    //         SELECT 
    //             proker_programs.id,
    //             programs.kode,
    //             programs.nama_program,
    //             opds.nama_perangkat_daerah,
    //             SUM(rkgs.pagu) AS total_pagu,
    //             SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END) AS total_pagu_berjalan,
    //             SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100) AS total_realisasi,
    //             SUM(rks.realisasi) AS realisasi_keuangan,
    //             SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END) AS total_nilai_kontrak,
    //             SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END) AS total_pagu_tanpa_realisasi,
    //             -- Subquery untuk data sub-kegiatan dan rincian kegiatan
    //             JSON_ARRAYAGG(
    //                 JSON_OBJECT(
    //                     'id', pks.id,
    //                     'nama', kegiatans.nama_kegiatan,
    //                     'total_realisasi_fisik_sub_kegiatans', SUM(rfs.realisasi),
    //                     'total_realisasi_keuangan_sub_kegiatans', SUM(rks.realisasi),
    //                     'total_pagu_sub_kegiatans', SUM(rkgs.pagu),
    //                     'total_pagu_berjalan_sub_kegiatans', SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END),
    //                     'total_realisasi_sub_kegiatans', SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100),
    //                     'total_nilai_kontrak_sub_kegiatans', SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END),
    //                     'total_pagu_tanpa_realisasi_sub_kegiatans', SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END),
    //                     'sub_kegiatans', JSON_ARRAYAGG(
    //                         JSON_OBJECT(
    //                             'id', psks.id,
    //                             'nama', sub_kegiatans.nama_sub_kegiatan,
    //                             'total_realisasi_fisik_sub_kegiatans', SUM(rfs.realisasi),
    //                             'total_realisasi_keuangan_sub_kegiatans', SUM(rks.realisasi),
    //                             'total_pagu_sub_kegiatans', SUM(rkgs.pagu),
    //                             'total_pagu_berjalan_sub_kegiatans', SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rkgs.pagu ELSE 0 END),
    //                             'total_realisasi_sub_kegiatans', SUM(rkgs.pagu * (rfs.realisasi / rkgs.volume) * 100),
    //                             'total_nilai_kontrak_sub_kegiatans', SUM(CASE WHEN rfs.realisasi > 0 OR rks.realisasi > 0 THEN rrks.total_nilai_kontrak ELSE 0 END),
    //                             'total_pagu_tanpa_realisasi_sub_kegiatans', SUM(CASE WHEN rfs.realisasi IS NULL AND rks.realisasi IS NULL THEN rkgs.pagu ELSE 0 END),
    //                             'rincian_kegiatans', JSON_ARRAYAGG(
    //                                 JSON_OBJECT(
    //                                     'id', rkgs.id,
    //                                     'nama', rkgs.uraian,
    //                                     'pagu', rkgs.pagu
    //                                 )
    //                             )
    //                         )
    //                     )
    //                 )
    //             ) AS kegiatan_data
    //         FROM proker_programs
    //         LEFT JOIN prokers ON prokers.id = proker_programs.proker_id AND prokers.deleted_at IS NULL
    //         LEFT JOIN opds ON opds.id = prokers.opd_id AND opds.deleted_at IS NULL
    //         LEFT JOIN programs ON programs.id = proker_programs.program_id AND proker_programs.deleted_at IS NULL
    //         LEFT JOIN proker_kegiatans AS pks ON pks.proker_program_id = proker_programs.id AND pks.deleted_at IS NULL
    //         LEFT JOIN kegiatans ON kegiatans.id = pks.kegiatan_id AND kegiatans.deleted_at IS NULL
    //         LEFT JOIN proker_sub_kegiatans AS psks ON psks.proker_kegiatan_id = pks.id AND psks.deleted_at IS NULL
    //         LEFT JOIN sub_kegiatans ON sub_kegiatans.id = psks.sub_kegiatan_id AND sub_kegiatans.deleted_at IS NULL
    //         LEFT JOIN rincian_kegiatans AS rkgs ON rkgs.proker_sub_kegiatan_id = psks.id AND rkgs.deleted_at IS NULL
    //         LEFT JOIN (
    //             SELECT rrks.rincian_kegiatan_id, SUM(rfs.realisasi) AS realisasi
    //             FROM realisasi_rincian_kegiatans AS rrks
    //             INNER JOIN realisasi_fisiks AS rfs ON rfs.realisasi_rincian_kegiatan_id = rrks.id
    //             WHERE rrks.deleted_at IS NULL AND rfs.deleted_at IS NULL
    //             GROUP BY rrks.rincian_kegiatan_id
    //         ) AS rfs ON rfs.rincian_kegiatan_id = rkgs.id
    //         LEFT JOIN (
    //             SELECT rrks.rincian_kegiatan_id, SUM(rks.realisasi) AS realisasi
    //             FROM realisasi_rincian_kegiatans AS rrks
    //             INNER JOIN realisasi_keuangans AS rks ON rks.realisasi_rincian_kegiatan_id = rrks.id
    //             WHERE rrks.deleted_at IS NULL AND rks.deleted_at IS NULL
    //             GROUP BY rrks.rincian_kegiatan_id
    //         ) AS rks ON rks.rincian_kegiatan_id = rkgs.id
    //         LEFT JOIN (
    //             SELECT rincian_kegiatan_id, SUM(nilai_kontrak) AS total_nilai_kontrak
    //             FROM realisasi_rincian_kegiatans
    //             WHERE deleted_at IS NULL
    //             GROUP BY rincian_kegiatan_id
    //         ) AS rrks ON rrks.rincian_kegiatan_id = rkgs.id
    //         WHERE proker_programs.deleted_at IS NULL
    //         " . (
    //             (Auth::user()->hasRole('admin-opd') || Auth::user()->hasRole('admin-PPTK') || Auth::user()->hasRole('monev')) && Auth::user()->opd_id !== null
    //             ? " AND opds.id = " . Auth::user()->opd_id
    //             : ""
    //         ) . "
    //         GROUP BY proker_programs.id
    //     "));
    
    //     // Mengembalikan data dalam bentuk yang lebih mudah digunakan di view
    //     return view("resume.pad", compact('proker_programs'));
    // }
    

    

}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]