Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/reswara.samarinda.app/app/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/www/reswara.samarinda.app/app/Http/Controllers/TargetCapaianController.php

<?php

namespace App\Http\Controllers;

use App\Helpers\ReswaraApi;
use App\Helpers\WaHelpers;
use App\Models\Jadwal;
use App\Models\JadwalHarian;
use App\Models\KegiatanHarian;
use App\Models\ReviewCapaian;
use App\Models\Siswa;
// use Dompdf\Dompdf;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

use function PHPUnit\Framework\isEmpty;

class TargetCapaianController extends Controller
{
    /**
     * Display a listing of the resource.
     */

    /**
     * Display the specified resource.
     */

    public $breadcrumbs;
    public $menu = "capaian";

    public function index()
    {
        if(Auth()->user()->can('view siswa '.$this->menu)){   
            $siswa = Siswa::where('user_id', Auth::user()->id)->first();
            return redirect('target_capaian/'.$siswa->id.'?tahun='.date("Y").(isset($_GET['type']) ? '&type='.$_GET['type'] : '' ).(isset($_GET['page']) ? '&page='.$_GET['page'] : '' ));
        }

        if(!Auth()->user()->can('view '.$this->menu)){            
            $siswa = Siswa::where('user_id', Auth::user()->id)->first();
            if($siswa) {
                return redirect('target_capaian/'.$siswa->id.'?tahun='.date("Y").(isset($_GET['type']) ? '&type='.$_GET['type'] : '' ).(isset($_GET['page']) ? '&page='.$_GET['page'] : '' ));
            } else {
                return back()->with('error', 'Anda Tidak Memiliki Hak Akses Untuk Membuka Halaman Ini');
            }
        }
        $breadcrumbs = $this->breadcrumbs;
        
        $title = "Capaian";
        $url = "target_capaian";
        $menu = $this->menu;
        
        // $datas = ApiTools::all();
        $datas = Siswa::get();

        // dd("TEST");
        // dd($datas);
        // return view('pages.barang_tukar.index', compact('title', 'url', 'menu', 'datas', 'breadcrumbs'));
        return view('pages.target_capaian.index', compact('title', 'url', 'menu', 'datas', 'breadcrumbs'));
    }


