<?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]