MIF_E31211386/app/Http/Controllers/RiwayatAnalisaController.php

245 lines
8.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Alternatif;
use App\Models\Analisa;
use App\Models\GameplayType;
use App\Models\RiwayatAnalisa;
use Dompdf\Dompdf;
use Dompdf\Options;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\DataTables;
class RiwayatAnalisaController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
$riwayat = Analisa::where('id_users', Auth::id())->where('status', '1')->with('gameplay')->get();
if ($request->ajax()) {
$rowData = [];
foreach ($riwayat as $row) {
$gameplay = $row->gameplay;
$rowData[] = [
'DT_RowIndex' => $row->id_analisa,
'id_analisa' => $row->id_analisa,
'gameplay' => $row->gameplay->nama
];
}
return DataTables::of($rowData)->toJson();
}
return view('pages.riwayat.index');
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Request $request, string $id)
{
$analisa = Analisa::where('id_analisa', $id)->first();
if (!$analisa) {
return back()->withErrors(['error' => 'Riwayat Hasil analisa tidak ditemukan.']);
}
$gameplay = GameplayType::where('id_gameplay', $analisa->id_gameplay)->first();
$laning = $request->get('laning');
$cekAlternatif = Alternatif::where('id_users', Auth::id())->where('laning', $laning)->get();
$riwayat = RiwayatAnalisa::with(['alternatif', 'analisa'])
->where('id_analisa', $analisa->id_analisa)
->get();
if ($request->ajax()) {
$rowData = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatif->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowData[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
return DataTables::of($rowData)->toJson();
}
return view('pages.riwayat.show', ['gameplay' => $gameplay]);
}
/**
* 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)
{
//
}
public function export()
{
$data = Analisa::where('id_users', Auth::id())->where('status', '0')->with('riwayat_analisa.alternatif')->first();
if (!$data) {
return back()->withErrors(['error' => 'Data analisa tidak ditemukan. Silahkan coba kembali.']);
}
$gameplay = GameplayType::where('id_gameplay', $data->id_gameplay)->first();
$cekAlternatifGoldLane = Alternatif::where('id_users', Auth::id())->where('laning', 'Gold Lane')->get();
$cekAlternatifMidLane = Alternatif::where('id_users', Auth::id())->where('laning', 'Mid Lane')->get();
$cekAlternatifEXPLane = Alternatif::where('id_users', Auth::id())->where('laning', 'EXP Lane')->get();
$cekAlternatifRoam = Alternatif::where('id_users', Auth::id())->where('laning', 'Roam')->get();
$cekAlternatifJungle = Alternatif::where('id_users', Auth::id())->where('laning', 'Jungle')->get();
$riwayat = RiwayatAnalisa::with(['alternatif', 'analisa'])
->where('id_analisa', $data->id_analisa)
->get();
$rowDataGoldLane = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatifGoldLane->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowDataGoldLane[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
$rowDataMidLane = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatifMidLane->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowDataMidLane[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
$rowDataEXPLane = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatifEXPLane->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowDataEXPLane[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
$rowDataRoam = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatifRoam->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowDataRoam[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
$rowDataJungle = [];
foreach ($riwayat as $row) {
$alternatif = $cekAlternatifJungle->where('id_alternatif', $row->id_alternatif)->first();
if ($alternatif) {
$rowDataJungle[] = [
'DT_RowIndex' => $row->id_alternatif,
'id_alternatif' => $row->id_alternatif,
'foto' => $alternatif->foto,
'nama' => $alternatif->nama,
'role' => $alternatif->role,
'laning' => $alternatif->laning,
'nilai' => $row->nilai,
'rangking' => $row->rangking,
];
}
}
$data->status = '1';
if ($data->save()) {
$html = view('pages.export.hasil', ['rowDataGoldLane' => $rowDataGoldLane, 'rowDataMidLane' => $rowDataMidLane, 'rowDataEXPLane' => $rowDataEXPLane, 'rowDataRoam' => $rowDataRoam, 'rowDataJungle' => $rowDataJungle, 'gameplay' => $gameplay])->render();
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$dompdf->stream('Hasil_Analisa_Metode_Electre_Strategi_' . $gameplay->nama . '.pdf');
} else {
return back()->withErrors(['error' => 'Gagal memperbarui status analisa.']);
}
}
}