    public function show(string $id, Request $request)
    {
        $siswa = Siswa::where('id', $id)->first();
        if($siswa) {
            if($siswa->status != 'aktif') {
                return redirect('')->with('error', 'Halaman ini tidak dapat diakses karena data anda masih belum dikonfirmasi!.');
            }
        } else {
            return redirect('')->with('error', 'Halaman ini tidak tersedia.');
        }

        // dd($data['cat']);



        $data['tahun'] = Jadwal::selectRaw('YEAR(start) as year')
        ->groupBy('year')
        ->orderBy('year', 'desc')
        ->get();

        if($request->get('tahun')) {
            $tahun = $request->get('tahun');
        } else {
            $tahun = date('Y');
        }

        $data['tahun_get'] = $tahun;


        // if (Auth::user()->hasRole('Admin')) {
        //     dd("ASD");
        // } else if(Auth::user()->hasRole('Siswa')) {
        //     dd("QWE");
        // }

                    // $data['target_tercapai'] = Jadwal::where('target', 1)->whereYear('start', $tahun)->count();
            // $data['target_belum_tercapai'] = Jadwal::where('target', 0)->whereYear('start', $tahun)->count();

            // $data['keseluruhan_target_tercapai'] = Jadwal::selectRaw('DATE_FORMAT(start, "%m") as month, COUNT(*) as count')
            // ->where('target', 1)
            // ->whereYear('start', $tahun)
            // ->groupBy('month')
            // ->orderBy('month', 'asc')
            // ->get();

            // // dd($data['keseluruhan_target_tercapai']);


            // $data['keseluruhan_belum_target_tercapai'] = Jadwal::selectRaw('DATE_FORMAT(start, "%m") as month, COUNT(*) as count')
            // ->where('target', 0)
            // ->whereYear('start', $tahun)
            // ->groupBy('month')
            // ->orderBy('month', 'asc')
            // ->get();

            // $data['keseluruhan_bulan'] = Jadwal::selectRaw('DATE_FORMAT(start, "%m-%M") as month, COUNT(*) as count')
            // ->whereYear('start', $tahun)
            // ->groupBy('month')
            // ->orderBy('month', 'asc')
            // ->get();


            // // dd($data['keseluruhan_bulan']);

            // if($request->get('kalender')) {
            //     if($request->get('kalender') == "kalender") {
            //         $tampil = Jadwal::orderBy('id', 'DESC')->get();

            //         $dataArr = array();
            //         foreach($tampil as $a) {
            //             $dataArr[] = array(
            //                 'id' => $a->id,
            //                 'title' => $a->kegiatan,
            //                 'start' => $a->start,
            //                 'end' => $a->ends,
            //             );
            //         }

            //         return json_encode($dataArr);
            //     } else {
            //         $tampil = Jadwal::with(['user', 'user.siswa'])->where('id', $request->get('kalender'))->orderBy('id', 'DESC')->first();

            //         return response()->json([
            //             'data' => $tampil
            //         ]);
            //     }
            // }

        $data['type_user'] = "";
        $data['type_user'] = "admin";
        $data['siswa'] = Siswa::where('status','aktif')->get();
        if (Auth::user()->hasRole('Admin')) {
            $data['type_user'] = "admin";
            // $data['siswa'] = Siswa::where('status','aktif')->get();
        } else if (Auth::user()->hasRole('Petugas')) {
            $data['type_user'] = "admin";
            // $data['siswa'] = Siswa::where('status','aktif')->get();
        } else {
            $data['type_user'] = "siswa";
            // $data['siswa'] = Siswa::where('id', $id)->first();
        }

        // $data['type_user'] = "siswa";
        $data['siswa'] = Siswa::where('id', $id)->first();

        $data['target_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')->where('user_id', $data['siswa']->user_id);

        $data['target_belum_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')->where('user_id', $data['siswa']->user_id);

        $data['keseluruhan_target_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')->selectRaw('DATE_FORMAT(target_capaians.tanggal, "%m") as month, COUNT(*) as count')->where('user_id', $data['siswa']->user_id);

        // dd($data['keseluruhan_target_tercapai']);


        // $data['keseluruhan_belum_target_tercapai'] = Jadwal::selectRaw('DATE_FORMAT(start, "%m") as month, COUNT(*) as count')
        // ->where('user_id', Auth::user()->id)
        // ->where('target', 0)
        // ->whereYear('start', $tahun)
        // ->groupBy('month')
        // ->orderBy('month', 'asc')
        // ->get();

        $data['keseluruhan_belum_target_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')->selectRaw('DATE_FORMAT(target_capaians.tanggal, "%m") as month, COUNT(*) as count')->where('user_id', $data['siswa']->user_id);

        $data['keseluruhan_bulan'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')->selectRaw('DATE_FORMAT(target_capaians.tanggal, "%m-%M") as month, COUNT(*) as count')->where('user_id', $data['siswa']->user_id);

        // if(Auth::user()->hasRole('Siswa')) {
        //     $data['target_tercapai'] = $data['target_tercapai']->where('jadwals.user_id', Auth::user()->id);
        //     $data['target_belum_tercapai'] = $data['target_belum_tercapai']->where('jadwals.user_id', Auth::user()->id);

        //     $data['keseluruhan_target_tercapai'] = $data['keseluruhan_target_tercapai']->where('jadwals.user_id', Auth::user()->id);
        //     $data['keseluruhan_belum_target_tercapai'] = $data['keseluruhan_belum_target_tercapai']->where('jadwals.user_id', Auth::user()->id);
        //     $data['keseluruhan_bulan'] = $data['keseluruhan_bulan']->where('jadwals.user_id', Auth::user()->id);
        // }

        // if(Auth::user()->hasRole('Petugas')) {
        //     $data['target_tercapai'] = $data['target_tercapai']->where('jadwals.petugas_id', Auth::user()->id);
        //     $data['target_belum_tercapai'] = $data['target_belum_tercapai']->where('jadwals.petugas_id', Auth::user()->id);

        //     $data['keseluruhan_target_tercapai'] = $data['keseluruhan_target_tercapai']->where('jadwals.petugas_id', Auth::user()->id);
        //     $data['keseluruhan_belum_target_tercapai'] = $data['keseluruhan_belum_target_tercapai']->where('jadwals.petugas_id', Auth::user()->id);
        //     $data['keseluruhan_bulan'] = $data['keseluruhan_bulan']->where('jadwals.petugas_id', Auth::user()->id);
        // }

        $data['target_tercapai'] = $data['target_tercapai']->where('target_capaians.capaian', 1)
                                                            ->whereYear('target_capaians.tanggal', $tahun)
                                                            ->count();
        $data['target_belum_tercapai'] = $data['target_belum_tercapai']->where('target_capaians.capaian', 0)
                                                                        ->whereYear('target_capaians.tanggal', $tahun)
                                                                        ->count();

        $data['keseluruhan_target_tercapai'] = $data['keseluruhan_target_tercapai']->where('target_capaians.capaian', 1)
                                                                                    ->whereYear('target_capaians.tanggal', $tahun)
                                                                                    ->groupBy('month')
                                                                                    ->orderBy('month', 'asc')
                                                                                    ->get();

        $data['keseluruhan_belum_target_tercapai'] = $data['keseluruhan_belum_target_tercapai']->where('target_capaians.capaian', 0)
                                                                                                ->whereYear('target_capaians.tanggal', $tahun)
                                                                                                ->groupBy('month')
                                                                                                ->orderBy('month', 'asc')
                                                                                                ->get();
        $data['keseluruhan_bulan'] = $data['keseluruhan_bulan']->whereYear('target_capaians.tanggal', $tahun)
                                                                ->groupBy('month')
                                                                ->orderBy('month', 'asc')
                                                                ->get();


        // dd($data['keseluruhan_bulan']);

        if($request->get('kalender')) {
            if($request->get('kalender') == "kalender") {
                if (Auth::user()->hasRole('Admin')) {
                    $tampil = Jadwal::orderBy('id', 'DESC')->get();
                } else if(Auth::user()->hasRole('Siswa')) {
                    $tampil = Jadwal::where('user_id', Auth::user()->id)->orderBy('id', 'DESC')->get();
                } else if(Auth::user()->hasRole('Petugas')) {
                    $tampil = Jadwal::where('petugas_id', Auth::user()->id)->orderBy('id', 'DESC')->get();
                }

                $dataArr = array();
                foreach($tampil as $a) {
                    $dataArr[] = array(
                        'id' => $a->id,
                        'title' => $a->kegiatan,
                        'start' => $a->start,
                        'end' => $a->ends,
                    );
                }

                return json_encode($dataArr);
            } else {
                if (Auth::user()->hasRole('Admin')) {
                    $tampil = Jadwal::with(['user', 'user.siswa',  'target_capaian'])->where('id', $request->get('kalender'))->orderBy('id', 'DESC')->first();
                } else if(Auth::user()->hasRole('Siswa')) {
                    $tampil = Jadwal::with(['user', 'user.siswa', 'target_capaian'])->where('user_id', Auth::user()->id)->where('id', $request->get('kalender'))->orderBy('id', 'DESC')->first();
                } else if(Auth::user()->hasRole('Petugas')) {
                    $tampil = Jadwal::with(['user', 'user.siswa', 'target_capaian'])->where('petugas_id', Auth::user()->id)->where('id', $request->get('kalender'))->orderBy('id', 'DESC')->first();
                }

                return response()->json([
                    'data' => $tampil
                ]);
            }
        }

        // $APi = ReswaraApi::DaftarReswaraTop("[email protected]", "Afrizan Maulana Rymantono", "$2y$12$9HAcbcspg.QyVo1OqDQsu.LfuK.W3dpNLoQoqbIcvu.wwCgVv56g.");
        // dd($APi);

        // dd($siswa->user->email);
        // dd("TEST");
        $data['cat'] = ReswaraApi::checkUjian($siswa->user->email);

        if(isset($data['cat']['error'])) {
            $CATStatistika = [];
            $CATChart = [];
            $data['CATChart'] = [];
            $data['TotalChart'] = [];
        } else {
            $CATStatistika = [];
            foreach ($data['cat'] as $key => $value) {
                $CATStatistika[]['mulai'] = $value['mulai'];
                $CATStatistika[$key]['selesai'] = $value['selesai'];
                
                $CATStatistika[$key]['twk_tercapai'] = (int)$value['twk'] >= 110 ? 1 : 0;
                $CATStatistika[$key]['tiu_tercapai'] = (int)$value['tiu'] >= 110 ? 1 : 0;
                $CATStatistika[$key]['tkp_tercapai'] = (int)$value['tkp'] >= 210 ? 1 : 0;
    
                $CATStatistika[$key]['twk_tidak_tercapai'] = (int)$value['twk'] < 110 ? 1 : 0;
                $CATStatistika[$key]['tiu_tidak_tercapai'] = (int)$value['tiu'] < 110 ? 1 : 0;
                $CATStatistika[$key]['tkp_tidak_tercapai'] = (int)$value['tkp'] < 210 ? 1 : 0;
            }
    
            usort($CATStatistika, function ($a, $b) {
                return strtotime($a["mulai"]) - strtotime($b["mulai"]);
            });
    
            // dd($CATStatistika);
    
            $CATChart = [];
            $monthCheck = "00";
            $listCAT = -1;
            foreach ($CATStatistika as $key => $value) {
                if($tahun == date('Y', strtotime($value['mulai']))) {
                    if($monthCheck != date('m', strtotime($value['mulai']))) {
                        $listCAT += 1;
                        $CATChart[]['bulan'] = date('F', strtotime($value['mulai']));
                        // dd($value['twk']);
                        $CATChart[$listCAT]['twk_tercapai'] = 0;
                        $CATChart[$listCAT]['tiu_tercapai'] = 0;
                        $CATChart[$listCAT]['tkp_tercapai'] = 0;
                        $CATChart[$listCAT]['twk_tidak_tercapai'] = 0;
                        $CATChart[$listCAT]['tiu_tidak_tercapai'] = 0;
                        $CATChart[$listCAT]['tkp_tidak_tercapai'] = 0;
        
                        $CATChart[$listCAT]['twk_tercapai'] += $value['twk_tercapai'];
                        $CATChart[$listCAT]['tiu_tercapai'] += $value['tiu_tercapai'];
                        $CATChart[$listCAT]['tkp_tercapai'] += $value['tkp_tercapai'];
                        $CATChart[$listCAT]['twk_tidak_tercapai'] += $value['twk_tidak_tercapai'];
                        $CATChart[$listCAT]['tiu_tidak_tercapai'] += $value['tiu_tidak_tercapai'];
                        $CATChart[$listCAT]['tkp_tidak_tercapai'] += $value['tkp_tidak_tercapai'];
        
                        $monthCheck = date('m', strtotime($value['mulai']));
                    } else {
                        $CATChart[$listCAT]['twk_tercapai'] += $value['twk_tercapai'];
                        $CATChart[$listCAT]['tiu_tercapai'] += $value['tiu_tercapai'];
                        $CATChart[$listCAT]['tkp_tercapai'] += $value['tkp_tercapai'];
                        $CATChart[$listCAT]['twk_tidak_tercapai'] += $value['twk_tidak_tercapai'];
                        $CATChart[$listCAT]['tiu_tidak_tercapai'] += $value['tiu_tidak_tercapai'];
                        $CATChart[$listCAT]['tkp_tidak_tercapai'] += $value['tkp_tidak_tercapai'];
                    }
                }
            }
    
            $data['TotalChart'] = [];
    
            foreach($CATChart as $a) {
                if($data['TotalChart'] == null) {
                    $data['TotalChart'][]['twk_tercapai'] = 0;
                    $data['TotalChart'][0]['tiu_tercapai'] = 0;
                    $data['TotalChart'][0]['tkp_tercapai'] = 0;
                    $data['TotalChart'][0]['twk_tidak_tercapai'] = 0;
                    $data['TotalChart'][0]['tiu_tidak_tercapai'] = 0;
                    $data['TotalChart'][0]['tkp_tidak_tercapai'] = 0;
                } 
    
                $data['TotalChart'][0]['twk_tercapai'] += $a['twk_tercapai'];
                $data['TotalChart'][0]['tiu_tercapai'] += $a['tiu_tercapai'];
                $data['TotalChart'][0]['tkp_tercapai'] += $a['tkp_tercapai'];
                $data['TotalChart'][0]['twk_tidak_tercapai'] += $a['twk_tidak_tercapai'];
                $data['TotalChart'][0]['tiu_tidak_tercapai'] += $a['tiu_tidak_tercapai'];
                $data['TotalChart'][0]['tkp_tidak_tercapai'] += $a['tkp_tidak_tercapai'];
            }
    
            $data['CATChart'] = $CATChart;
        }



        if(!isset($_GET['type']) || $_GET['type'] == "cat") {
            $data['cat'] = ReswaraApi::checkUjian($siswa->user->email);
        } else if(isset($_GET['type']) && $_GET['type'] == "kegiatan") {
            $data['jadwal'] = Jadwal::whereYear('start', $tahun)->where('user_id', $siswa->user_id)->get();


            $data['menu'] = "jadwal kegiatan";
            // $siswa = Siswa::where('user_id', Auth::user()->id)->first();
            if($siswa->status != 'aktif') {
                return redirect()->back()->with('error', 'Halaman ini tidak dapat diakses karena data anda masih belum dikonfirmasi!.');
            }

            $data['hari'] = JadwalHarian::where('user_id', $siswa->user_id)->get();
            if(isset($_GET['hari'])) {
                $day = $_GET['hari'];

            } else {
                $day = date('N');
            }

            $data['day'] = $day;
            $hariPilihan = JadwalHarian::where('user_id', $siswa->user->id)->where('hari_ke', $day)->first();
            $data['jadwal'] = KegiatanHarian::where('jadwal_harian_id', $hariPilihan->id)->get();
        } else if(isset($_GET['type']) && $_GET['type'] == "detail_kegiatan") {
            $data['jadwal'] = Jadwal::with(['target_capaian', 'petugas'])->whereYear('start', $tahun)->where('user_id', $siswa->user_id)->where('id', $_GET['kegiatan_id'])->first();

            return response()->json([
                'status' => "berhasil",
                'data' => $data['jadwal'],
            ]);
        } else if(isset($_GET['type']) && $_GET['type'] == "cetak") {
            $data['cat'] = ReswaraApi::checkUjian($siswa->user->email);
            $data['jadwal'] = Jadwal::with('target_capaian')->whereYear('start', $tahun)->where('user_id', $siswa->user_id)->get();

            // return view('pages.target_capaian.cetak', $data);
            $pdf = PDF::loadview('pages.target_capaian.cetak', $data);
            $pdf->set_paper('A4', 'landscape');
            return $pdf->download('Rekap_Kegiatan_Siswa_'.$siswa->nama_siswa.'_tahun_'.$data['tahun_get'].'.pdf');

            // return view('pages.target_capaian.cetak', $data);

        }


        // dd($data['TotalChart']);


        // // Set tahun yang ingin difilter
        // $targetTahun = "2025"; // Misalnya mau ambil data dari tahun 2025

        // // Filter data berdasarkan tahun
        // $filteredData = array_filter($data['cat'], function ($item) use ($targetTahun) {
        //     return date("Y", strtotime($item["mulai"])) === $targetTahun;
        // });

        // // Urutkan berdasarkan bulan
        // usort($filteredData, function ($a, $b) {
        //     return strtotime($a["mulai"]) - strtotime($b["mulai"]);
        // });

        $data['review'] = ReviewCapaian::where('siswa_id', $siswa->id)->get();
        $data['menu'] = 'review';

        // dd($data);
        return view('pages.target_capaian.show', $data);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        // $pdf = Pdf::loadView();
        // dd();
        $siswa = Siswa::find($request->nomor_orang_tua);
        $data['siswa'] = $siswa;
        $data['jadwal'] = Jadwal::where('user_id', $siswa->user_id)->whereDate('start', '>=', $request->tanggal_awal)
        ->whereDate('start', '<=', $request->tanggal_akhir)->orderBy('target', 'ASC')->get();

        $data['target_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')
                                            ->where('jadwals.user_id', $siswa->user_id)
                                            ->where('target_capaians.capaian', 1)
                                            ->where('target_capaians.tanggal','>=',$request->tanggal_awal)
                                            ->where('target_capaians.tanggal','<=', $request->tanggal_akhir)
                                            ->count();

        $data['target_belum_tercapai'] = Jadwal::join('target_capaians', 'target_capaians.jadwal_id', '=', 'jadwals.id')
                                            ->where('jadwals.user_id', $siswa->user_id)
                                            ->where('target_capaians.capaian', 0)
                                            ->where('target_capaians.tanggal','>=',$request->tanggal_awal)
                                            ->where('target_capaians.tanggal','<=', $request->tanggal_akhir)
                                            ->count();

        // return view('pages.target_capaian.print', $data);
        $pdf = Pdf::loadview('pages.target_capaian.print',$data)->setPaper('a4', 'landscape');;
        // return $pdf->download($code.'-Invoice-Booking.pdf');
        // return view('Booking::frontend/invoice', $data);

        $pdf->render();
        $pdf->output();
        $content = $pdf->download()->getOriginalContent();

        file_put_contents(public_path().'/storage/invoice/'.$request->tanggal_awal.'-'.$request->tanggal_awal.'-'.$siswa->no_identitas.'-'.$siswa->nama_siswa.'-Laporan Target Capaian.pdf', $content);
        $pesan = "Seorang siswa bernama ".$siswa->nama_siswa." dengan nomor identitas ".$siswa->no_identitas." Berikut adalah capaiannya : \n Tercapai = ".$data['target_tercapai']." Kegiatan \n Belum Tercapai = ".$data['target_belum_tercapai']." Kegiatan";
        WaHelpers::sendWa($siswa->no_hp_orang_tua , $pesan);

        $urlUseFul = url('').'/storage/invoice/'.$request->tanggal_awal.'-'.$request->tanggal_awal.'-'.$siswa->no_identitas.'-'.$siswa->nama_siswa.'-Laporan Target Capaian.pdf';
        WaHelpers::sendFile($siswa->no_hp_orang_tua, $urlUseFul);
        return redirect()->back()->with('success', 'laporan telah dikirim ke Orang tua siswa!');
    }



    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, string $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        //
    }
}

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